Linux中的权限管理

权限,组,命令

用户组

Linux 系统中的目录和文件的访问身份分为 user, group, others, all,分别简写为 u, g, o, a。

  • user (u): 文件的所有者
  • group (g): 文件所有者所在组的其他成员
  • others (o): 不在所有者所在组的其他用户
  • all (a): 代表所有用户

当某个用户创建一个文件后,这个文件的所有者为该用户,所在组则为该用户所在的组(直至所有者或所在组被修改)。

组命令

修改文件属性的常用命令:

  • chgrp
  • chown
  • chmod
  • umask

chgrp

chgrp 命令用于变更文件或目录的所属群组。

1
2
chgrp [OPTION]… GROUP FILE…
chgrp [参数]… [所在组] 文件或目录

将文件的所在组修改为 www

1
chgrp www install.sh

chown

chown 命令用于改变文件拥有者。

1
2
chown [OPTION]… [OWNER][:[GROUP]] FILE…
chown [参数]… [所有者][:[所在组]] 文件或目录

将文件的所有者及所在组修改为 www

1
chown www:www install.sh

chmod

Linux/Unix 的文件调用权限分为三级:文件拥有者、群组、其他。利用 chmod 可以控制文件如何被他人调用。

使用权限: 所有使用者。

1
2
chmod [OPTION]… MODE[,MODE]… FILE…
chmod [参数]… [模式][,模式] 文件或目录

详细操作见下方文件权限。

umask

umask 用来设定权限掩码。权限掩码是由 3 个八进制的数字组成,将现有的权限减掉权限掩码后,即可产生建立文件时预设的权限。

1
umask [-S][权限掩码]

当前的存取权限:

1
2
umask -S
u=rwx,g=rwx,o=rx

假设umask 为 002,减掉权限掩码后,当前的存取权限即为 775 (u=rwx, g=rwx, o=rx)。

文件权限

在 Linux 中可以使用 llls -l 命令来显示一个文件的属性以及文件所属的用户和组,如:

1
2
3
4
$ ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2018 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2018 boot

第一个字符代表这个文件的类型(如目录、文件或链接文件等):

  • 当为 [d] 则是目录
  • 当为 [-] 则是文件
  • 若是 [l] 则表示为连结档 (link file)
  • 若是 [b] 则表示为装置文件里面的可供储存的接口设备 (可随机存取装置)
  • 若是 [c] 则表示为装置文件里面的串行端口设备,例如键盘、鼠标 (一次性读取装置)

接下来的字符中,以三个为一组,且均为『rwx』的三个参数的组合:

  • [r] 代表可读 (read)
  • [w] 代表可写 (write)
  • 代表可执行 (execute)
  • [-] 代表无权限

权限分组:

  • 第一组为『文件拥有者的权限』
  • 第二组为『同群组的权限』
  • 第三组为『其他非本群组的权限』

修改文件权限

修改文件的权限用命令 chmod 来执行,有两种权限定义方式:数字方式和符号方式。

数字方式修改文件权限

权限值对应:

  • read (r): 4
  • write (w): 2
  • execute (x): 1

权限设置为:

  • 所有者可读可写可以执行
  • 同组可读可执行不可写
  • 其他组的用户可读

此时符号权限为 -rwxr-xr--,则权限的分数应为 [4+2+1][4+0+1][4+0+0]=754

1
chmod 754 install.sh

符号方式修改文件权限(直接使用+,-,=

权限设置为 -rwxr-xr--,同上数字方式:

1
chmod u=rwx,g=rx,o=r install.sh

其他组用户删除可读权限:

1
chmod o-r install.sh

所有用户增加执行权限:

1
chmod a+x install.sh

特殊权限

  • setuid
  • setgid
  • sticky bits


Linux中的权限管理
https://weihehe.top/2024/07/17/Linux中的权限管理/
作者
weihehe
发布于
2024年7月17日
许可协议