三分钟速学文件权限管理

三分钟速学文件权限管理

三分钟速学文件权限管理

环境说明:
博客使用的linux版本:CentOS Linux release 7.7.1908 (Core)
终端语言调整:调整成汉语是为了方便学习,点击这里查看

一、文件权限管理ACL简介

1. 文件权限介绍

  1. 第一档位
  • 标识文件的属性(读写执行,分别对应r、w、x、)
  • 这里一共十个格子(10个比特位),第一个字母标识文件的类型
字母 表示文件类型
- 普通文件
d 目录,dirtectory的缩写
l 链接符号
b 块设备文件
c 字符设备文件
  • 紧接着是三组字符,分别代表文件读写执行权限,第一组文件所属用户的权限买第二组文件所属组对文件的权限,其他用户对文件的权限
  1. 第二档位:标识文件的个数,如果是目录则是该目录中文件的个数
  2. 第三档位:文件的所属用户
  3. 第四档位:文件或者目录的所属组,每一个用户都可以拥有一个或者多个组
  4. 第五档位:表示文件或者目录的大小,文件的大小使用的单位是byte,一般空目录是1024byte
  5. 第六个栏位:表示最后一次修改时间。以“月,日,时间”的格式表示,如Feb 20 10:57表示2月20日早上10:57分。
  6. 第七档位:表示文件或者目录名,加-a参数可以查看隐藏文件名

… 表示上级目录
. 表示当前目录

2. linux文件权限计算办法:

  • 从左至右,1-3位数字代表文件所有者的权限,4-6位数字代表同组用户的权限,7-9数字代表其他用户的权限。
  • 权限是由数字来表示的,读取的权限等于4,用r表示;写入的权限等于2,用w表示;执行的权限等于1,用x表示;
  • 通过4、2、1的组合,得到以下几种权限:0(没有权限);4(读取权限);5(4+1 | 读取+执行);6(4+2 | 读取+写入);7(4+2+1 | 读取+写入+执行)
  • 444 r–r--r–
    600 rw-------
    644 rw-r–r--
    666 rw-rw-rw-
    700 rwx------
    744 rwxr–r--
    755 rwxr-xr-x
    777 rwxrwxrwx
  • 创建文件默认权限 666 创建目录权限默认777
  • 权限掩码即代表拿走的权限

3.ACL介绍

ACL可以对某个文件设置该文件具体的某些用户的权限,意思就是通过ACL可以对一个文件权限做扩展,可以不同的用户对某个文件有不同的权限。

二、chmod命令 – 改变文件或目录权限

  1. chmod简介:
  2. 语法格式: chmod [参数] [文件]、
  3. 常用参数:
参数 含义
-c 若该文件权限确实已经更改,才显示其更改动作
-f 若该文件权限无法被更改也不显示错误讯息
-v 显示权限变更的详细资料
-R 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
  1. 应用实例
  • 递归修改目录下面的所有文件和子目录设置为任何人可写
chmod -R a+w *
#这里同样可以使用数字进行操作

三分钟速学文件权限管理

三、setfacl命令-设置文件ACL规则

  1. setfacl命令简介:
    改命令可以更精确的控制权限的分配,比如让某一个用户对某一个文件具有某种权限。
  2. 语法格式:setfacl [参数] [文件]
  3. 常用参数:
参数 含义
-m –modify-acl 更改文件的访问控制列表
-M –modify-file=file 从文件读取访问控制列表条目更改
-x –remove=acl 根据文件中访问控制列表移除条目
-X –remove-file=file 从文件读取访问控制列表条目并删除
-b –remove-all 删除所有扩展访问控制列表条目
-k –remove-default 移除默认访问控制列表
-d –default 应用到默认访问控制列表的操作
-P –physical 依照自然逻辑,不跟随符号链接
-v –version 显示版本并退出
-R –recursive 递归操作子目录
  1. 应用实例
    -修改文件test权限,test组用户可以查看
groupadd test #创建test组
setfacl -Rm g:test:6 test  #添加test组权限为读写
setfacl -Rm u:test:4 test #添加或者修改test用户权限为读
setfacl -x u:test  test #删除test用户的权限

三分钟速学文件权限管理

四、getfacl命令 – 显示文件或目录的ACL

  1. getfacl简介:
    getfacl命令的作用是查看文件的ACL信息。对于要查看的每一个文件和目录,getfacl命令可以显示出文件的名称,用户所有者、组群所有者和访问控制列表(ACL)。
    2.语法简介: getfacl [参数] [目录或文件]
  2. 常用参数:
参数 含义
-a 显示文件的ACL
-d 显示默认的ACL
-c 不显示注释标题
-e 显示所有的有效权限
-E 显示没有的有效权限
-s 跳过文件,只具有基本条目
-R 递归到子目录
-t 使用表格输出格式
-n 显示用户的UID和组群的GID
  1. 应用实例:
  • 查看指定文件的ACL (显示注释信息、不显示注释信息)
getfacl test
getfacl -c test

三分钟速学文件权限管理

  • 使用表格形式查看指定文件的ACL
getfacl -t test 

三分钟速学文件权限管理

五、umask命令-查看修改文件权限掩码

  1. umask 命令:umask命令可用来设定权限掩码。权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限。
  2. 语法格式:umask [参数] [权限掩码]
  3. 常用参数
参数 含义
-S 以文字的方式来表示权限掩码
-p 输出的权限掩码可直接作为指令来执行

4.应用实例

  • 使用指令”umask”查看当前权限掩码:
umask  
  • 使组用户的写权限,其他用户的读、写和执行权限都被取消:
umask u=,g=w,o=rwx
#或者
umask 750

六、特殊权限

  • 特殊权限:u+s
    • suid: 让进程不再属于它的发起者,而是属于程序文件本身。(suid只对二进制文件有效;调用者对该文件有执行权;在执行过程中,调用者会暂时获得该文件的所有者权限;该权限只在程序执行的过程中有效)
      查找passwd的程序文件位置:which passwd
      chmod u+s /usr/bin/passwd
      查看进程信息:ps -ef
      运行程序时,进程的属主是程序文件自身的权限,而不是进程发起者 u+s 4UID强制位
      chmod u[+|-]s FILENAME 如果文件原来有执行权限就显示为s,反之显示S

    • **sgid:g+s,**对于普通文件,以组的权限执行修改/usr/bin/touch的g+s,touch文件后文件所属组为root(作用于普通文件时,和suid类似);对于目录文件,目录的属组是谁,在目录下创建的文件的属组是目录的属组。

    • **sticky,o+t:**不能够删除其他用户在同目录里创建的文件,也无法修改其他用户创建的文件的内容,可删除修改自己创建的文件