Linux常用命令学习笔记:chmod

1. 命令概述

  • 命令名称chmod (英文全拼:change mode)
  • 核心功能:更改文件或目录的访问权限,控制文件所有者(Owner)、所属组(Group)和其他用户(Other Users)对文件的读写执行权限。
  • 执行权限:只有文件所有者超级用户(root) 可以修改文件或目录的权限。

2. 语法格式

# 语法一:使用权限模式
chmod [选项] 权限模式 文件...

# 语法二:参照另一个文件的权限
chmod [选项] --reference=参考文件 文件...

3. 常用选项

选项说明
-c仅在权限确实被更改时,才显示更改信息。
-f不显示错误信息(静默模式)。
-v显示权限变更的详细资料。
-R递归处理,对目录及其下的所有文件和子目录进行相同的权限变更。
--help显示辅助说明。
--version显示版本信息。

4. 权限基础:三级用户身份

Linux 权限针对三种用户身份进行设置:

身份代号说明
所有者u (user)文件的主人。
所属组g (group)文件所属用户组的成员。
其他人o (others)既不是所有者,也不在文件所属组内的用户。
所有人a (all)以上三者皆是,即 u+g+o

5. 两种权限设置方法

方法一:符号模式(直观,用于调整)

格式:[用户身份][操作符][权限]

1. 操作符 (Operator)

操作符说明
+增加权限
-移除权限
=精确设置权限,重置指定身份的所有权限

2. 权限 (Permission)

权限说明
r (read)权限(查看文件内容,列出目录内容)
w (write)权限(修改文件内容,在目录中增删文件)
x (execute)执行权限(运行程序,进入目录)
X (special execute)特殊执行权限:仅当目标是目录已有执行权限时才赋予 x 权限。

符号模式实例

# 给所有用户增加读权限
chmod a+r file1.txt

# 给文件拥有者增加可执行权限
chmod u+x ex1.py

# 设置拥有者和组可写,其他人不可写
chmod ug+w,o-w file1.txt file2.txt

# 精确设置:所有者有读写执行,组和其他人只有读权限
chmod u=rwx,go=r file1.txt

# 递归设置目录下所有文件为任何人可读
chmod -R a+r *

方法二:八进制数字模式(精确,常用)

使用3位八进制数字分别代表 u(所有者)、g(组)、o(其他人) 的权限。

权限数字对应表

权限数字二进制说明
r (读)4100读权限
w (写)2010写权限
x (执行)1001执行权限

组合计算:将所需权限的数字相加。

  • rwx = 4+2+1 = 7 (读+写+执行)
  • rw- = 4+2+0 = 6 (读+写)
  • r-x = 4+0+1 = 5 (读+执行)
  • r-- = 4+0+0 = 4 (只读)

八进制模式常用实例

# 755: 所有者rwx(7), 组和他人r-x(5)
# 常见于目录和可执行程序
chmod 755 file
# 效果: rwxr-xr-x

# 644: 所有者rw-(6), 组和他人r--(4)
# 常见于普通文件、网页文件等
chmod 644 file
# 效果: rw-r--r--

# 700: 所有者rwx(7), 组和他人无权限(0)
# 私有文件或目录
chmod 700 file
# 效果: rwx------

# 777: 所有者、组、他人均有rwx权限(7)
# 最高权限,慎用!
chmod 777 file
# 效果: rwxrwxrwx

# 775: 所有者rwx(7), 组rwx(7), 他人r-x(5)
# 用于协作目录,组内成员可修改
chmod 775 directory
# 效果: rwxrwxr-x

6. 特殊权限位(扩展)

在三位数字前可加第四位数字设置特殊权限:

  • 4 (SetUID): 使文件在执行时,以文件所有者的权限运行。
  • 2 (SetGID): 使文件在执行时,以文件所属组的权限运行;或使目录下新建文件的所属组继承该目录的组。
  • 1 (Sticky Bit): 常用于目录(如 /tmp),目录内的文件只有文件所有者才能删除/重命名
# 使程序具有root权限(SetUID)
chmod 4755 filename
# 效果: rwsr-xr-x

# 设置粘滞位,保证目录内文件安全
chmod 1777 /tmp/shared_dir
# 效果: rwxrwxrwt

7. 实用命令组合

# 递归设置网站目录权限(所有者可读写执行,组和其他人只读执行)
chmod -R 755 /var/www/html/

# 递归设置网站数据文件权限(所有者可读写,组和其他人只读)
chmod -R 644 /var/www/html/*.html

# 结合find命令,仅对目录添加执行权限(允许用户进入)
find /path/to/dir -type d -exec chmod a+x {} \;

# 结合find命令,仅对文件移除执行权限
find /path/to/dir -type f -exec chmod a-x {} \;

小结

  • 符号模式 (u/g/o/a + +/-/= + r/w/x):适合微调现有权限。
  • 八进制模式 (755644 等):适合精确设置权限,脚本中最常用。
  • 递归选项 -R:修改目录权限时务必小心,确保理解其影响范围。
  • 权限原则:遵循最小权限原则,只授予必要的权限,保障系统安全。

作 者:南烛
链 接:https://www.itnotes.top/archives/199
来 源:IT笔记
文章版权归作者所有,转载请注明出处!


上一篇
下一篇