chmod
是一个用于改变文件或目录权限的Linux命令。权限决定了谁可以读、写或执行文件。在Linux中,文件权限分为三类用户:文件所有者(owner)、所属组(group)和其他用户(others)。chmod
命令可以为这三类用户设置不同的权限。
权限类型
- 读(r):权限值为4,允许读取文件内容。
- 写(w):权限值为2,允许修改文件内容。
- 执行(x):权限值为1,允许执行文件(对于目录来说,表示可以进入目录)。
权限值计算
权限值是将上述权限的数值相加得到的。例如:
- 读 + 写 = 4 + 2 = 6
- 读 + 执行 = 4 + 1 = 5
- 写 + 执行 = 2 + 1 = 3
- 读 + 写 + 执行 = 4 + 2 + 1 = 7
chmod 的使用方式
-
数字模式:使用数字来直接设置权限。
chmod 755 file.txt
:设置file.txt
的权限,使得文件所有者具有读、写和执行权限(7),所属组和其他用户具有读和执行权限(5)。
-
字母模式:使用字母来设置权限,适用于更直观的权限修改。
chmod u+x file.txt
:给文件所有者添加执行权限。chmod g-w file.txt
:移除所属组的写权限。chmod o+rwx file.txt
:给其他用户添加读、写和执行权限。
字母模式详解
-
u:代表文件所有者(user)。
-
g:代表所属组(group)。
-
o:代表其他用户(others)。
-
a:代表所有用户(all,即u+g+o)。
-
+:添加权限。
-
-:移除权限。
-
=:设置权限(覆盖现有权限)。
特殊权限
- s:设置UID/GID(set user ID/ group ID)。
- 当设置在执行权限上时,文件执行时将以文件所有者的权限运行。
- t:粘滞位(sticky bit)。
- 主要用于目录,只有文件所有者和超级用户可以删除或移动文件。
示例
chmod u+x,g-r,o-wx file.txt
:给文件所有者添加执行权限,移除所属组的读权限,移除其他用户的读、写和执行权限。chmod 700 file.txt
:设置file.txt
的权限,使得只有文件所有者可以读、写和执行,其他人没有任何权限。chmod g+s,o-t directory/
:给目录添加SGID位,移除其他用户的粘滞位。
使用chmod
时,需要谨慎,因为错误的权限设置可能会影响文件的安全性和可访问性。
chmod 755 file.txt
命令中的 755
是一个三位数字,分别代表文件的三种不同用户的访问权限:
-
第一个数字
7
:代表文件所有者的权限。数字7
表示所有者拥有读(4)、写(2)和执行(1)权限。权限值计算如下:- 读(r)= 4
- 写(w)= 2
- 执行(x)= 1
- 4 + 2 + 1 = 7
-
第二个数字
5
:代表文件所属组的权限。数字5
表示所属组的用户拥有读(4)和执行(1)权限,但没有写权限。权限值计算如下:- 读(r)= 4
- 执行(x)= 1
- 4 + 1 = 5
-
第三个数字
5
:代表其他用户的权限。与所属组的权限相同,其他用户也有读(4)和执行(1)权限,但没有写权限。权限值计算如下:- 读(r)= 4
- 执行(x)= 1
- 4 + 1 = 5
综上所述,chmod 755 file.txt
命令将 file.txt
文件的权限设置为:
- 文件所有者可以读、写和执行文件。
- 文件所属组的用户和文件所有者之外的其他用户可以读和执行文件,但不能写文件。
这种权限设置通常用于脚本文件,其中所有者需要读写执行权限以修改和运行脚本,而其他用户只需要执行权限来运行脚本,但不能修改它。