本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
变更权限
1、更改文件属组(chgrp)
chgrp [-R] 属组名文件名
- -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
2、更改文件所属用户以及文件属组(chown)
chown [–R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
- -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
3、更改文件属性(chmod)
ls -al
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
首先第一个字符用来标识是文件还是目录,这里只列出两个有代表性的:
- 当为[ - ]则代表文件
- 当为[ d ]则是目录
Linux文件属性有两种设置方法,一种是数字,一种是符号。
数字类型改变文件权限
假设一个文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
- r:4
- w:2
- x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- others= --- = 0+0+0 = 0
chmod [-R] xyz 文件或目录
- xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
- -R : 进行递归(recursive)的持续变更,亦即连同此目录下的所有文件都会变更
符号类型改变文件权限
Linux有user 、group 、others三种身份。用u, g, o来代表三种身份的权限。
| 参数 | 表示 | 含义 |
|---|---|---|
| u | user | 即文件或目录的所有者 |
| g | group | 即与文件属主有相同组ID的所有用户 |
| o | others | 表示“其他用户” |
| a | all | 表示“所有用户”系统默认值 |
| 例子 | 等价于 | 含义 |
|---|---|---|
| -rwx------ | 700 | -:文件, u=rwx(读/写/执行), g=---(无权限), o=---(无权限) |
| -rw-r--r-- | 644 | -:文件, u=rw-(读/写), g=r--(读), o=r-- (读) |
| drwxrw-rw- | 766 | d:目录,u=rwx(读/写/执行), g=rw-(读/写), o=rw- (读/写) |
| drwxrwxrwx | 777 | d:文目录,u=rwx(读/写/执行), g=rwx(读/写/执行), o=rwx(读/写/执行) |
| 其中『rwx』 的三个参数的组合。其中,[ r ]代表可读(read)、[ w ]代表可写(write)、[ x ]代表可执行(execute)。 |
操作符号:
- +添加某个权限
例如给所有人添加可写入权限:
chmod a+w hello.txt
【a+w】: a 代表所有人(all),+ 代表添加权限,w 代表可以写入。
- -取消某个权限 例如给所有者(u)、所属组(g)添加可执行权限,但是其他用户(o)不可拥有执行权限
chmod ug+x,o-x 1.txt 2.txt
【ug+x,o-x】:ug 代表所有者(u)、所属组(g),+ 代表添加权限,- 代表取消权限,x 代表可执行。
拓展阅读
上文提到各权限的分数对照表:
- r:4
- w:2
- x:1
其原理是二进制数字表示:
每个文件有三组固定的权限,分别对应拥有者,所属用户组,其他用户,记住这个顺序是固定的。文件的读写执行对应字母 rwx,以二进制表示就是 111,用十进制表示就是 7。