权限解析

一、文件权限

       用户的创建的每个文件,都有自己特定的属性信息,比如文件类型,文件的权限,文件的所有者和所属组,以及文件的修改日期等属性组成。

       文件的权限即是指文件本身赋予了用户什么样的权力,也就是说用户能不能打开文件,能不能修改文件这些属性都是由文件权限标记和赋予的。文件的权限一般包括读、写、执行三种权限。读也就是用户有读文件的能力,八进制表示为4;写表示用户有修改文件的能力,八进制表示为2;执行权限对目录而言是可以进入此目录,对文件而言是可执行文件,八进制表示为1;权限解析

r(readable) w(writable) x(eXcuable) u(owner) g(group) o(other) a(all)
执行 所有者 所属组 其他人(来宾) 所有人
4 2 1     

000 001 010 011 100 101 110 111
–x -w- -wx r– r-x rw- rwx
0 1 2 3 4 5 6 7
640:rw- r– —    7:— — rwx 755:rwx r-x r-x       0:— — —

        文件

                r: 可使用文件查看类工具获取其内容
                w: 可修改其内容
                x: 可以把此文件提请内核启动为一个进程
        目录
                r: 可以使用ls 查看此目录中文件列表
                w: 可在此目录中创建文件,也可删除此目录中的文件
                x: 可以使用ls -l 查看此目录中文件列表,可以cd 进入此目录

                X:递归修改目录执行权限时,只给所有的目录x 权限,而不给文件x执行权限,但是如果文件中有任何一个人有执行权限,则文件将会全部加上执行权限

        目录若只有读写权限,只能查看目录文件列表,不能访问文件和cd进目录(查看,删除),如果只有执行权限,可以cd进目录,但是不能ls列出文件列表,可以执行目录中的文件,执行是基础去权限,若知道文件名,可以直接访问目录中的文件;写权限,需配合x权限才能生效。

        当用户需要访问文件时,按照匹配顺序依次匹配,如果普通用户文件的所有者和所属组其中一个有执行权限,-o没有-x权限,尽管root用户不属于该文件所有者和所有组,root用户依然可以借用-X执行权限。

        chmod 修改文件权限
                -R: 递归修改权限
            chmod [OPTION]… MODE[,MODE]… FILE…
                MODE:
                    修改一类用户的所有权限:
                        u= g= o= ug= a= u=,g=
                    修改一类用户某位或某些位权限

                        u+ u- g+ g- o+ o- a+ a- + –

           chmod [OPTION]… —reference=RFILE FILE…

                参考RFILE 文件的权限,将FILE 的修改为同RFILE

           若用户没有任何权限,则设置权限为空,赋值权限也可直接赋八进制数字

权限解析

          文件权限设置:

                chmod u+wx,g-r,o=rx file

                chmod -R g+rwX /testdir
                chmod 600 file

权限解析
权限解析

         用户新建文件和目录时一般都会有默认的权限设置,比如root管理员用户创建文件的默认权限为644,创建目录的默认权限为755,普通用户的创建文件的默认权限为664,创建目录的权限为775,因为root是管理员用户,所以为了安全,通常都是只有文件所有者才具有写的权限。文件的默认权限是由umask掩码决定的,修改文件的umask掩码,即可修改文件创建的默认权限。

普通用户umask值为002,root管理员用户的的umask值为022,umask设置在全局文件 /etc/bashrc中或则用户设置文件~/.bashrc中。

         umask掩码:从777或666中,将文件对应的权限位去掉,从而得出默认权限

         umask值:可以用来保留在创建文件权限

         新建文件或目录的权限为: 666-umask或777-umask

         如果所得结果某位存在执行(奇数)权限,则将其权限+1

        umask值得计算方法为

权限解析

         文件的完整权限666或777与umask值二进制计数的每一位比较,当umask的二进制位为0时,文件的权限二进制位保留,当umask二进制位为1时,文件的权限二进制位置为0,计算之后的最终权限即为文件的默认权限。
        umask: 查看umask值

        umask #: 设定umask值

        umask 002

        umask –S 模式方式显示

权限解析

二、文件的三种特殊权限

        Suid 和 guid 的特殊权限及sticky位
                Suid 当在一个二进制文件上应用了suid后,那么任何人在执行该命令时临时拥有命令拥有人的权限,只能应 用在可执行文件上
                u+s
                sgid 当在一个二进制文件上应用了sgid后,那么任何人在执行该命令时临时拥有命令拥有组的权限,只能应用在可执行文件上,如果在一个目录上应用了sgid后,那么任何人在该目录创建文件/目录的拥有组会继承目录本身的组
                g+s
                Sticky 如果在一个目录上应用了sticky权限后,那么该目录中的文件仅文件拥有人和root用户能删除
                o+t

    进程和文件都有属主和属组,而属主和属组的判定有以下几种情况:

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

                (2) 启动为进程之后,其进程的属主为发起者, 进程的属组为发起者所属的组
                (3) 进程访问文件时的权限,取决于进程的发起者
                        (a) 进程的发起者,同文件的属主:则应用文件属主权限
                        (b) 进程的发起者,属于文件属组;则应用文件属组权限
                        (c) 应用文件‘其他’权限

  可执行文件上的SUID权限

            任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
            启动为进程之后,其进程的属主为原程序文件的属主
            SUID 只对二进制可执行程序有效;SUID 设置在目录上无意义
            权限设定:
                   chmod u+s FILE…

                   chmod u-s FILE…

权限解析

       可执行文件上的SGID权限

             任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限
             启动为进程之后,其进程的属主为原程序文件的属主
             权限设定:
                    chmod g+s FILE…

                    chmod g-s FILE…

权限解析

        目录上的SGID权限

                默认情况下,用户创建文件时,其属组为此用户所属的主组
                一旦某目录被设定了SGID ,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组
                权限设定:
                    chmod g+s DIR…
                    chmod g-s DIR…
        Sticky位
                具有写权限的目录通常用户可以删除该目录中的任何文件,不管该文件的权限或拥有权
                在目录设置Sticky 位,只有文件的所有者或root可以删除该文件
                sticky设置在文件上无意义
                权限设定:
                    chmod o+t DIR…
                    chmod o-t DIR…
                八进制表示权限位:
SUID:4 SGID:2 STICKY:1

    权限位映射:

            SUID: user, 占据属主的执行权限位
                s:属主拥有x 权限
                S:属主没有x 权限
            SGID: group, 占据属组的执行权限位
                s:group 拥有x 权限
                S:group 没有x 权限
            Sticky: other, 占据other 的执行权限位
                t:other 拥有x 权限
                T:other 没有x 权

三、ACL访问控制列表

        ACL:Access Control List ,实现灵活的权限管理,即除了文件的所有者,所属组和其它人以外,可以对某一个单独的用户设置访问权限。

        ACL权限设置的生效顺序为:所有者,自定义用户,自定义组,其他

        getfacl 查看文件的acl属性

        setfacl设置文件的acl属性
            -m:创建cal
            u:用户
            g:组
            o:其他人
            -x:删除acl权限 eg:
            -R:递归
            -b:清除所有的acl设置
            -m:设置mask的值
        setfacl -k dir 删除默认ACL 权限
        setfacl –b file1 清除所有ACL 权限

        getfacl file1 | setfacl –set-file=- file2 复制file1的acl 权限给file2

权限解析

        对passwd文件添加danran用户rwx权限,setfacl -m u:danran:rwx passwd

        用户或组的设置必须存在于mask 权限设定范围内才会 生效
        setfacl -m mask::rx file
            –set 选项会把原有的ACL 项都删除,用新的替代,需要注意的是一定要包含UGO 的设置,不能象-m 一样只是添加ACL就可 以

       ACL设置: 

              setfacl -M file.acl file|directory 利用编辑好的acl设置文件批量设置acl
权限解析
             setfacl -m g:salesgroup:rw file| directory 创建某组的acl权限
             setfacl -m d:u:wang:rx directory 对目录创建默认的acl权限

权限解析
            setfacl -x u:danran file |dir 删除danran用户的acl权限

    ACL文件上的group权限是mask值(自定义用户,自定义组,拥有组的最大权限), 而非传统的组权限。

    mask是影响除所有者和other 的之外的人和组的最大权限。
    mask 需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)。

    通过ACL 赋予目录默认x 权限,目录内文件也不会继承x 权限。

    只能删除ACL权限,不能删除默认权限。

   

    

原创文章,作者:danran,如若转载,请注明出处:http://www.178linux.com/77211

(0)
danrandanran
上一篇 2017-05-30 22:44
下一篇 2017-05-31

相关推荐

  • 马哥教育网络班22期+第三周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。     [root@zabbix ~]# who|awk '{print $1}'|sort| uniq 2、取出最后登录到当前系统的用户的相关信息。 &nb…

    Linux干货 2016-08-23
  • 子网掩码快速划分-心算

    问题状况: 不管作为一名网络工程师还是一名运维工程师,快速心算划分出网络掩码是必备得技能,      为什么要进行子网掩码划分? 纯二层环境不能隔离广播 有安全 管理方面的问题 解决办法:在二层环境下增加三层设备 将原本的一个主类网络号划分成多个子网     掩码基础知识:     注意:此步没记住不要往下进行     死记硬背1:     2^0=1   …

    Linux干货 2017-03-26
  • 马哥教育网络班22期+第5周课程练习

    1、显示当前系统上root、fedora或user1用户的默认shell; [root@rhel677850 ~]# grep "^\(root\|fedora\|user1\)" /etc/passwd|awk -F: '{print $1,$7}&#039…

    Linux干货 2016-09-26
  • 简述开源协议

    简述开源协议 现在一说到智能手机,相信很容易就会想到苹果和安卓。安卓搭载的Android是一种基于Linux的自由及开源的操作系统,苹果手机搭载OS X是苹果公司为Mac系列产品开发的专属操作系统。    安卓手机凭借其开源的特性达到与苹果系统分庭伉礼的地位,又凭借其开源的价格优势,牢牢把控手机设备的中低端市场,其市场占有率远远…

    Linux干货 2017-03-26
  • linux学习笔记: grep命令,正则表达式

    linux学习笔记:grep命令,正则表达式 linux运维笔记 简介 grep命令是一个最初用于Unix操作系统的命令行工具,在给出文件列表或者标准输入之后,grep会对匹配一个或者多个正则表达式的文本进行搜索,并且只输出匹配或者不匹配的行或者文本。(参见维基百科)  正则表达式是计算机科学的一个概念,正则表达式使用单个字符串…

    Linux干货 2017-04-07
  • mysql复制与备份

    备份策略: 完全+差异+binlog 完全+增量+binlog binlog最好能实时备份到另一个节点上。 完全备份,多久一次? 数据变化量:有20%,建议使用完全备份。 可用的备份存储空间: 数据变化量很大,可以每天做一个完全备份,每周做一次增量备份。 数据变化量不大,可以每月做一次完全备份,每天做一次增量或者差异。 数据 备份工具: mysqldump:…

    Linux干货 2016-12-05