Wave Spread...

Linux 学习与进阶之文件属性

分类:Linux 评论: 0

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          ]
[   权限   ][链接][拥有者][群组][文件大小][  修改日期     ][      文件名       ]

第一栏代表这个文件的类型与权限(permission):

这一栏其实共有十个字符:

dr-xr-x---.

第一个字符代表这个文件是『目录、文件或链接文件等等』:

  1. 当为[ d ]则是目录,例如上表档名为『.pki』的那一行;
  2. 当为[ - ]则是文件,例如上表档名为『install.log』那一行;
  3. 若是[ l ]则表示为软链接(link file);
  4. 若是[ b ]则表示为装置文件里面的可供存储的接口设备(可随机存取装置);
  5. 若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。

接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号[ - ]而已。

  1. 第一组为『文件拥有者的权限』,以『install.log』那个文件为例, 该文件的拥有者可以读写,但不可执行;
  2. 第二组为『同群组的权限』;
  3. 第三组为『其他非本群组的权限』。

注意:另外,目录与文件的权限意义并不相同!这是因为目录与文件所记录的数据内容不相同所致。

第二栏表示有多少档名连结到此节点(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
# 如上所示,.tcshrc 为 2013 年所修改过的文件,离现在太远之故;
# 至于 install.log 是今年所建立的,所以就显示完整的时间了。

如果想要显示完整的时间格式,可以利用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 文件中

Linux文件权限的重要性:

与Windows系统不一样的是,在Linux系统当中,每一个文件都多加了很多的属性进来,尤其是群组的概念,这样有什么用途呢? 其实,最大的用途是在『数据安全性』上面的。

系统保护的功能:
举个简单的例子,在你的系统中,关于系统服务的文件通常只有root才能读写或者是执行,例如/etc/shadow这一个账号管理的文件,由于该文件记录了你系统中所有账号的数据, 因此是很重要的一个配置文件,当然不能让任何人读取(否则密码会被窃取啊),只有root才能够来读取啰!所以该文件的权限就会成为[ -rw------- ]。

团队开发软件或数据共享的功能:
此外,如果你有一个软件开发团队,在你的团队中,你希望每个人都可以使用某一些目录下的文件, 而非你的团队的其他人则不予以开放呢?以上面的例子来说,testgroup的团队共有三个人,分别是test1, test2, test3,那么我就可以将团队所需的文件权限订为[ -rwxrwx--- ]来提供给testgroup的工作团队使用啰!

未将权限设定妥当的危害:
再举个例子来说,如果你的目录权限没有作好的话,可能造成其他人都可以在你的系统上面随意操作! 例如本来只有root才能做的开关机、新增或删除用户等等的指令, 而且万一你的用户的密码被其他不明人士取得的话,只要他登入你的系统就可以轻而易举的执行一些root的工作!

参考链接:第六章、Linux 的文件权限与目录配置

回复