Linux 的使用离不开用户,提到用户就离不开权限,『文件权限』简单得解释就是『其所有者设定此文件对所有用户是否具有使用权』,这里的使用权包括 读取、写入、执行。
初识权限
怎么查看一个文件的权限呢?使用 ls -al
命令即可快速查看
[root@localhost ~]# ls -al
total 504
dr-xr-x---. 4 root root 4096 Jun 21 04:15 .
drwxr-xr-x. 17 root root 4096 Jun 21 01:58 ..
-rw-------. 1 root root 842 Jun 21 01:17 anaconda-ks.cfg
-rw-------. 1 root root 550 Jun 21 01:57 .bash_history
-rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout
-rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile
-rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc
-rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc
drwxr-----. 3 root root 18 Jun 21 03:57 .pki
drwxr-xr-x. 2 root root 4096 Jun 21 04:15 package
-rwxr-xr-x. 1 root root 235243 Jun 21 03:14 install.log
-rwxr-xr-x. 1 root root 235243 Jun 21 03:14 install.log.syslog
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
[ 1 ][ 2 ][ 3 ][ 4 ][ 5 ][ 6 ][ 7 ]
[ 类型&权限 ][链接][拥有者][群组][文件大小][ 修改日期 ][ 文件名 ]
类型与权限
这一栏其实共有十个字符
dr-xr-x---.
第一个字符代表这个文件的种类『目录、文件或链接文件等等』
- 当为[ d ]则是目录,例如上表档名为『.pki』的那一行;
- 当为[ - ]则是文件,例如上表档名为『install.log』那一行;
- 若是[ l ]则表示为软链接『Link File』;
- 若是[ b ]则表示为装置文件里面的可供存储的接口设备(可随机存取装置);
- 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。
- 第一组为『文件拥有者的权限』,以『install.log』那个文件为例, 该文件的拥有者可以读写,但不可执行;
- 第二组为『同群组的权限』;
- 第三组为『其他非本群组的权限』。
注意:另外,目录与文件的权限意义并不相同!这是因为目录与文件所记录的数据内容不相同所致。
节点数量
第二栏表示有多少档名连结到此节点(i-node):
每个文件都会将他的权限与属性记录到文件系统的i-node中,不过,我们使用的目录树却是使用文件名来记录, 因此每个档名就会连结到一个i-node啰!这个属性记录的,就是有多少不同的档名连结到相同的一个i-node号码去就是了。 关于i-node的相关数据我们会在第八章谈到文件系统时再加强介绍的。
属主
第三栏表示这个文件(或目录)的『拥有者账号』
属组
第四栏表示这个文件的所属群组
在 Linux 系统下,你的账号会附属于一个或多个的群组中。举刚刚我们提到的例子,class1, class2, class3 均属于 projecta 这个群组,假设某个文件所属的群组为 projecta ,且该文件的权限如图2.1.2所示(-rwxrwx---), 则class1, class2, class3三人对于该文件都具有可读、可写、可执行的权限(看群组权限)。 但如果是不属于projecta的其他账号,对于此文件就不具有任何权限了。
大小
第五栏为这个文件的容量大小,默认单位为bytes
可以使用 -h
参数来将单位转化为容易识别的单位 kB MB GB
等。
修改日期
第六栏为这个文件的建档日期或者是最近的修改日期
这一栏的内容分别为日期(月/日)及时间。如果这个文件被修改的时间距离现在太久了,那么时间部分会仅显示年份而已。 如下所示:
[root@localhost ~]# ls -l install.log .tcshrc
-rwxr-xr-x. 1 root root 235243 Jun 21 03:14 install.log
-rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc
小贴士:如果想要显示完整的时间格式,可以利用ls的选项,即:『ls -l --full-time』就能够显示出完整的时间格式了!包括年、月、日、时间喔。 另外,如果你当初是以中文安装你的Linux系统,那么日期字段将会以中文来显示。
[root@localhost ~]# ls -al --full-time
total 504
dr-xr-x---. 4 root root 4096 2018-06-21 04:15:22.878854602 +0800 .
drwxr-xr-x. 17 root root 4096 2018-06-21 01:58:30.699999978 +0800 ..
-rw-------. 1 root root 842 2018-06-21 01:17:26.430993548 +0800 anaconda-ks.cfg
-rw-------. 1 root root 550 2018-06-21 01:57:40.309959729 +0800 .bash_history
-rw-r--r--. 1 root root 18 2013-12-29 10:26:31.000000000 +0800 .bash_logout
-rw-r--r--. 1 root root 176 2013-12-29 10:26:31.000000000 +0800 .bash_profile
-rw-r--r--. 1 root root 176 2013-12-29 10:26:31.000000000 +0800 .bashrc
-rw-r--r--. 1 root root 100 2013-12-29 10:26:31.000000000 +0800 .cshrc
drwxr-----. 3 root root 18 2018-06-21 03:57:00.298874120 +0800 .pki
-rw-r--r--. 1 root root 129 2013-12-29 10:26:31.000000000 +0800 .tcshrc
文件名
第七栏为这个文件的档名,这个字段就是文件名了。比较特殊的是:如果档名之前多一个『 . 』,则代表这个文件为『隐藏文件』
Tips:文件名并不是文件本身的属性,与之前的几个属性相比并不会被记录到 inode 文件中
文件权限的重要性
与Windows系统不一样的是,在Linux系统当中,每一个文件都多加了很多的属性进来,尤其是群组的概念,这样有什么用途呢? 其实,最大的用途是在『数据安全性』上面的。
- 系统保护的功能
举个简单的例子,在你的系统中,关于系统服务的文件通常只有root才能读写或者是执行,例如 /etc/shadow 这一个账号管理的文件,由于该文件记录了你系统中所有账号的数据, 因此是很重要的一个配置文件,当然不能让任何人读取(否则密码会被窃取啊),只有root才能够来读取啰!所以该文件的权限就会成为[ -rw------- ]。
- 团队开发软件或数据共享的功能
此外,如果你有一个软件开发团队,在你的团队中,你希望每个人都可以使用某一些目录下的文件, 而非你的团队的其他人则不予以开放呢?以上面的例子来说,testgroup 的团队共有三个人,分别是 test1, test2, test3 ,那么我就可以将团队所需的文件权限订为[ -rwxrwx--- ]来提供给 testgroup 的工作团队使用啰!
- 未将权限设定妥当的危害
再举个例子来说,如果你的目录权限没有作好的话,可能造成其他人都可以在你的系统上面随意操作! 例如本来只有 root 才能做的开关机、新增或删除用户等等的指令, 而且万一你的用户的密码被其他不明人士取得的话,只要他登入你的系统就可以轻而易举的执行一些 root 的工作!
参考链接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2018-06-20 20:03 PM