linux——深入文件权限

  Linux文件的权限除了基础的r、w和x,还包括s和t这两个特殊的权限,他们与系统的账号和系统的进程相关。
    s这个标记可以出现在文件拥有者的x权限位上,也可以出现在文件所属组的x权限位上。前者被称为Set UID,简称SUID,后者被称为Set GID,简称SGID。
    SUID权限拥有这样的功能:
    1. SUID仅对二进制程序有效
    2. 执行者对该程序拥有x的可执行的权限
    3. 该执行权限仅在执行该程序的过程中有效
    4. 执行者将拥有该程序拥有者的权限
    如:
    $ ls -l /bin/su
    -rwsr-xr-x 1 root root 40040 10月 22 16:39 /bin/su
    su这个命令,无论任何人,执行了它都将拥有root的权限,且这个权限仅在执行的su命令中有效,当使用exit退出su模式时,将失去root的权限。这就是su切换用户权限的实现原理。
    
    SGID权限拥有这样的功能:
    1. SGID对二进制程序有效
    2. 执行者对该程序拥有x的可执行权限
    3. 执行者在执行过程中将获得该程序所属用户组的支持
    SGID除了用在二进制程序上,还可以用在目录上。当一个目录设置了SGID权限后,它将具有这样的功能:
    1. 用户若对此目录拥有r与x权限时,该用户能够进入此目录
    2. 该用户在此目录下的有效用户组将变成该目录的用户组
    3. 若用户在次目录下拥有w的权限,则用户创建的新文件的用户组与此目录所属的用户组相同

    t出现在其他用户的x权限位上。t权限的名称是Sticky Bit,简称SBIT,仅对目录有效。SBIT对目录的作用如下:
    1. 用户若对此目录拥有w和x的权限,即拥有写的权限,当用户在此目录下创建目录或文件时,仅用户自己和root才有权利删除文件
    SBIT的典型应用是/tmp目录。这个目录允许任何用户在里面创建文件,但是为了避免文件被其他用户误删,则设置SBIT权限,使文件只有自己和root才能删除。
    
    使用chmod改变文件权限时,除了用“u+s","g+s","o+t"外,也可以使用数字法设置,只要将原来的3位数字法扩展为四位即可。SUID用4代表,SGID用2代表,SBIT用1代表。他们放在权限数字的开头,如要设置SUID,可以写成”4755“,要设置SGID,可以写成”2755“。

posted @ 2016-10-23 20:23  wears  阅读(132)  评论(0)    收藏  举报