2023-01-25 02:25:08
在Linux中,chmod 是用于修改文件或目录权限的核心命令,支持符号模式和八进制数字模式两种权限设置方式,可精确控制用户对文件的读写执行权限。

-R:递归修改目录及其子内容的权限(需谨慎使用)。
通过符号组合增减或设置权限,适合局部微调或明确权限意图的场景。
用户类型(Who):
u:文件所有者(user)
g:文件所属组(group)
o:其他用户(others)
a:所有用户(all,等同于ugo)
操作符(Operator):
+:添加权限
-:移除权限
=:精确设置权限(覆盖原有权限)
权限类型(Permissions):
r:读取(read)
w:写入(write)
x:执行(execute)
示例:
chmod u+x script.sh # 给所有者添加执行权限chmod go-w file.txt # 移除组和其他用户的写入权限chmod a=rw myfile # 设置所有用户只有读写权限chmod u=rwx,g=rx,o=r dir # 同时设置所有者、组和其他用户的权限用三位八进制数表示所有者、组和其他用户的权限,适合设定标准权限集或批量操作。
权限对应数字:
r(读)= 4
w(写)= 2
x(执行)= 1
-(无权限)= 0
计算方式:将每个用户类型的权限值相加,得到三位八进制数。
rwx = 4 + 2 + 1 = 7
rw- = 4 + 2 + 0 = 6
r-x = 4 + 0 + 1 = 5
r-- = 4 + 0 + 0 = 4
示例:
chmod 754 filename # 所有者=rwx(7),组=r-x(5),其他=r--(4)常用权限组合:
644(rw-r--r--):所有者可读写,组和其他用户只读(普通文件默认权限)。
755(rwxr-xr-x):所有者可读写执行,组和其他用户可读可执行(可执行脚本或目录常用权限)。
777(rwxrwxrwx):所有用户全权限(不推荐,存在安全风险)。

递归修改目录及其所有子文件和子目录的权限,需谨慎使用以避免安全风险或系统问题。
示例:
chmod -R 755 my_directory/ # 将目录及其内容权限设为755注意事项:
避免误操作:
不要对系统关键目录(如/etc、/usr、/var)使用chmod -R,否则可能导致系统崩溃或服务异常。
不要滥用sudo chmod -R,以root权限递归修改可能造成不可逆损害。
区分文件和目录权限:
目录通常需要执行权限(x)以便进入和访问内容,而文件则根据类型决定权限。
推荐使用find命令分别设置目录和文件的权限:find /path/to/dir -type d -exec chmod 755 {} + # 目录设为755find /path/to/dir -type f -exec chmod 644 {} + # 文件设为644
理解目录执行权限:
目录的x权限允许用户进入目录(cd)和访问其内容(需同时有r权限)。
若目录无x权限,即使有r权限也无法进入或查看内容。
使用符号模式的场景:
局部微调权限(如仅添加执行权限)。
权限意图更清晰(如文档说明或口头交流)。
避免覆盖不必要的权限(如仅确保所有者可写)。
使用数字模式的场景:
设定标准权限集(如Web文件设为644,目录设为755)。
自动化脚本中追求简洁高效。
批量操作(如结合find命令)。
追求简洁和效率(熟悉权限数字时输入更快)。
