「RHCSA 红帽系统管理」4、文件权限控制

Linux 文件系统权限

权限对文件的影响对目录的影响
r (读取) 可以读取文件内容。可以列出目录的内容。
w (写入)可以更改文件内容。可以创建或删除目录中的文件。
x (执行)可以作为命令执行文件。可以 cd 目录,但是需要读取权限才能列出内容。
[root@redhat opt]# ll
总用量 0
drwxr-x--x. 2 root root 20 8月  27 18:44 aaa
-rw-r--r--. 1 root root  0 8月  27 18:40 1.txt

长列表的第一个字符表示文件类型,- 表示常规文件,d 表示目录,l 表示软链接,b 和 c 表示硬件设备等。

后面的九个字符表示文件权限,分为三组,每组三个字符,分别对应用户权限,组权限和其他用户权限。rwx 对应读取、写入、执行三种权限,如果某个字符用 – 替代,说明该类别下没有这个权限。

链接数后第一个名称表示拥有该文件的用户,第二个名称表示拥有该文件的组。

「RHCSA 红帽系统管理」4、文件权限控制

管理文件系统权限

通过 chmod 命令可以从命令行更改权限。

使用符号更改权限,命令格式为 chmod WhoWhatwhich file | directory。其中 Who 用 u、g、o、a 表示,分别代表用户、组、其他和权限;What 用 +、-、= 表示,分别代表添加、删除和精确设置;Which 用 r、w、x 表示,分别代表读取、写入和执行。

# 为 1.txt 的组添加写入权限
[root@redhat opt]# chmod g+w 1.txt
「RHCSA 红帽系统管理」4、文件权限控制

使用数字更改权限,命令格式为 chmod ### file | directory,每个 # 代表一个数字,三个数字分别代表用户、组和其他的访问级别权限。将每个权限的数值加在一起,即对应该对象的权限。

其中 4 代表读取,2 代表写入,1 代表执行。例如 rwxr-x–x 的用户权限为 4 + 2 + 1 = 7,组权限为 4 + 0 + 1 = 5,其他权限为 0 + 0 + 1 = 1,最终的数值表示为 751。

[root@redhat opt]# chmod 644 1.txt

[root@redhat opt]# ll
总用量 0
-rw-r--r--. 1 root root  0 8月  27 18:50 1.txt

在 Linux 上,权限仅适用于设置它们的文件或目录,也就是说目录中的字目录和文件不会自动继承目录的权限。使用 chmod 命令的 -R 选项可以以递归方式对整个目录树中的文件设置权限。

[root@redhat opt]# chmod -R g+rx aaa

使用 chown 命令可以更改文件和目录的用户或组所有权。

# 更改用户所有权
[root@redhat opt]# chown user01 1.txt 

# 更改组所有权
[root@redhat opt]# chown :group01 1.txt

# 同时修改用户和组所有权
[root@redhat opt]# chown user02:group02 1.txt

特殊权限

特殊权限对文件的影响对目录的影响
u+s (setUID) 以拥有文件的用户身份,而不是以运行文件的用户身份执行文件。无影响。
g+s (setGID)以拥有文件的组身份执行文件。在目录中创建的新文件,其组所有者与当前目录的组所有者匹配。
o+t (sticky)无影响。对目录具有写入权限的用户,仅可以删除其拥有的文件,无法删除或编辑其他用户拥有的文件。

对可执行文件文件的 setUID 权限,表示运行文件时以文件所有者 UID,而不是当前用户 UID 执行程序。

通常情况下所有者执行权限的字符为 x,设置 setUID 权限后由小写的 s 取代。如果所有者不具有执行权限,则显示为大写的 S。

典型的文件是 passwd。如果普通用户执行该文件,则在执行过程中该文件可以获得 root 权限,从而可以更改用户的密码。相当于临时拥有文件所有者的身份。s 权限位是一个敏感的权限,容易造成系统的安全问题,请在设置时注意。

[user01@redhat ~]$ ll /usr/bin/passwd 
-rwsr-xr-x. 1 root root 33544 3月  15 2021 /usr/bin/passwd

对目录的 setGID 权限,表示在该目录中创建的新文件,将自动继承该目录的组所有权。通常用于组协助目录,将文件从默认的专有组更改为共享组。

通常情况下组所有者执行权限的字符为 x,设置 setGID 权限后由小写的 s 取代。如果组所有者不具有执行权限,则显示为大写的 S。

[root@redhat ~]# ll /opt/aaa
总用量 0
-rw-r--r--. 1 user01 group01 0 8月   27 21:35 a1.txt

[user01@redhat ~]# ll /opt/aaa
总用量 4
-rw-r--r--. 1 user01 group01 3 8月   27 21:40 a1.txt

对可执行文件文件的 setGID 权限,表示运行文件时以文件所有者 GID,而不是当前用户 GID 执行程序。效果与设置 setUID 权限类似。

[user01@redhat ~]$ ll /usr/bin/locate 
-rwx--s--x. 1 root slocate 42248 4月  12 2021 /usr/bin/locate

对目录的 sticky 权限,表示文件的所有者才能删除该目录中的文件。

通常情况下其他执行权限的字符为 x,设置 sticky 权限后由小写的 t 取代。然后其他不具有执行权限,则显示为大写的 T。

[user01@redhat ~]$ ll -d /tmp
drwxrwxrwt. 8 root root 250 8月   27 21:52 /tmp

使用符号更改特殊权限,setUID 为 u+s,setGID 为 g+s,sticky 为 o+t。

[user01@redhat /]$ chmod g+s /opt/aaa
[user01@redhat /]$ ll -d /opt/aaa
drwxrwsr-x. 2 user01 group01 20 8月   27 21:40 /opt/aaa

使用数字更改特殊权限,则使用四位数字表示,setUID 为 4,setGID 为 2,sticky 为 1。

[user01@redhat /]$ chmod 2775 /opt/aaa
[user01@redhat /]$ ll -d /opt/aaa
drwxrwsr-x. 2 user01 group01 20 8月   27 21:40 /opt/aaa

默认文件权限

在创建新文件或目录时,系统会为其分配初始权限。其中有两个因素会影响初始权限,首先是判断要创建的是常规文件还是目录,其次是当前的 umask。

如果创建的是新目录,系统会为其分配 0777 (drwxrwxrwx) 权限;如果创建的是新文件,系统会为其分配 0666 (drw-rw-rw-) 权限。此外,shell 会话还会一个 umask,进一步限制初始设置的权限。

通过 umask 命令可以查看当前 umask 的值。

[root@redhat ~]# umask
0022

如果在 umask 中设置了一个为,则新文件中对应的权限将被清除。

例如新目录的默认权限为 0777 (drwxrwxrwx) 权限,umask 为 0022,清除权限后,新创建的目录权限为 0755(drwxr-xr-x)。

[root@redhat ~]# mkdir aaa
[root@redhat ~]# ll
总用量 4
drwxr-xr-x. 2 root root    6 8月   27 22:09 aaa

如果希望屏蔽掉其他的所有文件和目录权限,可以将 umask 的值设置为 007。

[root@redhat ~]# umask 007
[root@redhat ~]# mkdir bbb
[root@redhat ~]# ll
总用量 0
drwxrwx---. 2 root root 6 8月   27 22:26 bbb

用户的默认 umask 值由 shell 启动脚本设置,默认情况下,如果账户 UID 为 200 以上,并且用户名和主要组名相同,默认 umask 值为 002,否则为为 022。

通过 root 用户,添加名为 /etc/profile.d/local-umask.sh 的 shell 启动脚本,可以更改默认 umask 值。完成后需要注销 shell 并重新登陆,确保全局 umask 值更改生效。

总结

  • 文件具有三个应用权限的类别。文件由用户、单个组和其他用户拥有。应用最具体的权限。用户权限覆盖组权限,组权限又覆盖其他权限。
  • chmod 命令可从命令行更改文件权限,有符号和数字两种表示权限的方法。
  • chown 命令可更改文件所有权,-R 选项可以递归更改目录树的所有权。
  • 不带参数运行 umask 命令将显示 shell 的当前 umask 值。系统上的每个进程都有一个 umask。Bash 的默认 umask 在/ etc/profile和/etc/bashrc 文件中定义。
本文为原创文章,著作权归作者所有:来自「KOBIN 技术随笔」作者的原创作品,转载请标明出处。
「RHCSA 红帽系统管理」4、文件权限控制
https://blog.kobin.cn/notes/2826.html
(0)

相关文章

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

CAPTCHAis initialing...