文件权限管理

一:普通权限

-       rw-     ---     ---   .     1    root   root    1478   Mar 30 20:31    anaconda-ks.cfg
文件类型 所属者权限  所属组权限  来宾权限   acl  硬链接数   所属者   所属组  文件大小  文件最近修改时间    文件名

文件的属主属组

chown 修改属主

  • -R 递归修改
  • --reference=RFILE FIEL 参考某文件修改

chgrp 修改属组

权限

用户对文件的访问类型可分为三类:

  1. owner: 属主, u
  2. group: 属组, g
  3. other: 其他, o

文件或文件夹访问权限可分为三种:

  1. r: Readable 读
  2. w: Writable 写
  3. x: eXcutable 执行

文件权限修改命令

chmod 修改文件权限

  • --reference=:参照某文件为此文件修改权限
  • -R:递归
  •  方法一:
    • chmod who opt per file
    • who: u g o a
    • opt: + - =
    • per: r w x X:只对目录加执行权限(如果已经有执行权限的文件也会加执行权限)
  • 方法2:数字法
    • r:4
    • w:2
    • x:1

umask (掩码)+default = fiel(666)/dir(777) 

  • -p:输出时带umask
  • -S:使用mode风格显示
  • 功能:取消对应的权限
  • 对于目录:
    • default=777-umask
  • 对于文件:
    • defautl(奇数加1)=666-umask
  • 非特权用户umask是 002
  • root的umask 是 022
  • 全局设置: /etc/bashrc 用户设置:~/.bashrc

总结:文件目录权限对文件的影响

  1. 普通用户不能改文件所有者
  2. 普通用户想改所属组必须在组里
  3. 读写权限对于root不生效,但是执行权限对root生效
  4. 读权限对于二进制程序不是必须的
  5. 操作文件需要的是文件夹的权限
  6. 对目录来讲没有执行权限,不能cd进去,不能查看目录中文件的详细属性,也不能读文件

二:特殊权限

SUID、SGID和sticky权限

SUID 赋予执行者继承所属者的权限,仅对二进制文件有效,在目录上设置无意义

  • chmod u+s FILE...
  • chmod u-s FILE...

SGID 文件 :继承二进制程序所有组的权限;文件夹 :此目录新建的文件继承目录的所属组

  • chmod g+s FILE...
  • chmod g-s FILE...
  • chmod g+s DIR...
  • chmod g-s DIR...

sticky 粘滞位,给文件夹赋予权限,此目录的文件只能被所有者删除

  • chmod o+t DIR...
  • chmod o-t DIR...
[root@centos6 ~]# ll -d /tmp/
drwxrwxrwt. 31 root root 4096 Apr  2 15:16 /tmp/

特殊权限数字法设置

[root@centos6 ~]# mkdir testdir
[root@centos6 ~]# chmod 1755 testdir
[root@centos6 ~]# ll -d testdir/
drwxr-xr-t. 2 root root 4096 Apr  2 15:37 testdir

特定权限

chattr 设置文件特定权限,防止误操作

  • +i:锁定文件,不可删除,修改
  • -i:解锁文件
  • +a:锁定文件,可以追加
  • -A:锁定文件读时间,可以降低系统负载

lsattr  查看锁定文件状态

三:访问控制列表

setfacl 设定访问控制列表

  • -m u|g:USER:0|rwx FILE 添加设置acl权限
  • -x u|g:USER|GROUP 删除
  • mask:限高线 -m mask::rwx
  • -b FILE:清空所有acl权限
  • -R 递归
  • -M file.acl 批量设置
  • -X 批量删除
  • --set-file=- 参考前边的权限设置指定文件

getfacl 查看文件的访问控制列表

ACL的备份与恢复

[root@centos6 data]# mkdir dir1
[root@centos6 data]# setfacl -m u:user1:rw dir1
[root@centos6 data]# setfacl -m u:user2:r dir1  
[root@centos6 data]# getfacl -R dir1/
# file: dir1/
# owner: root
# group: root
user::rwx
user:user1:rw-
user:user2:r--
group::r-x
mask::rwx
other::r-x

[root@centos6 data]# getfacl -R dir1/ >acl.txt
[root@centos6 data]# setfacl -R -b dir1
[root@centos6 data]# getfacl -R dir1
# file: dir1
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

[root@centos6 data]# setfacl -R --set-file=acl.txt dir1
[root@centos6 data]# getfacl -R dir1                   
# file: dir1
# owner: root
# group: root
user::rwx
user:user1:rw-
user:user2:r--
group::r-x
mask::rwx
other::r-x

欢迎大家一起学习交流~

原文地址:https://www.cnblogs.com/L-dongf/p/8719363.html