天天看点

Linux系统中目录和文件权限介绍

  1. 为什么需要权限

我们发现,初学者并不是不能理解权限命令,而是不能理解为什么需要设定不同的权限。所有的人都直接使用管理员身份,不可以吗?现在由于绝大多数用户使用的是个人计算机,而使用个人计算机的用户一般都是被信任的用户。在这种情况下,大家都可以使用管理员身份直接登录。又因为管理员拥有最大权限,所以给我们带来了错觉,以为在计算机中不需要分配权限登记,不需要使用不同的账户。

但是在服务器上就不是这种情况了,在服务器上运行的数据越重要,价值越高,那么对权限的设定就要越详细,用户的分级也要越明确。所以,在服务器上,绝对不是所有的用户都使用root身份登录,而要根据不同的工作需要和职位需要,合理分配用户等级和权限等级。

  1. 文件的所有者、所属组和其他人

前面讲Is命令的-1选项时,简单解释过所有者和所属组,例如:

[[email protected] ~]# ls -l anaconda-ks.cfg 
-rw-------. 1 root root 1500 Mar 23 09:07 anaconda-ks.cfg
           

命令的第三列root用户就是文件的所有者,第四列root组就是文件的所属组。而且我们也介绍过,文件的所有者一般就是这个文件的建立者,而系统中绝大多数系统文件都是由root建立的,所以绝大多数系统文件的所有者都是root。

接下来我们解释一下所属组,首先讲解下用户组的概念。用户组就是一组用户的集合,类似于大学里的各种社团。那为什么要把用户放入一个用户组中呢?当然是为了方便管理。大家想想,如果我有100位用户,而这100位用户对同一个文件的权限是一致的,那我是一位用户一位用户地分配权限方便,还是把100位用户加入一个用户组中,然后给这个用户组分配权限方便呢?不言而喻,一定是给一个用户组分配权限更加方便。

综上所述,给一个文件区分所有者、所属组和其他人,就是为了分配权限方便。就像我买了一台电脑,那我当然是这台电脑的所有者,可以把我的学生加入一个用户组,其他不认识的路人当然就是其他人了。分配完了用户身份,就可以分配权限了,所有者当然对这台电脑拥有所有的权限,而位于所属组中的这些学生可以借用我的电脑,而其他人则完全不能碰我的电脑。

  1. 权限位的含义

前面讲解Is命令时,我们已经知道长格式显示的第一列就是文件的权限,例如:

[[email protected] ~]# ls -l install.log
-rw-r--r--. 1 root root 9615 Mar 23 18:15 install.log
           

第一列的权限位如果不计算最后的“.”(这个点代表该文件受SELinux保护),则共有 10 位,这 10 位权限位的含义如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m18nOQug-1591700151421)(images/08/01.jpg)]

  • 第 1 位代表文件类型。Linux 不像 Windows 使用扩展名表示文件类型,而是使用权限位的第1位表示文件类型。虽然 Linux 文件的种类不像 Windows 中那么多,但是分类也不少,详细情况可以使用“info ls”命令查看。在这里只讲一些常见的文件类型。
    • “-”:普通文件。
    • “b”:块设备文件。这是一种特殊设备文件,存储设备都是这种文件,如分区文件/dev/sda1就是这种文件。
    • “c”:字符设备文件。这也是特殊设备文件,输入设备一般都是这种文件,如鼠标、键盘等。
    • “d”:目录文件。Linux 中一切皆文件,所以目录也是文件的一种。
    • “l”:软链接文件。
    • “p”:管道符文件。这是一种非常少见的特殊设备文件。
    • “s”:套接字文件。这也是一种特殊设备文件,一些服务支持 Socket 访问,就会产生这样的文件。
  • 第 2~4 位代表文件所有者的权限,如果有字母,则代表拥有对应的权限;如果是“-”,则代表没有对应的权限。
    • r:代表 read,是读取权限。
    • w:代表 write,是写权限。
    • x:代表 execute,是执行权限。
  • 第 5~7 位代表文件所属组的权限,同样拥有“rwx”权限。
  • 第 8~10 位代表其他人的权限,同样拥有“rwx”权限。

这就是文件基本权限的含义,那我们看看下面这个文件的权限是什么。

[[email protected] ~]# ls -l install.log
-rw-r--r--. 1 root root 9615 Mar 23 18:15 install.log
           

这个文件的所有者,也就是root用户,拥有读和写的权限;所属组中的用户,也就是root组中除root用户意外的其他用户,拥有只读权限;而其他人拥有只读权限。

最后我们在看看权限位的这个“.”的作用。这个点在CentOS 6以上的系统中才出现的,在以前的系统中是没有的。它的含义是:如果在文件的权限位中含有“.”,则表示这个文件受SELinux的安全规则管理。

继续阅读