抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

基本知识

每一个文件都拥有多种类型的权限。用户(user)是文件的所有者,通常拥有所有的访问权。用户组(group)是多个用户的集合(由系统管理员指定),可能拥有文件的部分访问权。其他用户(others)是除文件所有者或用户组成员之外的任何人。

script
1
2
ls -l
# 输出: -rw-r--r--. 1 root root 9 11月 7 21:28 fuckyou.txt

第一列表明了文件类型

1
2
3
4
5
6
7
-    普通文件
d 目录
c 字符设备
b 块设备
l 符号链接
s 套接字
p 管道

接下来的9个字符可以划分为三组,每组3个字符( — — — )。对应着( 用户权限 用户组权限 其他用户权限)

有三种常见的字符

r(read)、w(write)、x(execute)

用户中有一个 setuid(S)的特殊权限,具有的是这样的: -rwS——,它表示其他用户执行本文件就像所有者执行本文件一样。

沾滞位

目录有个叫沾滞位的特殊权限,出现在其他用户权限组中的执行权限位置(x)位置。它使用 t 或 T 来表示。如果目录设置了沾滞位,只有创建该目录的用户才能删除目录中的文件,就算用户组和其他用户也有写的权限,仍无能为力。

如果没有设置执行权限,但设置了沾滞位,就是用 T;如果同时设置了执行权限和沾滞位,就是用 t。例如:

1
------rwt, ------rwT

修改文件权限

直接指定对应身份的访问权限

script
1
chmod u=rwx, g=rw, o=r filename

可以用 + 为用户、用户组和其他用户添加权限,用 - 取消权限

script
1
chmod o+x filename

给所有权限类别(u\g\o)添加可执行权限

script
1
chmod a+x filename

其中 a 表示 all

script
1
chmod a-x filename

用数字

r = 4
w = 2
x = 1

rw- = 4 + 2 = 6
r-x = 4 + 1 = 5

script
1
2
3
chmod 764 filename
# 相当于
chmod rwxrw-r--

更改所有权

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

script
1
2
3
4
chown user:group filename
# 例如:
chown slynux:users test.sh
# slynux 是用户名, users 是组名

设置沾滞位

设置有只有目录的所有者能删除文件夹里的文件,其他人即使有写权限也不能删除

script
1
chmod a+t directory_name

以递归方式设置文件权限

以递归的方式修改当前目录下的所有文件和子目录的权限。选项 -R 指定以递归的方式修改权限。用 . 指定当前工作目录。

script
1
chmod 777 . -R

以递归方式修改所有权

script
1
chmod user:group . -R

以不同的身份运行可执行文件(setuid)

script
1
2
3
4
chmod +s executable_file
chown root:root executable_file
chmod +s executable_file
./executable_file

现在,无论是谁发起调用,该文件都是以root用户的身份来执行。

评论