开篇
当我们在linux上输入命令 ll
时,会显示当前文件夹下的所有文件(夹)的信息,如下图所示:
后面几列都是比较好理解的,关键是第一列代表什么意思,相信很多人在最开始跟我一样也有相同的疑惑,接下来我就详细说一下。
是什么
其实它们代表的是当前文件是什么类型以及不同的用户对这些文件有什么操作权限
比如我们拿如下一行举例:
drwxr-xr-x. 3 root root 4096 Nov 21 17:22 scl
第一列(drwxr-xr-x)主要由两部分组成:
-
第一个字符(上面所示的第一个d)代表当前的文件类型,常用的有以下三个:
d ---- 代表当前是一个文件夹
l ---- 代表当前是一个文件
- ---- 代表当前是一个链接文件 -
后面9个字符代表当前文件的操作权限,其中每三个字符为一组(rwx r-x r-x),这三种组分别对应于该文件(夹)所有者(u)、所有者所在的组(g)、其他人(o)分别具有的权限,其中:
r ---- 代表具有读(read)权限
w---- 代表具有写(write)权限
x ---- 代表执行权限
- ---- 代表不具备对应的权限对于目录来说:
r ---- ls
w---- touch mkdir rm rmdir
x ---- cd
对于文件来说:
r ---- cat more less head tail
w---- vi、vim
x ---- 脚本,shell(比如rwx代表同时具有读写执行三种权限;r-x代表具有读、执行权限,没有写权限)
如何修改一个用户的文件操作权限
我们一般用chmod(表示change mode)指令来修改一个用户的权限(只有root用户和该文件的所有者才有使用该命令的权限):
格式为:chmod [options] mode files,例如:
chmod u-x package/ #给package的所有者去除对文件的执行权限
其中 u 代表用户类型,可选有:
- u ---- 所有者(user)
- g ---- 组(group)
- 0 ---- 其他(other)
-代表对应的操作(赋予/移除):
- - ---- 代表移除权限
- + ---- 代表增加权限
x代表权限类型:可选的为r(读)、w(写)、x(执行)
比如:
chmod u+x package/
代表给package的所有者增加执行权限
数字表示权限
以上的增减权限的方法一次只能操作一个用户,相对来说还是不太方便,所以linux还给我们提供了一种用数字表示权限的方法:
- r=4,w=2,x=1,-=0
- 想要给用户提供什么权限,就把对应的权限的数字加起来即可
比如:
chmod 751 package/ #给package的属主分配读、写、执行(7)的权限,给package的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
在上面的命令中:三个数字按照顺序分别代表(user、group、other)所赋予的权限,因为 7 = 4+2+1 ,所以user所有的权限是读写执行;5=4+0+1,所以group所有的权限是读和执行;1 = 0+0+1,所以其他用户所有的权限是执行
why 0 1 2 4
为什么数字选用的是0 1 2 4 而不是0 1 2 3 呢?
这是是因为0 1 2 4这四个数字每三个组合起来得到的值都是不同的,也就是说对于不同的权限,会分别有不同的数字表示,例如 7(读、写、执行),5(读、执行),3(写、执行)等;但是0 1 2 3 就会出现相同的情况(0+0+3 = 0+1+2)。
修改文件的所有者
chown [user] [file]
这个命令只有root才有执行权限,即使是文件的所有者也不能使用这个命令
修改文件的所属组
chgrp [group] [file]
这个命令也是只有root才有执行权限,即使是文件的所有者也不能使用这个命令
同时修改所有者和所属组
chown [user]:[group] [file]
这个命令也是只有root才有执行权限,即使是文件的所有者也不能使用这个命令