Linux的文件权限和目录配置

首先来简单讲解一下用户和用户组的概念,用户组就相当于一个竞赛小组,每个组员就相当于一个用户。
文件的权限
要想了解一个文件的权限,可以通过命令 ls -l来查看,ls -al 可将当前目录下所有文件(包含隐藏文件—文件名第一个字符为“ . ” 的文件)的详细的权限和属性。当使用ls -al 命令,将出现如下形式的内容:
Linux的文件权限和目录配置
第一列有十个字符,用于表示文件的类型和权限
第一个字符表明文件的类型
d 代表是一个目录。
- 代表是一个普通文件。
l 代表是一个软链接文件。
b 表示设备文件里面的可供存储的接口设备(块链接)。
p 表示管道。
c 表示设备文件里面的串行端口设备,例如鼠标、键盘等(一次性读取设备)。
后边九个字符用于表示文件的权限。三个一组,分别表示文件所有者的权限,同用户组的权限,其他非本用户组的权限。
r 表示可读,可以用数字4表示
w 表示可写,可以用数字2表示
x 表示可执行,可以用数字1表示
- 表示无权限
需注意的是,当想要得到一个文件的可写的权限,首先得要拥有该文件可执行的权限,否则,就算有了可写的权限也是无法编辑该文件。

第二列表示有多少文件名连接到此节点(i-node)
每个文件都会将它的权限和属性记录到文件系统的i-node中,每个文件名都会连接到一个i-node,而每个i-node可能会连接了多个文件名。

第三列表示这个文件(或目录)的“拥有者账号”
第四列表示这个文件所属的用户组
第五列表示这个文件的容量大小,默认大卫为B
第六列表示这个文件的创建日期或和最近修改的日期。
第七列为该文件的文件名
Linux的文件权限和目录配置

如何改变文件的属性与权限

chgrp 改变文件所属用户组
有时候因为某些原因,可能会需要将用户从一个用户组换到另一个用户组,那么就需要用到chgrp命令来改变文件所属用户组。要被改变的组名必须要在/etc/group文件内存在才行。
选项与参数:
-R 进行递归的持续更改,即连同子目录下的所有文件和目录都一并更新成为这个用户组。

chown 改变文件的所有者
当想要改变一个文件的所有者时,可以通过chown(change own)命令来实现;需要注意的是,用户必须是已经存在于系统中的账号,也就是在/etc/passwd这个文件中有记录的用户名称才能改变。
此外,如果要连同目录下的所有文件和目录都要一并更改的话,也可以加上-R这个参数。

chmod 改变文件的权限

符号类型改变权限
前边我们已经知道了user、group、others三种身份。那么我们可以使用u、g、o分别代表这三种身份的权限。此外,a 代表all,即全部的身份。接下来就可以通过如下方式来改变文件的权限了。
Linux的文件权限和目录配置
来一一实践一下
Linux的文件权限和目录配置
首先我们可以看到test这个目录文件的权限为[rwxr-xr-x]的,在执行命令chmod u=rx,go=r 后,它的权限变成了[r-xr–r–],这里需要注意的是,这行命令是连在一起的,中间没有任何空格,没有的权限是不需要用 - 的,还有就是当两个多个身份的权限要设置成一样的的话,可以同时设置,比如go=rx
当不知道原先的文件属性,只想要增加test这个文件的每种身份的写入权利,可以通过如下指令来实现
Linux的文件权限和目录配置
可以看出,在执行指令chmod a+w test 后,每种身份都有了w的权利。而其他权利还保持原有的没有变动。
当想要去掉某个权限时只需将+ 改成 -就OK了。在这里就不多说了。

数字类型改变权限
前边已经提到Linux中的文件的基本权限有九个,然后三个一组,分别用于表示owner、group、other三种身份各自的(read、write、execute)权限。
各权限的分数对照表
r : 4
w : 2
x : 1
举个例子
Linux的文件权限和目录配置
test3这个文件的权限为 [rwxrwxr-x] ,则其分数为:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = r-x = 4+0+1 = 5
即test3的权限数字就是775,更改他的权限可以通过如下命令:
Linux的文件权限和目录配置
发现当使用命令chmod 777 test3 后,文件test3 的权限就变成了[rwxrwxrwx]。修改文件权限成功!

目录与文件的权限意义

权限对文件的重要性
到底什么是文件呢?文件是实际含有数据的地方,包括一般文本文件、数据库内容文件、二进制可执行文件等。
r(read) :可读取文件的实际内容,如读取文本文件的文字内容等。
w(write):可以编辑,新增或者修改文件的内容(不包含删除文件)。
x(execute):该文件有具有被系统执行的权限。
注意:这三种权限都是针对文件的内容的。
权限对目录的重要性
目录主要的内容是记录文件名列表,相当于文件夹。
对于目录而言r w x又有什么意义呢?
r (read contents in directory)
表示具有读取目录结构列表的权限,意思就是说,有了r 这个权限之后,就可以查看该目录下有哪些文件名
w(modify contents of dorectory)
表示具有更改该目录结构的权限,也就是拥有了执行以下操作的权利
创建新的目录或文件;
删除已经存在的目录文件(不论该文件的权限是怎样的);
将已经存在的目录或文件进行重命名;
转移该目录内的文件、目录位置
x(access directory)
目录的 x 代表的是用户能否进入该目录成为工作目录的用途,(工作目录指的就是目前所在的目录)
注意
如果在某目录下不具有 x的权限,那么你就无法切换到该目录下,也就无法执行该目录下的任何命令,即使你具有该目录的r和w权限。所以,要想执行在拥有w权限时的操作时,前提就是要拥有x,要不然给你了w权限你也无法对该目录执行增加,删除等命令。