chmod

修改文件或目录的访问权限。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
chmod --help

Usage: chmod [OPTION]... MODE[,MODE]... FILE...
or: chmod [OPTION]... OCTAL-MODE FILE...
or: chmod [OPTION]... --reference=RFILE FILE...
Change the mode of each FILE to MODE.
With --reference, change the mode of each FILE to that of RFILE.

-c, --changes like verbose but report only when a change is made
-f, --silent, --quiet suppress most error messages
-v, --verbose output a diagnostic for every file processed
--no-preserve-root do not treat '/' specially (the default)
--preserve-root fail to operate recursively on '/'
--reference=RFILE use RFILE's mode instead of MODE values
-R, --recursive change files and directories recursively
--help display this help and exit
--version output version information and exit

Each MODE is of the form '[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+'.

文件系统权限文件系统 用来管理用户和用户组对文件或目录的访问权限的规则。

###用户

文件和目录归属于用户(owner),
分配给用户组(group),owner 是 group 的成员;
非 owner 和非 group 成员的用户属于其他用户(others);
还有所有用户(all)。

###访问权限

  • read 读取文件(当作用与目录时,仅能获取目录下所有文件的文件名);
  • write 修改文件(当作用与目录时,可以对文件执行创建、删除和重命名操作);
  • execute 执行文件(shell 脚本或可执行文件。当作用与目录时,可以获得文件内容和元信息,但不能获得文件列表)

###符号模式

r read;
w write;
x execute.

1
2
3
ls -l

-rw-r--r-- 1 hu hu 0 3月 31 15:19 test.txt

-rw-r--r-- 代表了文件类型和文件权限:

第一位 - 代表了文件为普通文件(参考 文件类型):

1
2
3
4
5
6
7
8
- Regular file
d Directory
l Symbolic link
p Named pipe
s Socket
c Device file(character device)
b Device file(block device)
D Door

后面九位分成三段,分别代表了 owner/group/others 三类用户的访问权限,- 代表没有对应权限:
owner 拥有 read/write 权限;group 和 others 只拥有 read 权限。

###数字模式

| 符号 | 代码 | 权限 |
| | | |
| r | 4/100 | read |
| w | 2/10 | write |
| x | 1/1 | execute |
| - | 0/0 | - |

-rw-r--r-- 可以用数字表示为 0644

###MODE 规则

[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+ 被用来校验 chmod 命令中的 MODE 参数。

1
2
3
4
5
6
7
8
u user 所有者
g group 所有者所在分组
o others 所有其他用户
a all 所有用户(等同于 ugo)

+ 添加权限
- 删除权限
= 设置权限

可能的 MODE 参数:

  • chmod a+w test.txt 给所有用户添加 test.txt 的写权限;
  • chmod u=rwx app.js app.js 的所有者拥有对该文件的读写和执行权限;
  • chmod 624 app.js 分别给三组用户不同的权限(u: rw, g: w, o: r);
  • chmod 755 ~/works 分别给三组用户不同的权限(u: rwx, g: rx, o: rx)。

###参考

wiki: Chmod

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2016-2020 th2zz

请我喝杯咖啡吧~

支付宝
微信