• [权限管理]——一般权限、特殊权限、隐藏权限


    Linux下的文件/目录有三类权限:一般权限、特殊权限、隐藏权限


    关于权限与归属的认识(三张图)

     


    访问权限/一般权限:r w x

    1.对目录而言rwx的意义是?

    r:意味着具有读取目录结构列表的权限。即能够使用ls命令

    $ ll
    dr--------. 2  lyj01  lyj01 4096 7月   7 09:59 test1
    
    $ cd test1
    / ------>#只有r权限是没有办法cd进入目录的 bash: cd: test1/: 权限不够
    $
    ls test1/ ls: 无法访问test1/2.txt: 权限不够 ls: 无法访问test1/1.txt: 权限不够 1.txt 2.txt   ------>#有r权限我们可以看到目录下的内容

    w:意味这具有更改目录结构列表的权限。即可以:

           新建(touch/vim)文件与目录;

           删除(rm)文件与目录(且不论该文件与目录权限是什么)
           重命名(mv)文件与目录;
           移动(cp)文件与目录;

    $ ll
    drwx------. 2 lyj01 lyj01 4096 7月   7 10:03 test1
    
    $ cd test1/
    $ ls
    1.txt 2.txt
    $
    rm 1.txt          ------>#可以删除
    $
    touch 3.txt       ------>#可以新建
    $
    mv 3.txt 1.txt     ------>#可以重命名

    $
    cp 1.txt /test/    ------>#可以移动
    $ cd test1
    
    $ ll
    dr--------. 2 lyj01 lyj01 4096 7月 7 10:24 test2     -r--------. 1 lyj01 lyj01 0 7月 7 10:24 test3  
    ------>#虽然这个目录中的文件(test3)和目录(test2)只有r权限
    $
    rm test2 -r rm:是否删除有写保护的目录 "test2"?y  
    $
    rm test3 -r rm:是否删除有写保护的普通空文件 "test3"?y              
    ------>#但是无论test1目录下的"文件/目录权限如何",因为父目录test1有w权限,其下的文件/目录就可以执行相应操作
    ------>#我们得知道这意味着什么?
    $ pwd
    /home/lyj01
    
    $ ll
    -d /home/lyj01 drwx------. 3 lyj01 lyj01 1024 7月 7 09:54 /home/lyj01 ------>#对一个用户的家目录来说,这个家目录的属主属组都是属于这个用户的,且属主权限为755
    $
    touch 1.txt
    $
    sudo chown root:root 1.txt
    $
    sudo chmod 700 1.txt ------>#我们尝试着在这个家目录下创建一个属主属组为root且权限为700的文件
    $ ll
    -rwx------. 1 root root 0 7月 7 10:33 1.txt ------>#照这个权限设置来说,用户lyj01属于others,并没有对这个文件的任何权限
    $
    rm 1.txt -f ------>但是我们可以删除它,为什么?想想这个家目录的权限是怎样? ------>#所以说用户在它用户家目录里面具有如同"root"般的地位
    ------>#另外必须强调的一点是,如果目录没有x权限来让你具有切换到该目录下的权限,那么w权限是没有意义的
    $ ll
    drw-------. 2 lyj01 lyj01 4096 7月   7 10:10 test1

    $ cd test1
    / bash: cd: test1/: 权限不够
    $
    touch test1/3.txt touch: 无法创建"test1/3.txt": 权限不够

    x:意味着具有能够进入该目录成为工作目录的权限。即可以使用cd命令

    $ ll
    dr-x------. 2 lyj01 lyj01 4096 7月   7 10:03 test1
    
    $ cd test1
    / ; ls ------>#能够cd进入目录 1.txt 2.txt
    $
    rm 1.txt rm: 无法删除"1.txt": 权限不够 ------>#但是因为没有w权限,所以进入目录以后也不能做什么
    $
    touch 3.txt touch: 无法创建"3.txt": 权限不够

    2.对文件而言rwx的意义是?

    r:意味着具有读取该文件内容的权限

    $ ll
    -r--------. 1 lyj01 lyj01   13 7月   7 10:39 1.txt

    $
    cat 1.txt hello world!

    w:意味着具有编辑、新增、修改文件的权限

    x:如果是脚本文件意味这可以被系统执行

    注意:对于文件而言,其r、m、x权限都针对的是该“文件的内容”而言的,而对于“文件名”本身的操作(例如删除、重命名等)权限是没有意义的。这个结合上面权限对于目录而言的意义就很好理解了


    特殊权限:SUID、SGID、SBTI

    1.SUID/SGID

    #看一下这三个文件的权限
    # ls -l /usr/bin/passwd /etc/shadow /etc/passwd -rw-r--r-- 1 root root 1470 Jun 22 19:33 /etc/passwd ---------- 1 root root 902 Jun 22 19:33 /etc/shadow -rwsr-xr-x. 1 root root 30768 Feb 22 2012 /usr/bin/passwd

    我们知道,/etc/passwd和/etc/shadow存放着用户的账户和密码信息。从它们俩的权限上看,普通用户(others)并不具有对它们修改的权限。

    但实际上,普通用户登录的状态下,它是可以通过/usr/bin/passwd这个命令来修改自己的密码的。这是为什么呢?

    我们可以看到/usr/bin/passwd文件的root权限设置为rws,即具有SUID权限。普通用户就可以通过执行passwd命令,临时的拥有root权限,去修改/etc/passwd文件了

    所以总结来说:

           若普通用户对于该文件有执行权限(x)的前提下;

           SUID就是:让普通用户拥有可以执行“只有root权限才能执行”的特殊权限,SGID同理指”组“;

           SUID仅能用在二进制程序(binary program)上,对目录无效。

    查询整个系统的SUID/SGID文件?

    # find /  -perm  +6000

    2.SBTI(Sticky Bit)粘滞位权限

    # mkdir /test
    
    #
    chmod 1777 /test/ ------>#使该目录对所有用户可读写,并增加SBTI权限
    # ll
    -d /test/ drwxrwxrwt 2 root root 4096 Jul 11 23:49 /test/

    假设该/test目录是对所有用户开放共有的目录,且所有用户都拥有读写权限,

    若A用户在/test中创建了一个文件,B用户哪天不爽它还有权限去删掉这个文件,这肯定是不好的。

    但是设置了sticky bit权限以后是不会出现这样的问题的

    # su lyj             ------>#切换普通用户lyj

    $
    touch lyj1.txt ------>#创建一个文件

    $ ll lyj1.txt
    -rw-rw-r-- 1 lyj lyj 0 Jul 11 23:52 lyj1.txt
    #
    su lyj2 ------>#切换普通用户lyj2

    $
    ls lyj1.txt
    $
    rm lyj1.txt -f ------>#lyj2有权删掉这个lyj创建的文件吗? rm: cannot remove `lyj1.txt': Operation not permitted #显然不能
    $ touch lyj2.txt
    $
    rm lyj2.txt -f ------>#它只能删除自己创建的

    所以总结来说:

           若普通用户对于该目录有w、x权限的前提下;

           SBTI意味着,当该普通用户在该目录下创建了文件/目录,那么只有它自己和root用户可以删除/重命名/移动它,其他用户没有权力这么做

           SBTI只针对目录有效


    隐藏权限:attrt

    i:可以让文件不能被删除、重命名;不能写入、添加数据;不能创建硬链接;注意只有root用户有权设置此权限

    # touch attrtest

    #
    chattr +i attrtest ------>#给文件添加隐藏权限i
    #
    lsattr attrtest ------>#查看文件的隐藏权限 ----i--------e- attrtest

    #
    whoami root

    #
    rm attrtest -f rm: 无法删除"attrtest": 不允许的操作 ------>#哪怕root用户都不能删除
    #
    echo "hello" > attrtest ------>#不能写入/修改 -bash: attrtest: 权限不够
    #
    mv attrtest attrtest2 ------>#不能重命名 mv: 无法将"attrtest" 移动至"attrtest2": 不允许的操作
    #
    ln attrtest 2 ------>#不能创建硬链接 ln: 创建硬链接"2" => "attrtest": 不允许的操作

    #
    ln -s attrtest 1.txt
    #
    cat attrtest ------>查看和创建软链接倒是可以

    a:让这个文件只能增加数据,不能删除、修改数据;注意只有root用户有权设置此权限

    # chattr +a  attrtest 
    
    #
    lsattr attrtest -----a-------e- attrtest
    #
    echo "hello" > attrtest -bash: attrtest: 不允许的操作
    # echo "hello" >>attrtest ------>#注意体会 > 和 >> 的不同
    #
    cat attrtest hello
    #
    rm attrtest -f rm: 无法删除"attrtest": 不允许的操作
  • 相关阅读:
    Vim配置IDE开发环境
    Win7任务计划自由预设系统定时自动关机
    awk中文手册
    awk简明教程
    Linux之mount命令详解
    VirtualBox内Linux系统与Windows共享文件夹
    堆排序详解
    int main(int argc,char* argv[])参数详解
    GDB调试详解
    VirtualBox中虚拟Ubuntu添加新的虚拟硬盘
  • 原文地址:https://www.cnblogs.com/snsdzjlz320/p/5661566.html
Copyright © 2020-2023  润新知