Chmod 数字权限符号 Linux / Unix
命令 chmod 根据模式更改每个给定文件的文件模式位,模式可以是要进行的更改的符号表示,也可以是代表新模式位的位模式的八进制数。chmod 永远不会更改符号链接的权限;chmod 系统调用无法更改其权限。这不是问题,因为符号链接的权限从未使用过。但是,对于命令行上列出的每个符号链接,chmod 都会更改指向文件的权限。相反,chmod 会忽略在递归目录遍历期间遇到的符号链接。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux 或 Unix 终端 |
类别 | 系统管理 |
操作系统兼容性 | BSD • Linux • macOS • Unix |
预计阅读时间 | 3 分钟 |
Chmod 数字权限符号 Linux / Unix 命令
通过将以下零个或多个进行“或”运算而创建的位掩码:
八进制模式编号 | 描述 |
---|---|
0400 | 允许所有者阅读 |
0200 | 允许所有者写入 |
0100 | 允许所有者执行文件并在目录中搜索 |
0040 | 允许小组成员阅读 |
0020 | 允许小组成员书写 |
0010 | 允许组成员执行文件并在目录中搜索 |
0004 | 让每个人或全世界都能阅读 |
0002 | 让每个人或全世界都能写作 |
0001 | 允许所有人或全世界执行文件并在目录中搜索 |
1000 | 设置粘滞位 |
2000 | 设置 setgid 位 |
4000 | 设置 setuid 位 |
上述模式编号中的第一位数字用于设置 setuid、setgid 或 sticky 位。其余每位数字为所有者、组和世界设置权限,如下所示:
- 4= r(读取)
- 2= w (写入)
- 1= x(执行)
因此,您最终通过添加上述数字为用户创建了三元组。例如
- 要表示rwx三元组,请使用 4+2+1=7
- 要表示rw-三元组,请使用 4+2+0=6
- 表示r--三重奏使用 4+0+0=4
- 要表示r-x三元组,请使用 4+0+1=5
使用数字方法管理文件系统权限
现在您知道了每个数字的含义。让我们尝试理解 chmod 命令语法:
$ chmod #### {file1|dir1}
或
$ chmod ### {file1|dir1}
其中
- 该#字符代表一个数字,您可以跳过第一个数字。
- 每个数字代表 Linux 和 Unix 用户、组和其他人的访问级别的权限。
- 该数字是通过将每个权限的数字相加来计算的。
示例
让我们在 demo.pl 脚本上设置用户的读写权限、组和其他人的读取权限:
在这个例子中,我为用户设置了读、写和执行权限(完全权限),为组设置了读取和执行权限,并且没有为其他用户在 /projects/www/images/ 目录上的权限:
$ chmod -v 0750 /projects/www/images
仅授予用户完全权限并删除用户和其他人对 file.txt 的所有权限:
$ chmod -v 0700 file.txt
输出:
mode of 'file.txt' changed from 0664 (rw-rw-r--) to 0700 (rwx------)
其中(0700许可):
- 0– 使用设置 setuid、setgid 或 sticky bit
- 7– 所有者的完全权限(rwx = 4+2+1=7)
- 0– 删除组权限(— = 0+0+0=0)
- 0– 删除世界权限(— = 0+0+0=0)
该-v选项传递给 chmod 命令以显示每个处理的文件的诊断信息。
使用符号方法管理文件系统权限
语法是
Where,
chmod UserWhatPermission filename
- 用户为 u、g、o、a(代表用户、组、其他、全部)
- 什么是 +、-、= (用于添加、删除、设置)
- 权限为 r、w、x(读取、写入、执行)
让我们删除 helloworld.py 脚本上组和其他人的读写权限:
$ chmod go-rw helloworld.py
接下来为 get-memory-info.sh 脚本上的每个人添加执行权限:
$ chmod -v a+x get-memory-info.sh
输出:
mode of 'get-memory-info.sh' changed from 0664 (rw-rw-r--) to 0775 (rwxrwxr-x)
总结
我希望这些 chmod 命令和八进制数字权限表示法能够帮助新的 Linux 用户、系统管理员和开发人员。请使用 man 命令或 --help 选项检查以下手册页:
$ man chmod
$ chmod --help