Linux一般将文件可存取的身份分为三个类别,分别是owner/group/others,且三种身份各有read/write/execute等权限。
5.1 使用者与群组
1.文件拥有者(owner)
设置权限,只有此文件的拥有者才能查看和修改该文件
2.群组概念(group)
主要针对团队开发资源的时候,组员之间可以相互修改对方的数据,也就是组员内部共享。
3.其他人的概念(others)
万能的天神:root(最高权限)
5.2 Linux文件权限概念
5.2.1 Linux文件属性
首先,我们转换成root权限后利用ls -al指令列出所有文件详细的权限和属性(包含隐藏文件,就是文件名第一个字符为“.”的文件)
下面分别解释一下上面七个字段的相关意思:
第一个字符示例解释:
第二栏表示有多少文件名链接到此节点(i-node):
第三栏表示这个文件(或目录)的“拥有者账号”
第四栏表示这个文件的所属群组
第五栏为这个文件的容量大小,默认单位为Bytes
第六栏为这个文件的创建日期或者是最近的修改日期
第七栏为这个文件的文件名
5.2.2 如何改变文件属性与权限
先介绍几个常用于群组、拥有者、各种身份的权限之修改的指令,如下所示:
chgrp:改变文件所属群组
注意:要被改变的群组名称必须要在/etc/group文件内存在才行,否则就会显示错误!
例如我们用nano指令nano .gitmessage创建一个隐藏的gitmessage文件,然后利用-w xxx指令写入内容xxx,最后按下[Ctrl] + O保存,按下[Ctrl] + X退出。然后我们利用chgrp指令去修改.gitmessage的所属群组为users.
chown:改变文件拥有者
注意:使用者必须是已经存在系统中的账号,也就是在/etc/passwd这个文件中有记录的使用者名称才能改变。
chrown的用法:还可以顺便直接修改群组的名称,此外,如果要连目录下的所有次目录或文件同时更改文件拥有者的话,直接加上-R的选项即可
示例:
chmod:改变文件的权限,SUID,SGID,SBIT等等的特性
有两种方式:分别可以使用数字或者是符号来进行权限的变更
5.2.3 目录与文件之权限意义:
权限对文件和目录的重要性
注意点:针对目录x是进入该目录的权限,只有r而没有x,那么你就无法切换到该目录下,也就无法执行该目录下的任何指令。所以,要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给。
原因:如果有一个文件你无法读、无法编辑也无法执行,即该文件对你来说属于"others"身份,且没有"rwx"权限。不过你对此文件所在的目录具有"rwx"完整权限,那么虽然你没有权限去操作文件内容,但是你却能够删除这个文件。
就好比有人把一个完全密封的数据夹放你办公室的抽屉中,因为完全密封你也打不开、看不到这个数据夹的内部数据(对文件来说,你没有权限)。但是因为这个数据夹是放在你的抽屉中,你当然可以拿出/放入任何数据在这个抽屉中(对目录来说你具有所有权限),所以,情况就是:你打开抽屉,拿出这个没办法看到的数据夹、将他丢到走廊上的垃圾桶(顺利删除)!
示例演示:
先以root身份在所有人都可以工作的/tmp目录下创建一个名为testing的目录,该目录权限为744且目录拥有者为root,另外在该目录下创建一个空的名为testing文件,如下所示:
接下来我们看看一般用户读写该文件的权限:由于一般用户只有r权限,所以并不能访问testing目录
但是,如果我们将该目录修改为属于用户本身,会怎么样?
所以我们看到testing文件夹被一般用户删除了,所以x在目录当中是与“能否进入该目录”有关,至于w则具有相当重要的权限,因为它可以让使用者删除、更新、新建文件或目录,是很重要的参数!
使用者操作功能与权限
5.2.4 Linux文件种类与扩展名
常用的文件扩展名:
5.3 Linux目录配置