和其他用户权限。
一个八进制数字可以表示三个二进制数字,意味着可以用二进制位表示一个权限标志。
例如:如果一个文件的权限是755
7 --> 111(0b)
5 --> 101(0b)
5 --> 101(0b)
# 这三个二进制数字从左到右分表表示读、写、执行三种权限属性。如果该位的状态为1表示具备对应的权限。
例如:给文件所有者读写执行权限,所见所属组读权限,其它用户读权限
chmod 754 file_name
3、文件的三种特殊权限
SUID权限
作用:允许一个普通用户以该文件所有者的权限来执行该文件。
例如:
普通用户使用 passwd
命令修改自己的密码时,需要访问 /etc/shadow
文件,但是该文件只有 root 用户才有权限访问。
为了允许普通用户修改自己的密码,passwd
程序需要拥有 SUID 权限,这样普通用户在运行 passwd
程序时,就会暂时获得 root 用户的权限,可以访问 /etc/shadow
文件并修改自己的密码。
ehigh@ubuntu:~$ ll /etc/shadow
-rw-r----- 1 root shadow 1697 5月 24 2022 /etc/shadow
ehigh@ubuntu:~$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 68208 7月 15 2021 /usr/bin/passwd
SGID权限
作用:让用户在运行某些程序时暂时获得程序所属组的权限。
例如:需要多个用户共享一个目录并保持目录下文件的访问权限时非常有用
Sticky Bit权限
作用:该目录下的文件只能由文件的所有者、目录的所有者以及超级用户删除或移动,其他用户无法删除或移动该目录下的文件。
例如:linux系统的/tmp
这个临时文件目录就设置了stick bit权限,只允许文件所有者删除这个文件。
ehigh@ubuntu:~$ ll -d /tmp/
drwxrwxrwt 24 root root 4096 3月 13 09:20 /tmp/
4、三个特殊权限的设置
SUID权限设置
如果文件设置了 suid 权限,则在文件所有者的可执行权限的位置上会显示一个 s
字符。
# 方法一:字符法:u+s
chmod u+s filename
# 方法二:先写出传统权限 然后再加4
# 比如: 传统权限是755 加suid权限后: 4755 ---> rwsr-xr-x
chomod 4755 filename
SGID权限设置
如果文件设置了 sgid 权限,则在文件所属组的可执行权限的位置上会显示一个 s
字符。
# 方法一:字符法:g+s
chmod g+s filename
# 方法二:数字法: 2
# 比如:传统权限是755 加sgid权限后: 2755 ---> rwsr-xr-x
chmod 2775 filename
Sticky Bit权限设置
如果文件设置了 sticky bit 权限,则在其他用户的可执行权限的位置上会显示一个 t
字符.
# 方法一:字符法:o+t
chmod o+t filename
#方法二:数字法 1
例如:原来的权限是744,设置了Sticky Bit权限后是 1744
chmod 1744 filename
5、文件的特殊属性
因为文件的所有者、所属组和其它这三种权限是不会限制root用户的操作。
root 用户是系统的超级管理员,具有最高的权限,可以执行任何操作,包括读、写、执行任何文件,即使该文件的权限是 000(即没有任何权限),root 用户也可以对其进行读写操作。
所以有些时候为了防止root用户误操作一些数据,可以给文件设置一些特殊属性来限制对文件的删除、修改、追加等操作,从而保护文件的安全性。
chattr工具
可以通过charrt工具来设置文件的特殊属性。
语法:
# 格式
chattr [选项] [+/-][属性] 文件名
# 选项:
-R:递归处理目录下的所有文件和子目录
-v:显示文件的属性设置过程
# + -
+:表示添加这个属性
-:表示取消这个属性
# 属性
a:
# 普通文件:表示只允许追加到文件中,不允许其它修改、删除、移动等操作;
# 目录文件:表示只能在目录中建立和修改文件,但是不允许删除文件
i:
# 普通文件:设置文件为不可修改,不可删除;
# 目录文件: 只能修改目录下文件中的数据,但不允许建立和删除文件
u:文件删除后,数据内容还保存在磁盘中,可以使用恢复工具进行恢复,常用来防止意外删除文件或目录。
例如:
# 设置文件为只读模式
ehigh@ubuntu:~/test$ sudo chattr +i a.txt
ehigh@ubuntu:~/test$ sudo rm -rf a.txt
rm: cannot remove 'a.txt': Operation not permitted
# 防止文件被删除或改变
ehigh@ubuntu:~$ sudo chattr +a a.txt
ehigh@ubuntu:~$ echo 1234 >> a.txt
ehigh@ubuntu:~$ echo 1234 > a.txt
-bash: a.txt: Operation not permitted
lsattr工具
通过lsattr可以查看某个文件是否设置了特殊属性。
例如:
root@ubuntu1804:~# lsattr test
----i---------e--- test
6、ACL
ACL:Access Control List,访问控制列表。一种在文件系统上控制文件和目录权限的机制。
允许用户在不更改所有权或权限模式的情况下,对文件和目录进行更细粒度的控制。
主要是用于实现单独给某个用户设置权限,因为chmod只能整体给文件所有者、所属组和其它用户设置权限。
setfacl工具
setfacl工具是Linux系统中用于设置文件和目录访问控制列表(ACL)的工具,ACL可以授予用户和组不同于标准Unix权限的访问权限。
例如:
设置acl:
# 格式
setfacl -m u:username:rwx filename
# 设置tom用户对A文件有读写执行的权限
root@ubuntu1804:~# setfacl -m u:tom:rwx A
删除acl:
# 删除某个文件所有的acl设置
setfacl -b filename
# 删除ACL中的一个特定条目
setfacl -x u:username filename
修改acl:
# 格式
setfacl -m u:username:rx filename
# 修改tom对A文件的权限为读和执行
root@ubuntu1804:~# setfacl -m tom:r-x A
getfacl工具
使用getfacl可以查看一个文件是否设置了acl,以及acl的详细信息。
# 格式
getfacl filename
# 查看A文件的acl信息
root@ubuntu1804:~# getfacl A
# file: A
# owner: root
# group: root
user::rw-
user:tom:rwx
group::r--
mask::rwx
other::r--
7、mask
mask 是用来限制了除了文件所有者和所属组之外的其他用户或组的权限,因为文件所有