chmod g+w filename 给同组用户增加filename文件的写权限
chmod go+rw filename 给同组和组外用户增加写和读的权限
chmod g-w filename 给同组用户去除写权限
命令中间分为三部分:
第一部分
g、o 这些代表给谁修改权限,一共有4个字母可以放进去,可一个一个放,也可多个写一起,表示一起修改
u:文件拥有者
g:跟拥有者同组的用户
o:其他用户
a:所有用户,等同于ugo
第二部分
这部分里的+ 、- 这些表示增加和去除的意思
第三部分
w、rw 这些代表具体的权限,可以一个一个放,也可以多个写一起,表示一次给多种权限
r:读权限
w:写权限
x:执行权限
另一种写法
chmod 755 filename
chmod 777 filename
这种写法简洁一些,效果和前面写字母的方式是一样的,那这三个数字代表啥呢?
第一个数字代表文件拥有者的权限(相当于给u的权限), 第二个数字代表拥有者同组用户的权限(相当于给g的权限),第三个数字代表其他用户的权限(相当于给o的权限)。
那么,具体每一个数字又是怎么跟具体的权限挂钩的呢?
我们先把三种权限对应到三个数字:
r:4
w:2
x:1
空权限:0
然后需要哪个权限,就用哪个数字,如果需要一起用多个权限,就把对应的数字加起来。
比如前面例子中的7,就代表4+2+1,表示同时修改读、写、执行的权限;5代表4+1,表示同时修改读、执行的权限。
同理,如果我想同时修改读和写的权限,那就把读和写的数字加一起,4+2=6这样。
比如,chmod 756 filename,表示给文件拥有者读、写、执行三个权限,给拥有者同组用户读、执行权限,给其他用户读、写权限。
上面这个例子等同于:
chmod u+rwx filename
chmod g+rx filename
chmod o+rw filename
当然这三个命令可以合为一个 chmod u+rwx,g+rx,o+rw filename,这样写起来多麻烦啊,所以大家都习惯用数字来写,方便,当然如果只做很小的改动,用字母的方式也很简单明了。
顺便说一下,上面看到多种权限修改可以通过逗号分隔,放在一个命令里,那多个文件也可以通过空格分隔,放在一个命令里。
比如 chmod 777 filename1 filename2,就是同时对两个文件进行权限修改为777的操作。
其他参数
chmod -R 755 /dir,使用-R有递归的作用,可以使指定目录以及所有子目录都同时进行权限修改。
查看文件权限
我们常用的 ll 命令,就可以看到文件的权限,在每个文件最前面有一串符号就是,比如
-rw-r--r--
-rw-r--rwx
drwx------
这串符号分为两部分:
第一部分,就是第一个字符,要么是 - 要么是 d,代表文件类型,- 表示是文件,d 表示是目录。
第二部分,一共有3*3=9个字符,按顺序,最前面三个字符代表文件拥有者的权限,接下来三个字符代表拥有者同组用户的权限,最后三个字符代表其他用户的权限。
然后代表权限的三个字母,大家应该都熟悉了,都是些r、w、x这些,前面都讲到过了,三个字符是严格按照读、写、执行的顺序摆好位置的,如果是 - ,就表示没有权限。
比如第一个例子,-rw-r--r--,如果我们给这个文件执行以下 chmod o+wx filename,再用 ll 看一下,会发现这个文件的权限信息变成了 -rw-r--rwx。