【鸟哥的Linux私房菜-基础学习篇】Linux的文件权限与目录配置
Linux一般将文件可存取访问的身份分为3个类别,分别是owner、group、others,且3种身份各有read、write、execute等权限。
每个账号可以有多个用户组的支持。
Linux文件属性
在Linux中,默认情况下系统的所有账号的相关信息都记录在/etc/passwd
,账号密码记录在/etc/shadow
,所有的组名则记录在/etc/group
内。这3个文件是Linux系统里面账号、密码、用户组信息的集中地。
第一列:代表文件的类型和权限。该列有10个字符。第1个字符代表这个‘文件’是【目录、文件或链接文件等】。
若是[d],则是目录。
若是[-],则是文件。
若是[l],则是链接文件。
若是[b],则是设备文件中用于存储用于的接口设备。
若是[d],则是设备文件中串行端口设备,用于一次性读取的设备,比如键盘、鼠标。
注意:文件和目录的权限意义不相同。
第二列:代表有多少文件名连接到此节点(i-node)。
第四列:表示这个文件的所属用户组拥有的权限。在Linux中,一个账号会附属于一个或多个的用户组,只要账号在对应的用户组,这个组有什么权限,这个账号也会有什么权限。
#目录权限解析
drwxr-xr-- 1 test testgroup 4775 Apr 10 15:00 groups/
#文件所有者是test,拥有[rwx]权限,可以在本目录中进行任何操作
#文件所属组是testgroup,拥有[r-x]权限,可以进入本目录,但不能进行吸入的操作,没有w权限
#文件其他组,拥有[r--]权限,但没有x权限,所以此组的用户不能进入此目录
如何改变文件属性及权限
chgrp [-R] direname/filename
,改变文件的所属用户组。被改变的组名必须要在/etc/group
文件中存在才行,否则会提示invalid group name 'xxx'
的报错。
chown [-R] 账号名称 direname/filename
,改变文件的所有者。被改变的用户必须要在/etc/passwd
文件中存在才行,否则也会报错。chown [-R] 账号名称:组名 direname/filename
,同时改变文件的所有者以及所属组,所有者与用户组中间用冒号分割。chown [-R] :组名 direname/filename
改变文件的所属组,冒号前面不写内容,冒号后写要改成的组名。
文件权限改变使用chmod
命令,设置方法有两种,一种是使用数字,一种是使用rwx符号。
第一种数字:r(读)=4,w(写)=2,x(执行)=1。三种权限对应三个分值,不同分值累加的组合构成不同的读写执行权限。如chmod [-R] 777 direname/filename
。常见分值有777、644、755、640等等。
第二种rwx符号:通过u(users)、g(group)、o(others)、a(all)代表四种身份,配合上r(read)、w(write)、x(execute)三种权限。通过(=±)的方式进行身份和权限的组合,对文件权限进行改变。如chmod u=rwx,go=rx install.log
、chmod a+w install.log
、chmod a-x install.log
。
目录与文件的权限意义
权限对文件的重要性:
r(read),可读取此文件的实际内容。
w(write),可以编辑、新增或者是修改文件的内容。(不包括删除文件本身)
x(execute),此文件具有可以被系统执行的权限。Linux中的文件能否被执行是由是否具有‘x’来决定的,不是根据文件后缀名来判断,两者绝对没有关系。
权限对目录的重要性:
r(read contents in directory),表示具有读取目录结构列表的权限。换言之,对目录具有‘r’权限,则可以查询该目录下的文件名数据(但没有x也不能查看详细数据,只能看到文件名),此时使用ls
就可以将目录的内容列表显示出来。
w(modify contents in directory),这个可写入的权限对目录来说是强大的。代表我们能够更改该目录结构列表的权限。
- 新建新的文件和目录;
- 删除已经存在的文件或目录(无论文件的权限如何);
- 对已存在的文件或目录进行重命名;
- 转移目录内的文件、目录位置;
换言之,目录的‘w’权限与目录下的文件名变动有关。在实际工作中,目录一般都是给与‘rx’权限即可。
x(access directory),目录的‘x’代表用户能否进入该目录成为工作目录。能不能切换到目录中,只与是否具有‘x’权限有关。
#系统有个账号叫vbird,本账号不支持root用户组,请问vbird对这个目录有何权限?
drwxr--r-- 1 root root 4775 Apr 10 15:00 groups/
#vbird对本目录拥有[r--]权限,因此vbird可以查看该目录下的文件名列表,但不具有‘x’权限,不能切换到此目录。