chmod
是 Linux/Unix 系统中用于更改文件或目录权限的重要命令。以下是关于 chmod
命令的全面说明:
Linux 文件系统中有三种基本权限: - r (read):读取权限 - w (write):写入权限 - x (execute):执行权限
这些权限分别针对三类用户: 1. 所有者 (owner/u):文件创建者 2. 所属组 (group/g):文件所属的用户组 3. 其他用户 (others/o):系统上的其他用户
chmod [选项] 模式 文件...
格式:[ugoa...][[+-=][rwxXst]...][,...]
用户类别:
u
:所有者g
:所属组o
:其他用户a
:所有用户(默认)操作符:
+
:添加权限-
:移除权限=
:设置确切权限示例:
chmod u+x file.txt # 给所有者添加执行权限
chmod g-w file.txt # 从所属组移除写入权限
chmod o=r file.txt # 设置其他用户只有读取权限
chmod a+x file.txt # 给所有用户添加执行权限
chmod u=rwx,g=rx,o=r file.txt # 设置不同用户的不同权限
用三位或四位八进制数表示权限: - 第一位(可选):特殊权限(setuid, setgid, sticky bit) - 第二位:所有者权限 - 第三位:所属组权限 - 第四位:其他用户权限
每位数字是以下值的和: - 4 (r):读取 - 2 (w):写入 - 1 (x):执行
常见权限组合:
- 7
(4+2+1):rwx
- 6
(4+2):rw-
- 5
(4+1):r-x
- 4
(4):r--
- 0
:无权限
示例:
chmod 755 file.txt # rwxr-xr-x
chmod 644 file.txt # rw-r--r--
chmod 600 file.txt # rw-------
chmod 777 file.txt # rwxrwxrwx (不推荐)
setuid (4):以文件所有者身份执行
chmod u+s file # 符号模式
chmod 4755 file # 数字模式
setgid (2):以文件所属组身份执行(文件)或继承父目录组(目录)
chmod g+s file # 符号模式
chmod 2755 file # 数字模式
sticky bit (1):只有所有者才能删除/重命名文件(常用于/tmp目录)
chmod +t dir # 符号模式
chmod 1777 dir # 数字模式
-R
或 --recursive
:递归更改目录及其内容权限-v
或 --verbose
:显示权限变更信息-c
:类似 verbose,但只在有变更时显示--reference=RFILE
:使用参考文件的权限使脚本可执行:
chmod +x script.sh
保护私密文件:
chmod 600 ~/.ssh/id_rsa
设置共享目录(组成员可读写):
chmod 775 /shared/directory
递归更改目录权限:
chmod -R 755 /web/root
复制其他文件的权限:
chmod --reference=source.txt target.txt
755
权限644
权限600
权限777
权限,这会带来安全风险使用 ls -l
命令可以查看文件权限:
ls -l file.txt
# 输出示例:-rw-r--r-- 1 user group 0 Jan 1 00:00 file.txt
第一个字段 -rw-r--r--
显示权限:
- 第一个字符:文件类型(-
普通文件,d
目录)
- 接下来三组:所有者、组、其他用户的权限