第九章Linux文件系统权限
主要包括:文件的一般权限,特殊权限,ACL权限,权限掩码umask
文件的一般权限
文件详细信息
文件权限构成
权限针对三类对象定义
owner:所有者,缩写u
group :所属组,缩写g
other :其他人,缩写ochmod命令
chmod(change mode):修改文件或目录的权限
# 格式1 chmod [选项] [ugoa][+-=][rwx] 文件或目录... # 格式2 chmod [选项] nnn 文件或目录...`
-R:递归修改指定目录下所有文件、子目录的权限
ugoa:表示权限设置所针对的用户类别,可以是其中字母中的一个或组合,u(user)表示文件或目录的属主(所有者);g(group)表示属组内的用户;o(others)表示其他用户;a(all)表示所有用户(即u+g+o)
+或-或=:表示设置权限的操作动作,+代表添加;-代表取消;=表示只赋予给定的权限,并取消原有的权限。
rwx:用字符形式表示的所设置的权限,可以是其中一个字母或组合
nnn:用数字表示的权限[root@server ~]# touch t1.txt [root@server ~]# ll t1.txt -rw-r--r--. 1 root root 0 5月 6 17:29 t1.txt [root@server ~]# chmod +x t1.txt [root@server ~]# ll t1.txt -rwxr-xr-x. 1 root root 0 5月 6 17:29 t1.txt [root@server ~]# chmod o+w t1.txt [root@server ~]# ll t1.txt -rwxr-xrwx. 1 root root 0 5月 6 17:29 t1.txt [root@server ~]# touch t2.txt [root@server ~]# ll t2.txt -rw-r--r--. 1 root root 0 5月 6 17:27 t2.txt [root@server ~]# chmod 777 t2.txt [root@server ~]# ll t2.txt -rwxrwxrwx. 1 root root 0 5月 6 17:27 t2.txt [root@server ~]# chmod 000 t2.txt ----------. 1 root root 0 5月 6 17:27 t2.txt
chown命令
修改文件或目录的所有者和属组
修改文件或目录的所属者
chown -参数 所有者:所属组 文件名或目录名
[root@server m2]# cd ~ [root@server ~]# touch t4.txt [root@server ~]# ll t4.txt -rw-r--r--. 1 root root 0 5月 6 17:40 t4.txt [root@server ~]# chown fox:fox t4.txt [root@server ~]# ll t4.txt -rw-r--r--. 1 fox fox 0 5月 6 17:40 t4.txt
特殊权限
概述
在Linux系统中,用户对文件或目录的访问权限除了r、w、x三种一般权限外,还有SET
UID(SUID)、SET GID(SGID)、Sticky Bit(粘滞位)三种特殊权限,用于对文件或目录进行更加灵活方便的访问控制。
SUID 权限的含义:是为了让一般用户在执行某些程序的时候, 在程序的运行期间, 暂时获得该程序文件所属者的权限。
SUID权限使用场景
例如: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
SGID 权限
SGID 可以用在两个方面:
文件: 如果 SGID 设置在二进制文件上, 则不论用户是谁,在执行该程序的时候,程序的所属组将会变成该程序文件的所属组。
目录:如 果 SGID 是设置在 A 目录上, 则在 A 目录内所建立的文件或目录的所属组, 将会是此 A目录的所属组
注意
一般SGID 多用在特定的多人团队的项目开发上,在系统中用的很少
Sticky Bit权限
Sticky Bit (SBit) 当前只针对目录有效, 对文件没有效果。
其对目录的作用:
在 具 有 SBit 的目录下, 用户若在该目录下具有 w 及 x 权限 , 则当用户在该目录下建立文件或目录时, 只有文件拥有者与 root 才有权力删除。
例如:当 student 用户属于 A 目录的组成员或属于 other ,且拥有 wx 权限时, 可以对该目录内任何人建立的目录或文件进行“ 删除/重命名/移动” 等操作。 如果将 A 目录加上了 Sticky
Bit 权限, 则 student用户只能针对自己建立的文件或目录进行“ 删除/重命名/移动” 等操作。
ACL权限
给指定的用户指定目录分配指定的权限。
查看ACL权限
getfacl 文件名
[root@server ~]# touch temp.cfg [root@server ~]# getfacl temp.cfg # getfacl命令 # file: temp.cfg # owner: root # group: root user::rwgroup:: r-- other::r--
设定ACL权限
setfacl -参数 文件名
-m:设定 ACL 权限 给用户设定 ACL 权限:setfacl -m u:用户名:权限 指定文件名 给用户组设定 ACL 权限:setfacl -m g:组名:权限 指定文件名 -x:删除指定的 ACL 权限; -b:删除所有的 ACL 权限; -d:设定默认 ACL 权限。只对目录生效,指目录中新建立的文件拥有此默认权限; -k:删除默认 ACL 权限; -R:递归设定 ACL 权限。指设定的 ACL 权限会对目录下的所有子文件生效
删除acl权限
# 删除指定用户的 ACL 权限 setfacl -x u:用户名 文件名 # 删除指定用户组的 ACL 权限 setfacl -x g:组名 文件名 # 删除文件的所有 ACL 权限 setfacl -b 文件名
权限掩码umask
新建文件权限与umask关系
在Linux系统中,当用户创建一个新的文件或目录时,系统都会为新建的文件或目录分配默认的权限,该默认权限与umask值有关
新建文件的默认权限=0666-umask值 (减去)
新建目录的默认权限=0777-umask值查看默认umask值
[root@server ~]# umask 0022 0022 [root@server ~]# touch file1 [root@server ~]# mkdir dir1 [root@server ~]# ll -d file1 dir1 drwxr-xr-x. 2 root root 6 5月 6 18:23 dir1 # 755 -rw-r--r--. 1 root root 0 5月 6 18:23 file1 # 644
修改默认umask
[root@server ~]# umask 000 # 临时修改 [root@server ~]# touch file2 [root@server ~]# mkdir dir2 [root@server ~]# ll -d file2 dir2 drwxrwxrwx. 2 root root 6 5月 6 18:26 dir2 -rw-rw-rw-. 1 root root 0 5月 6 18:25 file2