权限管理

文件的权限主要针对三类对象进行定义:

           owner:属主, u

           group:属组, g

           other:其他, o

 每个文件针对每类访问者都定义了三种权限:

           r:Readable

           w:Writable

           x:eXcutable


           文件:

                 r:可使用文件查看类工具获取其内容;

                 w:可修改其内容;

                 x:可以把此文件提请内核启动为一个进程;

           目录:

                 r:可以使用ls查看此目录中文件列表;

                 w:可在此目录中创建文件,也可删除此目录中的文件;(注:能都删除文件取决于对此文件是否有写权限)

                 x:可以使用ls -l查看此目录中文件列表,可以cd进入此目录;

(为了避免文件被恶意利用,创建时默认 没有执行权限, 而目录为了可以进入,有执行权限)

           --- 000 0

           --x 001 1

           -w- 010 2

           -wx 011 3

           r-- 100 4 

           r-x 101 5

           rw- 110 6

           rwx 111 7       

例如:

                 640:rw-r-----

                 rwxr-xr-x:755


      修改文件权限:^chmod

           chmod[OPTION]... OCTAL-MODE(八进制数字) FILE...

             改目录权限不会影响目录中的文件, 如果想让目录中的文件也一并改权限,要用:

           -R:递归修改权限

                 MODE:

                      修改一类用户的所有权限:

                            u=

                            g=

                            o=

                            ug=(两类一样)

                            a=(三种都一样)

                            u=,g=

                      修改一类用户某位或某些位权限

                            u+

                            u-

没有任何权限可以留空    
属主属组都可读可写
分类不一样,用逗号隔开    
所有人都可读
权限管理_第1张图片
可用加减号

chmod [OPTION]... --reference=RFILE FILE...

参考RFILE文件的权限,将FILE的修改为同RFILE;(也支持-R选项,如果FILE是目录,目录中的所有文件也参考这个文件)


修改文件的属主和属组:  (仅root可用)

           修改文件的属主:^chown

                 chown[OPTION]... [OWNER][:[GROUP]] FILE...

                      用法:

                            OWNER

权限管理_第2张图片

                            OWNER:GROUP

权限管理_第3张图片

                              :GROUP

权限管理_第4张图片
Note: 命令中的冒号可用.替换;

                               修改属主一样可以使用   -R:递归

                chown [OPTION]... --reference=RFILEFILE...(参考RFILE的属主数组)


修改文件的属组:^chgrp

                chgrp [OPTION]... GROUP FILE...

             chgrp [OPTION]...--reference=RFILE FILE...

        同样支持      -R

文件或目录创建时的遮罩码:umask

          umask: 查看

          umask #:设定(仅对当前shell进程有效)

创建文件时666减去umask值

      FILE: 666-umask

           Note: 如果某类的用户的权限减得的结果中存在x权限,则将其权限+1

创建目录时777减去umask值

      DIR: 777-umask

默认值: 

但是注意普通用户是:

(相当于002)

所以创建文件时:

(666-002=664)

如果某类的用户的权限减得的结果中存在x权限,则将其权限+1:

    设置umask=3(003)

(666-003=663, 因为3是wx包含执行权限,所以要把3加1,现在就是664)      


Linux文件系统上的特殊权限

    SUID,SGID, Sticky

对应:

    user,group, other

安全上下文

           前提:进程有属主和属组;文件有属主和属组;

           (1)任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限;

           (2)启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的组;

           (3)进程访问文件时的权限,取决于进程的发起者:

                 (a)进程的发起者,同文件的属主:则应用文件属主权限;

                 (b)进程的发起者,属于文件的属组;则应用文件属组权限;

                 (c)应用文件“其它”权限;


SUID

           (1)任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限;

           (2)启动为进程之后,其进程的属主为原程序文件的属主;

 权限设定:

                 chmod u+s FILE...

                 chmod u-s FILE...           (注意SUID非常危险,操作要谨慎)

GID

           默认情况下,用户创建文件时,其属组为此用户所属的基本组;

           一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组;

 权限设定:

                 chmodg+s DIR...

                 chmodg-s DIR...

注:一个用户能不能删除一个文件,并不取决于对这个文件有没有写权限,而是要看对这个目录有没有写权限

Sticky

           对于一个多人可写的目录,如果设置了sticky,则每个用户仅能删除自己的文件;


           权限设定:

                 chmodo+t DIR...

                 chmodo-t DIR...


           SUIDSGID STICKY

    (4      2     1)

                 0000

                 0011

                 0102

                 0113

                 1004

                 1015

                 1106

                 1117

                 chmod4777 /tmp/a.txt(suid)


所以最左侧的0是不生效的,必须手动给予特殊权限

几个权限位映射:

                 SUID:user,占据属主的执行权限位;

                      s:  原有属主拥有x权限

                      S:属主没有x权限

                 SGID:group,  占据group的执行权限位;

                      s:  group拥有x权限

                      S:group没有x权限            

                 Sticky:other,占据ohter的执行权限位;

                      t:  other拥有x权限

                      T:other没有x权限

你可能感兴趣的:(权限管理)