shell命令:文件权限和chown、chown
看以下文件:
-rw-r--r-- 1 root root 176 Jan 6 2007 .bashrc
最前面10个字符表示文件的信息:
第1个字符是文件类型:
d
:目录;-
:文件;l
:连结档(link file);b
:装置文件里面的可供储存的接口设备(可随机存取装置);c
:装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
第2、3、4个字符表示文件所有者具有的权限
第5、6、7个字符表示文件所属组其他用户具有的权限
第8、9、10个字符表示其他组用户具有的文件操作权限
r
表示可读,w
表示可写,x
表示可执行。
chmod命令修改文件权限。
其中r
、w
、x
分别用数字4、2、1表示,如rw-
为数字6,--x
为数字1,rwx
为数字7。
chgrp
命令修改文件所属组。
chown
命令修改文件所属用户,或者直接修改组和用户:
chown 用户:组 文件名
文件夹权限
r
决定着此文件夹下文件(或目录,下同)是否能被列出(如是否能在该文件夹下成功执行ls命令)
w
决定着是否可以在此文件夹下创建(或删除或重命名,下同)新文件
x
决定着是否能够进入这个文件夹
注意:文件夹的r
、w
权限只影响本文件夹下的列出文件和创建文件,不影响子文件夹。
下面详细介绍下x
权限:
若想成功访问一个文件,需要对这个文件的访问路径上的所有文件夹有x
权限。
举例:
若要读取文件/dir/abc,除了需要对abc有r
权限,还要对dir目录有x
权限
若要写文件./file,除了需要对file有w
权限,还需要对当前目录.有x
权限,但是不需要对.的父目录有x
权限,因为这个访问路径上没有用绝对路径。
若想在文件夹./d/下创建文件f,需要对当前目录.有x
权限,对目录d有xw
权限。不需要对当前目录有w
权限,也不需要对当前目录的父目录有x
权限。
若对一个目录的权限是--x
,则:
- 能够进入目录
- 不能用
ls
列出里面的文件 - 不能在这个目录里创建新文件
- 虽然不能列出但是可以访问目录内的文件(若对文件有相应访问权限的话)
- 可以在里面子目录里用
ls
(若对子目录有r
权限),创建文件(若对子目录有wx
权限)
我们可以认为文件夹的r
或w
权限要依赖x
权限,但是实际情况更复杂,并且一般用不到所有不具体讨论了。