Linux基础之权限管理
在Linux中,权限管理是通过文件系统中的权限位来实现的。
通用权限的管理
每个文件或目录都有一个所有者、一个用户组和其他用户的权限设置。主要的权限包括读取、写入和执行。
文件权限包括读、写和执行权限:
-
读权限(r):允许用户读取文件的内容或列出目录的内容
-
写权限(w):允许用户修改文件的内容或在目录中创建、删除和重命名文件
-
执行权限(x):允许用户执行文件,或允许用户进入目录
文件权限共有九个位,分为三组,每组三个位,分别为:
-
所有者权限:指定文件所有者的权限
-
所属组权限:指定文件所属组的权限
-
其他用户权限:指定除所有者和所属组以外的其他用户的权限
数字权限表示法
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
三位二进制所对应的10进制数。
修改权限chmod
- 使用数字权限表示法:
chmod 755 filename
# 将文件的权限设置为755
即所有者具有读、写、执行权限,组用户和其他用户只有读和执行权限。
- 使用符号权限表示法:
使用 u g o a
分别代表 user group other all
使用 + - =
进行权限赋值
比如:
chmod u+x filename
# 将文件的所有者权限设置为可执行
chmod g-r filename
# 将文件的组用户权限设置为不可读
chmod o=rwx filename
# 将文件的其他用户权限设置为读、写、执行
扩展权限的管理
FACL (File Access Control List) 文件访问控制列表,更细粒度地管理文件和目录的权限。
ACL 权限分配:给指定的用户指定目录分配指定的权限
当设置扩展权限之后 .
会变成 +
setfacl 设定ACL权限
-m 添加扩展权限 u:用户名 g:用户组名:权限字(rwx) 文件名
-x 取消扩展权限 u:用户名 g:用户组名 文件名
-b 还原扩展权限
getfacl 获取扩展权限列表
getfacl 文件名
比如:
要为文件example.txt设置用户smileleooo的读取和写入权限
setfacl -m u:smileleooo:rw example.txt
特殊权限的管理
- Setuid(SUID): 当执行文件时,该文件将以所有者的身份而不是执行者的身份运行。
chmod u+s filename
- Setgid(SGID): 当执行文件时,该文件将以组的身份而不是执行者的身份运行。
chmod g+s filename
- Sticky Bit: 当应用于目录时,只有目录的所有者、文件的所有者和root用户才能删除目录中的文件。
chmod +t directory
权限掩码
umask 是一个位掩码,用于确定新建文件的默认权限。它指定了在创建新文件或目录时,系统将从权限中掩码掉的位。
umask 值是一个八进制数,表示为三位数字,每个数字代表了用户、组和其他用户的权限位掩码,其中 1 表示屏蔽,0 表示保留。
例如,如果umask值为022,则新建文件的默认权限为666(rw-rw-rw-)减去022,得到644(rw-r--r--)。
umask的设置会影响新建文件的默认权限,但不会影响现有文件的权限。 umask值越低,新文件的默认权限越高。
若有错误,欢迎指正!o( ̄▽ ̄)ブ