Linux 基础(6)—— 权限

修改所属人,所属组                文件的 r w x 权限            修改文件的权限chmod          umask   
文件系统上的特殊权限            设定文件特定属性            ACL

文件权限

Linux 基础(6)—— 权限

1.修改所属人,所属组    chown 
(1)change owner 修改文件的所属人
            owner.group   或   owner:group 修改文件的所属人和所属组
以上只有root才能修改文件的所有人

Linux 基础(6)—— 权限

(2)chgrp : change group   或   chown :group [ .group] 修改文件的所属组

           root和文件的owner可以修改文件的所属组(owner修改所属组时,owner必须属于目标组)

Linux 基础(6)—— 权限

chown     -R 递归

Linux 基础(6)—— 权限

Linux 基础(6)—— 权限

chown     –reference test.sh(源文件)  house(修改的文件)

Linux 基础(6)—— 权限

2.文件的 r w x 权限
(1)文件的权限主要针对三类对象进行定义:

   owner: 所属人, u

   group: 所属组, g

   other:  其他人, o

Linux 基础(6)—— 权限

(2)权限判断的顺序(beta)
         先判断是否是文件的所有人,如果是,则执行所属人的权限后结束,如果不是所有人,则判断是否所属组(可以是主组也可以是辅助组),如果是,则执行所属组的权限后结束,如果不是则执行其他人的权限后结束。
                                          所有人->所有组->其他人
(3)普通文件 (三种常用权限)
     r: 可以读取文件的内容
        例: cat    less    more   nano   vim    执行脚本
     w: 可以修改文件的内容
        例: nano   vim   >    >>   tee   gedit
     x: 可以执行该文件 (单独无作用)
        例:  执行脚本
     rwx:最大权限 666
(4)目录文件
     r: 用户可以列出目录下有哪些文件(不能查看文件的详细信息)
     w: 只有w无意义。
     x: 用户可以进入该目录(如果知道文件名,且有相对应的文件权限 ,可以执行对应的操作)
     rx: 用户可以进入目录,且可以长列出。
     rw:等于只有r
     wx: 能进入,能创建能删除,不能列出。故用户能否删除文件与文件自身权限无关。
     rwx: 最大权限 777
     —:null

  目录文件只有rx :

Linux 基础(6)—— 权限

  目录文件只有wx :

Linux 基础(6)—— 权限

  用数字表示权限
    — 0       –x 1       -w- 2       -wx 3       r– 4       r-x 5        rw- 6        rwx 7

3.修改文件的权限 chmod
只有所属人和root可以更改文件的权限
(1)字符修改   chmod u=..,g=..,o=… filename
                                     ugo+rwx 或 a=rwx filename 给文件所有权限
                                     a=     filename 没有任何权限

                                     u+-…,g=-…,o=-…

Linux 基础(6)—— 权限

              chmod -R a+X dir1 递归给目录加x权限;X 当普通文件本身没有x权限时,则跳过,给目录加上所以x权限。一般用于批量修改多个文件、目录的权限时,自动跳过没有执行权限的文件。

Linux 基础(6)—— 权限

(2)数字修改    chmod n filename

Linux 基础(6)—— 权限

   chmod –reference 源文件 目的文件

4.umask     最大权限-umask=默认权限(创建文件touch,创建目录mkdir时)

 最大权限  777(目录文件)   666(普通文件)

 umask      022(root默认)   022 (root下)            (普通用户   002    002)

 默认权限  755                        644

Linux 基础(6)—— 权限

  当umask中全部是偶数时,可以直接减,当umask中包含奇数时,对于目录直接减,对于文件,在奇数所在的位减完后加一。
     umask  231    设置umsk为231
  例 777  rwxrwxrwx(目录文件)    666  rw-rw-rw-(普通文件)
      231  -w–wx–x                       021  -w–wx–x

      546  r-xr–rw-                        446   r–r–rw-

Linux 基础(6)—— 权限

  umask –S 字符模式方式显示默认权限
  umask –p 输出可被调用
              全局设置: /etc/bashrc 用户设置:~/.bashrc(永久生效)
  cp时 当目标文件不存在时(相当于touch了一个新文件) 目标文件的权限=源文件-umask
          当目标文件存在时,被覆盖, 目标文件还是目标文件的权限 (目录也一样)
Linux 基础(6)—— 权限

5.文件系统上的特殊权限

SUID, SGID, Sticky
(1)suid 当对一个可执行的二进制文件作用了SUID权限之后,任何拥有执行该文件权限的人,在执行的过程时都临时拥有该文件所属人的权限。 例:passwd    -rwsr-xr-x
                权限设定:chmod u+s FILE    或     chmod 4… file
        SUID: 占据所属人的执行权限位x

                  s: 所属人拥有x 权限          S :所属人没有x

Linux 基础(6)—— 权限

(2)sgid 当对一个可执行的二进制文件作用了SGID权限之后,任何拥有执行该文件权限的人,在执行的过程时都临时拥有该文件所属组的权限。
                当对一个目录作用了SGID权限之后,任何对该目录有wx权限的用户在该目录下创建的文件及目录的所有属均为该目录的所有组。
               权限设定:chmod g+s file    或     chmod 2… file
        SGID: 占据属组的执行权限位
                 s: group 拥有x 权限          S :group 没有x
Linux 基础(6)—— 权限

Linux 基础(6)—— 权限

(3)sticky 当对一个目录作用了sticky之后(只限制组用户w权限,目录的owner不受影响),该目录下的文件仅其所属人,目录所属人(有wx权限),root才能删除。
                  权限设定:chmod o+t 目录    或     chmod 1… 目录
         Sticky: 占据other 的执行权限位,但和其他人无关
                  t: other 拥有x 权限         T :other 没有x

Linux 基础(6)—— 权限

  chmod 6… file    即有suig也有sgid
             3… file    即有sgid也有sticky

             5… file    即有suid也有sticky

             7… file    all

5.设定文件特定属性
   lsattr 显示特定属性
   chattr +i 不能删除,改名,更改                                   -i解除
   chattr +a 只能追加内容,不能删除,改名,更改         -i解除

Linux 基础(6)—— 权限

Linux 基础(6)—— 权限


6. ACL

(1) CentOS7当中,无论是操作系统安装时还是之后手工创建的文件系统(xfs、ext4)均会开启ACL功能。

 CentOS6及之前的版本,仅操作系统安装时创建的文件系统才会默认开启ACL,手工创建的文件系统,需要手工开启ACL功能。
    mount -o acl /dev/sda7 开启ACL,重新挂载时不指定即可
    tune2fs -o acl /dev/sda7 开启ACL 取消的方式 tune2fs -o ^acl /dev/sda7
(2) 有ACL时权限判断的顺序
         先判断是否是文件的OWNER,如果是,则执行OWNER的权限后结束,如果不是OWNER,则判断是否是ACL的USER,如果是则执行USER权限后结束,如果不是ACL的USER, 则判断是否属于GROUP或ACL GROUP,如果是,则取最大权限。如果不属于任何GROUP,则执行OTHER。
                owner > ACL的USER > 文件所属组+ACL的group+所属组属于的组(weiguo)相加的最大权限 > other
Linux 基础(6)—— 权限
Linux 基础(6)—— 权限
Linux 基础(6)—— 权限
(3) 用法:
①setfacl -m u:liubei:— f1               设置ACL USER
   setfacl -m g:shuguo:rwx f1          设置ACL GROUP
   setfacl -m u::rw,u::rw,g::r,o:: f1  设置多个
Linux 基础(6)—— 权限
②setfacl -M test.sh f1 重新给f1加上原来的ACL
    test.sh 内容来自getfacl f1 > test.sh,如下
         # file: f1
         # owner: root
         # group: root
         user::rw-
         user:caopi:rwx
         group::r–
         mask::rwx
         other::r–
Linux 基础(6)—— 权限
③setfacl -x u:liubei f1 单独去除一条ACL权限
   setfacl -X aclrm.txt f1[ f2 f3 *] 可以批量删除ACL的用户和组
    先编辑aclrm.txt 内容如下
               u:liubei
               g:shuguo
Linux 基础(6)—— 权限
④setfacl -m mask:r f1    或   chmod g=r f1       一旦设置了ACL权限后,原有的文件GROUP不可再更改,使用chmod即修改ACL MASK
              ACL MASK随着新的ACL设置会被重置,重置的标准是让该文件上的所有ACL及文件原GROUP上的权限都有效。
Linux 基础(6)—— 权限
setfacl -Rm u:zhangfei:rwx acltest/ 递归设置
Linux 基础(6)—— 权限
⑤备份和恢复ACL
主要的文件操作命令cp和mv 都支持ACL,cp 命令需要加上-p复制权限。但是tar等常见的备份工具是不会保留目录和文件的ACL信息
   getfacl -R /tmp/dir1 > acl.txt 将目录下的所有文件的ACL属性备份到文件
   setfacl -R -b /tmp/dir1 清除目录下所有文件的ACL属性
   setfacl -R –set-file=acl.txt /tmp/dir1 通过文件还原ACL属性的方法1
   setfacl –restore acl.txt 通过文件还原ACL属性的方法2
Linux 基础(6)—— 权限
⑥setfacl -m d:u:caocao:rwx d1 设置ACL默认权限,仅影响新创建的文件及目录,不影响当前。
   setfacl -m g:caopi:rwx d1
   setfacl -x d:caocao d11 删除一条默认权限
   setfacl -k d1 删除全部默认权限
Linux 基础(6)—— 权限
   setfacl -b f1 去除该文件上ACL属性。

                                           有 什 么 错 误 请 大 家 指 教!

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

(0)
alongalong
上一篇 2017-07-27
下一篇 2017-07-27

相关推荐

  • 马哥教育网络班21期第7周课程练习

    1、创建一个10G分区,并格式为ext4文件系统;    (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;    (2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳; [root@centos7study&nbs…

    Linux干货 2016-08-29
  • 文件、目录练习

    将/etc/issue文件的内容转换为大写保存到/tmp/issue.out文件中: 将当前系统登录用户信息转换为大写后保存至/tmp/who.out文件中: 将/root/下文件列表,显示成一行,文件名之间用空格隔开: file1文件的内容为“1 2 3 4 5 6 7 8 9 10”计算出所有数字的总和: 处理字符串“xt.,| 1 jr#!$mn 2 …

    Linux干货 2016-08-05
  • 编译安装dropbear和使用

    一、概念 Dropbear是一个相对较小的SSH服务器和客户端。它运行在一个基于POSIX的各种平台。 Dropbear是开源软件,在麻省理工学院式的许可证。 Dropbear是特别有用的“嵌入”式的Linux(或其他Unix)系统,如无线路由器。 二、功能 dropbear实现完整的SSH客户端和服务器版本2协议。它不支持SSH版本1 的向后兼容性,以节省…

    Linux干货 2016-10-04
  • 文件压缩,解压缩及归档

        在Linux的环境中,压缩文件的扩展名大多是:“*.tar, *.tar.gz, *.gz, *.Z, *.bz2, *.xz”,因为 Linux 支持的压缩指令非常多,且不同的指令所用的压缩技术并不相同,当然彼此之间可能就无法互通压缩/解压缩文件,当你下载到某个压缩文件时,自然就需要知道该文件是由哪种压缩指令…

    Linux干货 2016-08-18
  • 马哥教育网络班20期+第3周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。  who | cut -d' ' -f1 | sort -u 2、取出最后登录到当前系统的用户的相关信息。 last | head …

    Linux干货 2016-06-26
  • 初识Linux之——Linux是如何诞生的

    初识Linux之——Linux是如何诞生的 对于大多数初次接触Linux的童鞋,可能会非常好奇什么是Linux?它是做什么的?为什么那么多高手都喜欢Linux?Linux是如何产生出来的呢?本文将为大家解答释疑,让大家对Linux有一个清晰的概念。 Linux是什么 简单来说,如Windows7、Windows10、安卓、IOS等,Linux是一个计算机操作…

    Linux干货 2016-10-14