关于Linux文件权限,常用chown、chmod等命令调整它的属主、属组、权限等,由于使用简单,在此不描述。

我们讨论一下较难的一些权限因素:umask、suid、guid、bit、chattr、acl等情形

、umask

Linux系统默认目录最大权限  777

Linux系统默认文件最大权取  666

每个用户都有umask   /etc/profile   ~/.profile ~/base_profile

例如

用户umask 002

目录:777-002=775   rwxrwxr-x

文件: 666-002=664     rw-rw-r—

用户umask 020

目录:777-020=757   rwxr-xrwx

文件: 666-020=646     rw-r—rw-


⑵、suid        s权限属性出现在文件属主执行权限位

针对二进制文件(命令),如果文件设置了执行权限和suid属性,所有

执行该文件的用户都使用该文件属主权限,而不是执行用户的权限

显示结果:rws 读写执行+suid   rwS 读写 文件执行权限未设置,suig不会生效

      chmod u+s  /tmp/aaa                     chmod 4775  /tmp/aaa


⑶、sgid               s权限属性出现在目录或文件的属组执行权限位

二进制文件,执行时用文件属主的组权限,前提是文件属主和属组都有执行权限

目录,用户有该目录的rx权限,用户在此目录下的有效组权限是该目录的属权限,

例如在此目录建立的文件或目录,组属性是目录的组属性,而不是执行者的组属性

      chmod g+s  /tmp/aaa                     chmod 2775  /tmp/aaa


⑷、sbit              仅针对目录,用户在此目录下建立的目录和文件,仅自己或root才

能删除

       chmod o+t   /tmp/aaa           chmod 1775  /tmp/aaa


⑸、隐藏权限chattr lsattr

      chattr + - =  a 只能新增,不能删除内容

                    i  不能删除、改名、新增和写入内容(通过连接档也不行)、

      lsattr -a   显示隐藏属性

             -r   递归到目录

             -d   目录自身(如果参数是目录)


⑹、acl权限在/etc/fstab里加载acl选项支持

       setfacl -m  设定   setfacl u:user1:rw file1

               -x  删除   setfacl u:user1:w file1

               -b 删除所有ACL参数

              -R 递归

              -k  移除预设参数

              -d 预设参数,仅针对目录

        getfacl file1   9个权限位后有个+,代表该文件有ACL参数