2. chmod 命令

chmod(Change Mode)是 Linux/Unix 系统中用于修改 文件或文件夹权限 的命令,通过调整权限位来控制用户对文件的访问级别(读、写、执行)。其核心作用是 管理文件系统的安全性。

Linux 中每个文件/文件夹的权限分为三类用户:

  1. 用户(User):文件拥有者(属主)。
  2. 所属组(Group):文件所属的用户组(属组)。
  3. 其他用户(Others):既非拥有者也不在所属组的用户。

每种用户可分配以下权限:

  1. r(读):查看文件内容 / 列出文件夹内容。
  2. w(写):修改文件 / 在文件夹中创建/删除文件。
  3. x(执行):运行文件(如python或shell脚本) 或 进入文件夹(如 cd)。

每个用户的权限用一个二进制的位(1bit)表示。如果该位置 0 则表示没有权限,置 1 则表示有权限。如下图所示:

文件权限

如:hello.py 文件的权限如下:

weimingze@mzstudio:~$ ls -l hello.py
-rw-rw-r-- 1 weimingze weimingze 23 May 22 11:57 hello.py

hello.py的权限就是二进制的 110(属主)、110(属组)和100(其他),用十进制的数字表示就是664

命令格式

chmod 权限 文件/文件夹

权限有两种表示方法:

  1. 使用十进制的数字,如上述 hello.py 的权限就是 664
  2. 使用符号模式(直观),即: [用户类别][操作符][权限]
    • 用户类别:
      • u:所有者
      • g:所属组
      • o:其他用户
      • a:所有用户(默认)
    • 操作符:
      • +:添加权限
      • -:移除权限
      • =:直接设置权限(覆盖原有)
    • 权限:
      • r:读权限
      • w:写权限
      • x:执行权限

示例:

weimingze@mzstudio:~$ ls -l hello.py
-rw-rw-r-- 1 weimingze weimingze 23 May 22 11:57 hello.py
weimingze@mzstudio:~$ chmod 700 hello.py  # 设置属主可以读写执行,属组和其他无权限。
weimingze@mzstudio:~$ ls -l hello.py
-rwx------ 1 weimingze weimingze 23 May 22 11:57 hello.py
weimingze@mzstudio:~$ chmod 664 hello.py
weimingze@mzstudio:~$ ls -l hello.py
-rw-rw-r-- 1 weimingze weimingze 23 May 22 11:57 hello.py
weimingze@mzstudio:~$ chmod u+x hello.py  # 设置属主加执行权限
weimingze@mzstudio:~$ ls -l hello.py
-rwxrw-r-- 1 weimingze weimingze 23 May 22 11:57 hello.py
weimingze@mzstudio:~$ chmod u-x hello.py  # 设置属主去掉执行权限
weimingze@mzstudio:~$ ls -l hello.py
-rw-rw-r-- 1 weimingze weimingze 23 May 22 11:57 hello.py
weimingze@mzstudio:~$ chmod a+x hello.py  # 设置所有用户加执行权限
weimingze@mzstudio:~$ ls -l hello.py
-rwxrwxr-x 1 weimingze weimingze 23 May 22 11:57 hello.py
weimingze@mzstudio:~$ chmod a=r hello.py  # 设置所用用户只读权限
weimingze@mzstudio:~$ ls -l hello.py
-r--r--r-- 1 weimingze weimingze 23 May 22 11:57 hello.py
weimingze@mzstudio:~$ chmod a=rw,g=rw,o=r hello.py  # 等同于 chmod 664 hello.py
weimingze@mzstudio:~$ ls -l hello.py
-rw-rw-r-- 1 weimingze weimingze 23 May 22 11:57 hello.py

注意: chmod 设置的权限对 root 用户无效。

练习:

  1. 在根文件夹内创建文件 /temp.txt
  2. 修改 /temp.txt 文件的权限为 666。
  3. 使用普通用户权限修改 /temp.txt 中的内容。
  4. 删除 /temp.txt