TangWei's Studio

Linux文件权限详解

Word count: 1,607 / Reading time: 6 min
2018/04/04 Share

Linux文件权限详解

Linux系统中不仅是对用户与组根据UID,GID进行了管理,还对Linux系统中的文件,按照用户与组进行分类,针对不同的群体进行了权限管理,用他来确定谁能通过何种方式对文件和目录进行访问和操作。

一、文件权限

1.文件的权限针对三类对象进行定义

  • r:读取文件内容

  • w:修改文件内容

  • x:执行权限对除二进制程序以外的文件没什么意义

2.每个文件针对每类访问者定义了三种主要权限

  • r:Read 读

  • w:Write 写

  • x:eXecute 执行

另 X:针对目录加执行权限,文件不加执行权限(因文件具备执行权限有安全隐患)

注意:root账户不受文件权限的读写限制,执行权限受限制

3.对于文件和目录来说,r,w,x有着不同的作用和含义

针对文件:

  • r:读取文件内容

  • w:修改文件内容

  • x:执行权限对除二进制程序以外的文件没什么意义

针对目录:

目录本质可看做是存放文件列表、节点号等内容的文件

  • r:查看目录下的文件列表

  • w:删除和创建目录下的文件

  • x:可以cd进入目录,能查看目录中文件的详细属性,能访问目录下文件内容(基础权限)

enter image description here

4.用户获取文件权限的顺序:首先看是否为所有者,如果是,则后面权限不看;再看是否为所属组,如果是,则后面权限不看。

二、修改文件访问权限的方法

chmod 修改权限 change mode

1.mode法

格式:chmod who opt per file

  • who:u g o a(all)

  • opt:+ – =

  • per:r w x X

2.数字法

格式:chmod XXX file

  • rwx rw- r–

  • 111 110 100

  • 7 6 4

  • r:4

  • w:2

  • x:1

例:chmod 764 file 给file文件添加 rwxrw-r– 权限

chmod -R +X dir 给dir目录添加X执行权限,dir目录下文件不添加执行权限

(如果dir目录下有文件已具备执行权限,则添加该文件执行权限)

三、UMASK值

作用:取消对应的权限,影响创建文件和目录的默认权限

对目录:

  • umask+default=777(dir)

对文件:

  • 666-umask:观察结果,如果有奇数,奇数位+1,偶数不变

四、三种特殊权限suid、sgid、sticky(sticky权限工作环境中相对常用)

1.suid

作用:给一个用户继承二进制程序所有者拥有的权限

suid权限位 位于所有者的执行权限位上,如果一个文件具有suid权限,则所有者执行位为s,文件表现为红色背景

例:ll /usr/bin/passwd

enter image description here

给file文件增加suid权限

  • chmod u+s file

  • chmod 4755 file suid数字法表示为4

suid只适合作用在二进制程序上

2.sgid

作用1:给一个用户继承二进制程序所有组拥有的权限

sgid权限位 位于所有组的执行权限位,如果一个文件具有suid权限,则所有组的执行位为s,文件表现为黄色背景

例:ll which cat
enter image description here

给file文件增加sgid权限

  • chmod g+s file

  • chmod 2755 file sgid数字法表示为2

作用2:作用在目录上时,使一个目录下的新建的文件继承目录的所属组

3.sticky

作用:作用于目录上,此目录的文件只能被所有者删除

sticky权限位 位于其他的执行权限位上,如果一个文件具有sticky权限,则其他的执行位为t,目录表现为绿色背景

例:ll -d /tmp
enter image description here

给dir目录添加sticky权限

  • chmod o+t dir

  • chmod 1777 dir sticky数字法表示为1

五、ACL访问控制列表

作用:实现更加灵活的权限管理,打破了三类用户的权限管理

1.添加ACL权限

  • setfacl -m u:wang:0 file 使wang账户对指定file文件无权限

  • setfacl -m u:mage:rw file 使mage账户对指定file文件有读写权限

  • setfacl -m g:g1:rw file 使g1组对指定file文件有读写权限

  • getfacl file 查看指定file文件的ACL权限

ACL权限执行顺序类似于用户获取文件权限的顺序,getfacl顺序从上到下执行,一旦生效,下面的将不再生效(如果属于多个组,权限累加)

2.删除ACL权限

  • setfacl -x u:wang file 删除wang账户对指定file文件的ACL权限

  • setfacl -x g:g1 file 删除g1组对指定file文件的ACL权限

3.ACL权限下的mask

设置用户对指定文件所能拥有的最大权限(限高作用)

  • setfacl -m mask::r file 使指定文件file所拥有的最大权限位读r

  • setfacl -x mask::r file 取消指定文件file的最大权限限制mask

  • setfacl -b f1 取消f1文件所有的ACL权限

ACL生效顺序:所有者、自定义用户、自定义组、其他人

4.备份和恢复ACL权限

  • getfacl -R /tmp/dir1>acl.txt 将dir1目录下ACL权限备份

  • setfacl -R –set-file=acl.txt /tem/dir 恢复dir1目录下ACL权限

六、文件权限操作的常用命令

1.chown 设置文件所有者(普通用户无法修改文件所有者)

  • -R 递归

  • user:group 同时修改所有者,所有组

2.chgrp 设置文件所属组(普通用户要想该所属组,前提是文件所有者为自己,自己在所属组中)

  • -R 递归

3.chmod 设置指定文件权限

  • -R 递归

  • –reference=f1 f2 f3 参考f1文件权限设置f2,f3文件

4,chattr 给指定文件添加保护,避免root账户误操作

  • i 锁定文件,不能删除,不能改名,不能更改内容

  • -i 解锁+i

  • -a 锁定文件,不能删除,不能改名,但可追加内容(追加重定向)

  • -a 解锁+a

  • +A 指定文件读时间atime不再更改

5.lsattr 查看指定文件是否有锁定状态

6.setfacl 设置文件ACL权限

  • -m mask::r file 使指定文件file所拥有的最大权限位读r

  • -x mask::r file 取消指定文件file的最大权限限制mask

  • -b f1 取消f1文件所有的ACL权限

  • -R –set-file=acl.txt /tem/dir 恢复dir1目录下ACL权限

7.getfacl 查看文件ACL权限

CATALOG
  1. 1. Linux文件权限详解
    1. 1.1. 一、文件权限
      1. 1.1.1. 1.文件的权限针对三类对象进行定义
      2. 1.1.2. 2.每个文件针对每类访问者定义了三种主要权限
      3. 1.1.3. 3.对于文件和目录来说,r,w,x有着不同的作用和含义
      4. 1.1.4. 4.用户获取文件权限的顺序:首先看是否为所有者,如果是,则后面权限不看;再看是否为所属组,如果是,则后面权限不看。
    2. 1.2. 二、修改文件访问权限的方法
      1. 1.2.1. 1.mode法
      2. 1.2.2. 2.数字法
    3. 1.3. 三、UMASK值
    4. 1.4. 四、三种特殊权限suid、sgid、sticky(sticky权限工作环境中相对常用)
      1. 1.4.1. 1.suid
      2. 1.4.2. 2.sgid
      3. 1.4.3. 3.sticky
    5. 1.5. 五、ACL访问控制列表
      1. 1.5.1. 1.添加ACL权限
      2. 1.5.2. 2.删除ACL权限
      3. 1.5.3. 3.ACL权限下的mask
      4. 1.5.4. 4.备份和恢复ACL权限
    6. 1.6. 六、文件权限操作的常用命令
      1. 1.6.1. 1.chown 设置文件所有者(普通用户无法修改文件所有者)
      2. 1.6.2. 2.chgrp 设置文件所属组(普通用户要想该所属组,前提是文件所有者为自己,自己在所属组中)
      3. 1.6.3. 3.chmod 设置指定文件权限
      4. 1.6.4. 4,chattr 给指定文件添加保护,避免root账户误操作
      5. 1.6.5. 5.lsattr 查看指定文件是否有锁定状态
      6. 1.6.6. 6.setfacl 设置文件ACL权限
      7. 1.6.7. 7.getfacl 查看文件ACL权限