目录
1. 文件的一般权限
1.1. 文件详细信息
1.2. 文件权限构成
示例:
1.3. chmod命令
1.3.1. 参数
示例:
扩展:隐藏权限(chattr +a)
1.4. chown命令
示例:
2. 特殊权限
2.1. 概述
2.2. SUID权限
2.3. SGID 权限
2.4. Sticky Bit权限
2.5. 设置特殊权限
3. ACL 权限
3.2. ACL权限管理命令
示例:
3.3. 删除acl权限
4. 权限掩码umask
4.1. 新建文件权限与umask关系
4.2. 查看默认umask值
4.3. 修改默认umask
1.2.1. 权限针对三类对象定义
owner 所有者(属主),缩写u
group 所属组,缩写g
other 其他人,缩写o
1.2.2. 访问者三种权限
1.2.3. 组成
1.2.4. 文件与目录权限含义
注意:root账户不受文件权限的读写限制,执行权限受限制
例1:写出下列文件的字符权限
764 : rwx rw- r--
642: rw- r-- -w
153: --x r-x -wx
731: rwx -wx --x
例2:写出下列文件的数字权限
r-x rw- r-- : 564
rw- -w- -wx : 623
rw- r-- r-- : 644 (默认创建的文件权限)
rwx r-x r-x: 755(默认创建的目录权限)
作用 chmod(change mode):修改文件或目录的权限
格式:
# 格式1
chmod [选项] [ugoa][+-=][rwx] 文件或目录...
# 格式2
chmod [选项] nnn 文件或目录...`
-R:递归修改指定目录下所有文件、子目录的权限
u g o a:表示权限设置所针对的用户类别,可以是其中字母中的一个或组合,u(user)表示文件或目录的属 主(所有者);g(group)表示属组内的用户;o(others)表示其他用户;a(all)表示所有用户(即u+g+o)
+ 或 - 或 =:表示设置权限的操作动作,+代表添加;-代表取消;=表示只赋予给定的权限,并取消原有的权限。
rwx:用字符形式表示的所设置的权限,可以是其中一个字母或组合
nnn:用数字表示的权限,例如755 644 等。
修改文件权限:灵活使用命令 u g o a,+ 或 - 或 =, rwx以及 nnn。
修改目录权限:灵活使用命令 -R
命令: [root@server ~]# chattr +a t4.txt
意义:含有不能删除的隐藏权限。使用该命令后将无法删除该文件。
日常工作中常用该方法保护文件,防止被分正常删除。
查看方法:[root@server ~]# lsattr t4.txt
取消方法:[root@server ~]# chattr -a t4.txt
作用:修改文件或目录的所有者和属组(修改文件的归属对象)
格式:修改文件或目录的所属者
chown -参数 所有者 : 所属组 文件名或目录名
# 参数-R递归设置
例:将文件t1.txt所有者和属组修改为fox
[root@server ~]# chown fox:fox t1.txt
例:将目录m1下所有文件的所有者和属组修改为fox
[root@server ~]# chown -R fox:fox m1
在Linux系统中,用户对文件或目录的访问权限除了r、w、x三种一般权限外,还有SET UID(SU ID)、SET GID(SGID)、Sticky Bit(粘滞位)三种特殊权限,用于对文件或目录进行更加灵活方便的访问控制。
SUID 权限的含义:是为了让一般用户在执行某些程序的时候, 在程序的运行期间, 暂时获得该程序文件 所属者的权限。
2.2.1. 使用场景
例如:student用户要更改自己的密码
student 在执行 passwd 修改自己的密码时, 其修改的密码, 最终是需要保存到 /etc/shadow 这个文件 中, 而这个文件的权限是 --------- ,它的拥有者是 root ,也只有 root 可以“ 强制” 存储, 其他用户连看都 不行
可偏偏 student 去执行 passwd (/usr/bin/passwd) ,却可以更新自己的密码
这就是因为有 s 权限的存在,当 s权限在拥有者的权限位上时, 即如 -rwsr-xr-x 这样时, 称为 SUID 。 SUID 即 Set UID , UID 指的是拥有者的的 ID, 而这个程序 (/usr/bin/passwd) 的拥有者为(root) 。
[root@server ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 32648 8月 10 2021 /usr/bin/passwd
注意:
suid仅对二进制文件有效
在执行过程中,调用者会暂时获得该文件的所有者权限
该权限只在程序执行的过程中有效
SGID 可以用在两个方面:
文件: 如果 SGID 设置在二进制文件上, 则不论用户是谁,在执行该程序的时候,程序的所属组将会变成 该程序文件的所属组。
目录:如 果 SGID 是设置在 A 目录上, 则在 A 目录内所建立的文件或目录的所属组, 将会是此 A 目录的 所属组
注意:
一般SGID 多用在特定的多人团队的项目开发上,在系统中用的很少
Sticky Bit (SBit) 当前只针对目录有效, 对文件没有效果。
其对目录的作用:
在 具 有 SBit 的目录下, 用户若在该目录下具有 w 及 x 权限 , 则当用户在该目录下建立文件或目录 时, 只有文件拥有者与 root 才有权力删除。
例如:当 student 用户属于 A 目录的组成员或属于 other ,且拥有 wx 权限时, 可以对该目录内任 何人建立的目录或文件进行“ 删除/重命名/移动” 等操作。 如果将 A 目录加上了 Sticky Bit 权限, 则 student用户只能针对自己建立的文件或目录进行“ 删除/重命名/移动” 等操作。
为文件或目录添加三种特殊权限同样可以通过chmod命令来实施,使用“u±s”、“g±s”、“o±t”的字符权限模式 分别用于添加和移除SUID、GUID、sticky权限。
若使用数字形式的权限模式,可采用“nnnn”格式的四位八进制数字表示,其中:后面三位是一般权限的数字 表示,前面第一位则是特殊权限的标志数字:
0——表示不设置特殊权限
1——表示只设置sticky
2——表示只设置GUID权限
3——表示只设置SGID和sticky权限
4——表示只设置SUID权限
5——表示只设置SUID和sticky权限
6——表示只设置SUID和SGID
7——表示同时设置SUID、GUID、sticky3种权限
作用:给指定的用户指定目录分配指定的权限。
3.2.1. 查看ACL权限
格式: getfacl 文件名
例: [root@server ~]# getfacl t1.txt # getfacl命令
3.2.2. 设定ACL权限
格式:setfacl -参数 文件名
参数:
-m:设定 ACL 权限
给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名
给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名
-x:删除指定的 ACL 权限;
-b:删除所有的 ACL 权限;
-d:设定默认 ACL 权限。只对目录生效,指目录中新建立的文件拥有此默认权限;
-k:删除默认 ACL 权限;
-R:递归设定 ACL 权限。指设定的 ACL 权限会对目录下的所有子文件生效
例:root用户在根目录下创建目录/project及所属工作组QQgroup,所属组里面创建两个用户zhangsan和 lisi,此文件权限是770,再创建一个旁听用户 pt,给他设定/project目录的 ACL 为 r-x。
[root@server ~]# mkdir /project
[root@server ~]# useradd zhangsan
[root@server ~]# useradd lisi
[root@server ~]# groupadd QQgroup
[root@server ~]# gpasswd -M zhangsan,lisi QQgroup
[root@server ~]# chown root:QQgroup /project/
[root@server ~]# useradd pt
[root@server ~]# setfacl -m u:pt:r-x /project/
[root@server ~]# ll -d /project/
drwxr-xr-x+ 2 root QQgroup 6 10月 9 14:41 /project/
[root@server ~]# getfacl /project/
、此时,当我们在pt用户下时不具有写的权限。
# 删除指定用户的 ACL 权限
setfacl -x u:用户名 文件名
# 删除指定用户组的 ACL 权限
setfacl -x g:组名 文件名
# 删除文件的所有 ACL 权限
setfacl -b 文件名
在Linux系统中,当用户创建一个新的文件或目录时,系统都会为新建的文件或目录分配默认的权限,该默 认权限与umask值有关
新建文件的默认权限=0666-umask值 (减去)
新建目录的默认权限=0777-umask值
0666-umask值 (0022)=644
0777-umask值=755