文件访问者身份有三类:
所有者(owner)、所属组(group)、其他用户(others),当然,还有一个所有人(all),这四个身份的字符分别是u、g、o、a=(u+g+o)。又可以为这三类用户指定三种访问权限:读(read)、写(write)、执行(execute)
我们针对三类访问者可以三种不同级别的访问权限:
分别是读、写、执行。这三种权限显示为r、w、x。
文件类型有几种:d表示目录、-表示文件、|表示链接文件、b表示块设备文件、c表示字符设备文件。
以下图为例,分别是3个文件夹和一个txt文件
首先第一个字符表示文件类型,三个显示d,一个表示-。
其次紧接着的是9个字符,9个字符三三一组,分别对应的是所有者(owner)、所属组(group)、其他用户(others)这三组,当然对应这三组,但每个组内显示的字符代表的是这个组具有的访问权限,也就是读、写、执行,r、w、x。
第一组字符是文件所有者,基本都具备rw权限,也就是读写,但文件不具备执行能力,所以1.txt这个文件在执行字符x处为-,意思是没有执行权限,这三种权限位置按照rwx依次排列,位置不会改变。如果没有某种权限,就会在相应的位置显示-。
往后两组一组是所属组和其他用户,因为所属组和其他用户表示用户的所有者,但又可以访问这个文件,所以权限没有用户所属组那么高。
最后一个点是是扩展权限列表标识。
第二列的数字代表了文件的链接数量
第三第四代表所有者(owner)、所属组(group),可以看到都是root,因为我们是在root这个账户创建的文件和目录
第五列代表了文件的容量,也就是大小,通过对文件1.txt进行编辑后再查询,可以看到文件的容量改变了
第六第七第八列是上次修改的时间,通过截图可以看到1.txt两次的时间不同,但其他三个目录时间仍然相同。
第九列是文件名称
文件权限修改
使用chmod命令:
可以对文件的权限进行修改,格式是:chmod 访问者身份+/-访问权限 文件或路径
通过chmod,我们可以一次给多个身份赋予多个权限,也可以使用-号减少权限。
如果只是想把文件公开,可以
如果觉得指令繁琐,可以采用数字方法进行队权限的修改。
还是chmod但符号变成了数字:chmod 754 1.txt
将rwx分别用421进行表示,那么这个访问身份的总权限就是可以相加的
chmod 754 1.txt中的754分别代表ugo,也就是固定ugo的顺序只能是ugo,(7=4+2+1)(5=4+0+1)(4=4+0+0),还有其他如(6=4+2+0)、(0=0+0+0)
例如这里先将文件权限全部撤销,再赋予754权限
我们可以观察到,之前文件是白色的,但从第一次组访问权限变成可执行后,文件颜色变成了绿色,当我们再次将文件恢复成原来的权限后,颜色就变回白色。
通过ls命令查看文件时,不同的颜色代表着不同的文件类型:
蓝色:目录
绿色:可执行文件
浅蓝色:符号链接文件
红色:压缩文件
紫色红色:图片文件
黄色:设备文件
灰色:其他文件
文件的权限
文件的默认权限
我们可以用umask来查询和修改umask值
默认情况下,管理员新创建的普通文件的权限被设置为:rw-r--r-,用数字表示为644,所有者有读写权限,所属组用户和其他用户都仅有读权限;新创建的目录权限为:wxr-xr-×,用数字表示为755,所有者拥有读写和执行权限,所属组用户和其他用户都仅有读和执行权限。默认权限是通过umask(掩码)来实现的,该掩码用数字表示,实际上是文件权限码的“补码”。创建目录的最大权限为777,减去umask值(如022),就得到目录创建默认权限(如777-022=755)。由于文件创建时不能具有执行权限,因而创建文件的最大权限为666,减去umask值(如022),就得到文件创建默认权限(如666-022=644)。
可使用umask命令来查看和修改 umask值。
umask的修改可以让创建的目录和文件的默认值改变,节省批量修改文件和目录权限的时间。
文件的特殊权限
上面的umask值显示的是四位数字,但文件修改和文件、目录总权限却显示3位数字,因为还有umask中还有一位特殊权限,排在第一位。
特殊权限分为:suid、sgid、sticky,字符分别表示为:s、g、t,八进制表示数:4、2、1
suid和sgid也可以用数字4、2表示,加起来就是6,使用时放在普通权限前方,查看时占据执行符x的位置。
suid和suid分别对应这个文件的用户和用户组,他们使用在使用的时候自动获取root的用户ID和组ID,也就是说拥有suid权限可以自动获取root的用户ID(UID),拥有sgid权限可以自动获取root用户组的组ID(GID),有什么用?相当于执行这个文件时是root用户,特权!
下方是6400,意思是赋予400普通文件权限的同时,还增加特殊权限suid、sgid,x占位符变成s,用户组权限本应该没有任何权限,但还是出现了s,说明特殊权限是要大于普通权限的
sticky权限可以防止其他用户任意删除修改别人文件,但只对目录有效,对文件无效(Linux中目录属于文件的一种),设置sticky权限后,只有文件的所有者才可以删除、修改、移动文件。但如果目录不止设置了sticky权限,还拥有w、x权限,那么root用户也可以删除。
sticky用字符表示为t,用数字表示为1
为了方便观察,我们将正常的目录1删除所有权限并增加sticky权限,发现是在其他用户访问权限的执行符x处更改成为T,更加说明这个特殊权限是针对其他用户,防止他人乱改自己文件的特殊权限。
更改文件用户和用户组
使用chown指令可以更改文件的用户或用户组
chown yonghu2.yonghu3 1.txt
这个指令将本来在root的文件在用户上更改给yonghu2,在用户组上更改给yonghu3
我们继续用chown指令将文件所属更改回root,但刚才我们是一次改两个,用户组和用户中间使用.来隔开,但现在依次修改,说明这个指令如果单个修改,没有.的修改用户,前面有.的修改用户组
chgrp语法格式和chown一样,但chgrp只能更改用户组