chmod
命令是Linux中最常用的命令之一,用于更改文件或目录的权限。本文将详细介绍chmod
命令的用法,并给出具体的示例。
1. 基本语法
chmod
的基本语法如下:
chmod [options] mode file...
[options]
:可选参数,用于控制权限更改行为。mode
:要设置的权限模式。file...
:要更改权限的文件或目录。
2. 权限模式
权限模式可以用符号表示法或者数字表示法。
2.1 符号表示法
2.1.1 用户类型
u
:用户(文件所有者)。g
:组(文件所属组)。o
:其他人。a
:所有用户(等同于ugo
)。
2.1.2 权限
r
:读权限。w
:写权限。x
:执行权限。s
:设置UID/GID位。t
:粘滞位。S
:无执行权限的设置UID/GID位。T
:无执行权限的粘滞位。-
:清除权限。
2.1.3 操作
+
:添加权限。-
:移除权限。=
:设置权限(替换现有的权限)。
示例:
- 添加用户读权限:
chmod u+r file1.txt
- 移除组写权限:
chmod g-w file1.txt
- 设置所有用户执行权限:
chmod a+x file1.txt
- 清除其他人的所有权限:
chmod o-rwx file1.txt
- 设置文件所有者的设置UID位:
chmod u+s file1.txt
2.2 数字表示法
2.2.1 权限对应的数字
4
:读权限。2
:写权限。1
:执行权限。0
:无权限。
2.2.2 用户类型
400
:用户权限。200
:组权限。100
:其他用户权限。
示例:
- 设置文件所有者读写权限,组和其他人只读权限:
chmod 644 file1.txt
- 设置文件所有者和组有执行权限,其他人没有:
chmod 750 file1.txt
3. 常用选项
3.1 -R
递归更改目录及其子目录内的文件权限。
示例:
递归更改目录mydir
及其子目录内的文件权限:
chmod -R 755 mydir
3.2 -v
详细模式,显示更改权限的过程。
示例:
详细模式更改文件file1.txt
的权限:
chmod -v 755 file1.txt
3.3 -f
强制更改权限,即使文件不可写也不提示错误。
示例:
强制更改文件file1.txt
的权限:
chmod -f 755 file1.txt
3.4 -c
仅当权限改变时才更改权限。
示例:
仅当权限改变时更改文件file1.txt
的权限:
chmod -c 755 file1.txt
3.5 --preserve-root
阻止对/
目录更改权限。
示例:
阻止对/
目录更改权限:
chmod --preserve-root 755 /
3.6 --reference=FILE
按照FILE
的权限设置目标文件的权限。
示例:
按照file2.txt
的权限设置file1.txt
的权限:
chmod --reference=file2.txt file1.txt
3.7 --version
显示版本信息。
示例:
显示chmod
命令的版本信息:
chmod --version
3.8 --help
显示帮助信息。
示例:
显示chmod
命令的帮助信息:
chmod --help
4. 实战案例
4.1 更改文件权限
更改文件file1.txt
的权限为所有者读写,组和其他人只读:
chmod 644 file1.txt
4.2 更改文件权限(符号表示法)
更改文件file1.txt
的权限,添加所有者执行权限,移除组写权限,设置其他人只读权限:
chmod u+x,g-w,o-r file1.txt
4.3 递归更改目录权限
递归更改目录mydir
及其子目录内的文件权限为所有者读写执行,组和其他人只读执行:
chmod -R 755 mydir
4.4 详细模式更改文件权限
详细模式更改文件file1.txt
的权限为所有者读写执行,组和其他人只读执行:
chmod -v 755 file1.txt
4.5 强制更改文件权限
强制更改文件file1.txt
的权限为所有者读写执行,组和其他人只读执行:
chmod -f 755 file1.txt
4.6 仅当权限改变时更改文件权限
仅当权限改变时更改文件file1.txt
的权限为所有者读写执行,组和其他人只读执行:
chmod -c 755 file1.txt
4.7 按照参考文件更改文件权限
按照file2.txt
的权限设置file1.txt
的权限:
chmod --reference=file2.txt file1.txt
请注意,某些命令的选项和语法可能会因不同的Linux发行版和版本而略有不同,请根据实际情况调整命令的具体细节。