chmod
是 Linux 和 Unix 系统中用于更改文件或目录权限的命令。权限控制是系统安全的重要组成部分,决定了哪些用户可以读取、写入或执行文件。
目录
1.基本语法
chmod [选项] 模式 文件或目录
-
选项:常用的选项包括:
-
-R
:递归更改目录及其内容的权限。 -
-v
:显示详细信息。 -
-c
:仅在更改时显示信息。
-
-
模式:指定权限的方式,可以是符号模式(如
u+x
)或数字模式(如755
)。 -
文件或目录:要更改权限的目标文件或目录。
2.权限类型
每个文件或目录有三类权限:
-
用户(User,
u
):文件的所有者。 -
组(Group,
g
):文件所属的用户组。 -
其他(Others,
o
):其他用户。
每类权限包括:
-
读(Read,
r
):允许读取文件内容或列出目录内容。 -
写(Write,
w
):允许修改文件内容或在目录中创建/删除文件。 -
执行(Execute,
x
):允许执行文件或进入目录。
3.符号模式
符号模式使用 u
、g
、o
和 a
(所有用户)来指定权限,并通过 +
、-
和 =
来添加、删除或设置权限。
示例
-
给文件所有者添加执行权限:
chmod u+x my_script.sh
-
给所有用户添加读权限:
chmod a+r my_file.txt
-
移除组和其他用户的写权限:
chmod go-w my_file.txt
-
设置文件所有者的权限为读写,组和其他用户的权限为只读:
chmod u=rw,go=r my_file.txt
4.数字模式
数字模式使用三位或四位的八进制数表示权限:
-
第一位(可选):设置特殊权限(如
setuid
、setgid
、sticky bit
)。 -
后三位:分别表示用户、组和其他用户的权限。
每位数字由以下权限值相加:
-
4:读(
r
)。 -
2:写(
w
)。 -
1:执行(
x
)。
示例
-
设置文件所有者为读写执行,组和其他用户为读执行:
chmod 755 my_script.sh
-
7
:用户权限(4 + 2 + 1 = 读写执行)。 -
5
:组权限(4 + 1 = 读执行)。 -
5
:其他用户权限(4 + 1 = 读执行)。
-
-
设置文件所有者为读写,组和其他用户为只读:
chmod 644 my_file.txt
-
6
:用户权限(4 + 2 = 读写)。 -
4
:组权限(4 = 只读)。 -
4
:其他用户权限(4 = 只读)。
-
-
设置目录权限为所有用户可读、写、执行:
chmod 777 my_directory
5.特殊权限
-
setuid(
4
):-
当文件被执行时,进程的所有者变为文件的所有者。
-
示例:
chmod 4755 my_script.sh
-
-
setgid(
2
):-
当文件被执行时,进程的组变为文件的组。
-
对于目录,新创建的文件会继承目录的组。
-
示例:
chmod 2755 my_directory
-
-
sticky bit(
1
):-
对于目录,只有文件的所有者或 root 用户可以删除文件。
-
示例:
chmod 1777 my_directory
-
6.常用命令示例
-
赋予脚本执行权限:
chmod +x my_script.sh
-
递归更改目录权限:
chmod -R 755 my_directory
-
移除其他用户的写权限:
chmod o-w my_file.txt
-
设置文件为只读:
chmod 444 my_file.txt
7.查看文件权限
使用 ls -l
查看文件或目录的权限:
ls -l my_script.sh
输出示例:
-rwxr-xr-x 1 user group 1234 Oct 10 12:34 my_script.sh
-
第一列(
-rwxr-xr-x
)表示权限:-
-
:文件类型(-
表示普通文件,d
表示目录)。 -
rwx
:用户权限。 -
r-x
:组权限。 -
r-x
:其他用户权限。
-
总结
-
chmod
是管理文件权限的重要工具。 -
可以使用符号模式或数字模式设置权限。
-
特殊权限(如
setuid
、setgid
、sticky bit
)可以增强文件或目录的功能。