• linux 文件权限(s、t、i、a)解析


    r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。 

    w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移动目录内文件的权限。

    x(eXecute,执行):对文件而言,具有执行文件的权限;对目录了来说该用户具有进入目录的权限。

    s或S(SUID,Set UID):可执行的文件搭配这个权限,便能得到特权,任意存取该文件的所有者能使用的全部系
    统资源。请注意具备SUID权限的文件,黑客经常利用这种权限,以SUID配上root帐号拥有者,
    无声无息地在系统中开扇后门,供日后进出使用。

    T或T(Sticky):/tmp和 /var/tmp目录供所有用户暂时存取文件,亦即每位用户皆拥有完整的权限进入该目录,
    去浏览、删除和移动文件。

    R,W,X是基本权限 S、T是特殊权限
    
    

    文件权限除了r、w、x外还有s、t、i、a权限:

    s:文件属主和组设置SUID和GUID,文件在被设置了s权限后将以root身份执行。在设置s权限时文件属主、属组必须先设置相应的x权限,否则s权限并不能正真生效(c h m o d命令不进行必要的完整性检查,即使不设置x权限就设置s权限,chmod也不会报错,当我们ls -l时看到rwS,大写S说明s权限未生效)。Linux修改密码的passwd便是个设置了SUID的程序,普通用户无读写/etc/shadow文件的权限确可以修改自己的密码。

    ls -al /usr/bin/passwd
    -rwsr-xr-x 1 root root 32988 2008-12-08 17:17 /usr/bin/passwd

    我们可以通过字符模式设置s权限:chmod a+s filename,也可以使用绝对模式进行设置:

    设置s u i d:将相应的权限位之前的那一位设置为4;
    设置g u i d:将相应的权限位之前的那一位设置为2;
    两者都置位:将相应的权限位之前的那一位设置为4+2=6。

    如:chmod 4764 filename   //设置SUID

    t :设置粘着位,一个文件可读写的用户并一定想让他有删除此文件的权限,如果文件设置了t权限则只有属主和root有删除文件的权限,通过chmod +t filename 来设置t权限。

    i:不可修改权限  例:chattr u+i filename 则filename文件就不可修改,无论任何人,如果需要修改需要先删除i权限,用chattr -i filename就可以了。查看文件是否设置了i权限用lsattr filename。

    a:只追加权限, 对于日志系统很好用,这个权限让目标文件只能追加,不能删除,而且不能通过编辑器追加。可以使用chattr +a设置追加权限。

    1.SUID

    当s这个标志出现在文件所有者的x权限上时,例如文件权限状态“-rwsr-xr-x”,此时就称为 Set UID,简称为SUID的特殊权限。SUID有这样的限制和功能:
    (1)SUID权限仅对二进制程序有效;
    (2)执行者对于该程序需要具有x的可执行权限
    (3)本权限仅在执行该程序的过程中有效;
    (4)执行者将具有该程序所有者的权限。
    举个例子,在Linux中,所有账号的密码记录在/etc/shadow这个文件中,并且只有root可以读和强制写入这个文件。那么,如果另一个账号vbird需要修改自己的密码,就需要访问/etc/shadow这个文件,但是上面明明说了只有root能访问/etc/shadow这个文件,是不是矛盾?但事实上,vbird是可以修改/etc/shadow这个文件内的密码的,这就是SUID的功能。
    通过上述的功能说明,我们知道,
    (1)vbird对于/usr/bin/passwd这个程序具有x权限,表明vbird可以执行passwd;
    (2)passwd的所有者为root;
    (3)vbird执行passwd的过程中会暂时获得root的权限;
    (4)/etc/shadow因此可以被vbird所执行的passwd所修改。
     但是vbird如果使用cat去读取/etc/shadow这个文件时,是不能读取的。
    (SUID只能用在文件上,不能用在目录)

    2.SGID

    当s标志出现在文件所有者的x权限时称为SUID,那么s出现在用户组的x权限时称为SGID。(U表示user,G表示group)。SGID有如下功能:
    (1)SGID对二进制程序有用;
    (2)程序执行者对该程序需具备x权限;
    (3)执行者在执行过程中会获得该程序用户组的支持。
    举个例子,/usr/bin/locate这个程序可以去查询/var/lib/mlocate/mlocate.db这个文件的内容,mlocate.db的权限如下:
    -rwx--s--x root  slocate /usr/bin/locate
    -rw-r-----   root slocate /var/lib/mlocate/mlocate.db
    若使用vbird这个账号执行locate时,vbird就会获得用户组slocate支持,又由于用户组slocate对mlocate.db具有r权限,所以vbird就可以读取mlocate.db了。
    除二进制程序外,SGID也可以用目录上。当一个目录设置了SGID权限后,它具有如下功能:
    (1)用户若对此目录具有r和x权限,该用户能够进入该目录;
    (2)用户在此目录下的有效用户组将变成该目录的用户组;
    (3)若用户在此目录下拥有w权限,则用户所创建的新文件的用户组与该目录的用户组相同。

    3.SBIT

    SBIT目前只对目录有效。
    SBIT对目录的作用是:
    (1)当用户对此目录具有w和x权限时,即具有写入权限时;
    (2)当用户在该目录下创建新文件或目录时,仅有自己和root才有权力删除。

    4.SUIDSGIDSBIT权限设置

    先将其转换成数字:
    SUID->4
    SGID->2
    SBIT->1
    假设要将一个文件权限修改为“-rwsr-xr-x”,由于s在用户权限中,所以是SUID,因此,原先的755前面还要加上4,也就是4755,所以,
    用命令chmod 4755 filename 设置就可以了。此外,还可能出现S和T的情况。
    我们知道,s和t是替代x这个权限的,但是,如果它本身没有x这个权限,修改为s或t时就会变成大S或大T,例如:
    执行chmod 7666 filename。 因为666表示“-rw-rw-rw”,均没有x权限,所以最后变成“-rwSrwSrwT”。
    来自鸟哥的Linux私房菜

    
                                        
    
    正因为当初对未来做了太多的憧憬,所以对现在的自己尤其失望。生命中曾经有过的所有灿烂,终究都需要用寂寞来偿还。
  • 相关阅读:
    一周小记(十七)
    一周小记(十九)
    2021/12/28组会
    AdaIN论文阅读(Arbitrary Style Transfer in Realtime with Adaptive Instance Normalization)
    PostgreSQL新增、更新、删除触发器
    leetcodedphard最小距离
    leetcodedp编辑距离问题两个字符串的删除操作
    正向代理代理客服端,反向代理代理服务器
    mybatisplus逻辑删除 3.1一下版本
    Eclipse使用指定JDK,无需配置Path变量
  • 原文地址:https://www.cnblogs.com/candlia/p/11920239.html
Copyright © 2020-2023  润新知