Chmod数字权限表示法UNIX/Linux命令

时间:2020-01-09 10:45:56  来源:igfitidea点击:

chmod命令根据模式更改每个给定文件的文件模式位,该模式位可以是要进行的更改的符号表示,也可以是代表新模式位的位模式的八进制数。

chmod永远不会更改符号链接的权限; chmod系统调用无法更改其权限。
这是没有问题的,因为从不使用符号链接的权限。
但是,对于命令行上列出的每个符号链接,chmod都会更改指向文件的权限。
相反,chmod会忽略在递归目录遍历期间遇到的符号链接。

UNIX/Linux chmod命令

通过对以下零个或者多个进行"或者"运算而创建的位掩码:

Octal模式编号描述
0400允许所有者阅读
0200允许所有者写
0100允许所有者执行文件并在目录中搜索
0040允许小组成员阅读
0020允许小组成员写作
0010允许组成员执行文件并在目录中搜索
0004允许所有人或者世界阅读
0002允许每个人或者全世界写作
0001允许每个人或者全世界执行文件并在目录中搜索
1000设置粘性位
2000设置setgid位
4000设置setuid位

上述模式编号中的第一位数字用于设置setuid,setgid或者粘滞位。
所有者,组和世界的每个剩余数字设置权限如下:

  • 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 0700 file.txt
  • 0使用set setuid,setgid或者粘滞位
  • 7所有者的完全权限(rwx = 4 + 2 + 1 = 7)
  • 0删除组权限(= 0 + 0 + 0 = 0)
  • 0删除世界权限(= 0 + 0 + 0 = 0)