9月14日任务
2.14 文件和目录权限chmod
2.15 更改所有者和所属组chown
2.16 umask
2.17 隐藏权限lsattr chattr
2018-9-9
反思:之前写笔记博客,总是整理顺序、找图找例子(虽然也不多),输出时还想着写成教程文章。这样弄得很累。回归笔记博客的功能和初心,是整理linux运维知识,构建运维体系,方便信息查询。所以今后博客整理应该按着这样的思路:主要以知识为划分,弱化上下文关系,重要案例不可忽略,技术细节尽量描述详尽,引用一定明确。
文件和目录权限chmod
ls -l
可以查看文件详情,第一列有十位或十一位:第一位是文件类型,第二到第十位是文件权限,第十一可能有,是显示selinux限制。
第二到十位三个一组,从前往后以此是所有者、所属组、其他用户对该文件的权限。每组中权限分别为r(可读)、w(可写)、x(可执行)。如果用户对文件没有有相应权限,用“-”占位。
用chmod命令更改文件权限,格式是chmod -R xxx file
。-R是级联功能,可以级联更改目录下所有文件的权限。xxx是权限设置,比较灵活有几种方法:赋值、加减、数字。赋值将所有者用u代表、所属组用g代表、其他用户用o代表,如果想将所属组权限设为可读可写不可执行:chmod g=rw- file
。加减与赋值法类似,如如果想增加所属组权可执行权限:chmod g+x file
。数字法对定r=4、w=2、x=1,则ugo的权限各占一位。例如将file文件权限全部开放:chmod 777 file
。此外,也可以用chmod a=rwx file
,a代表ugo。
chown
查看/etc/passwd可以了解系统用户信息。里面除了管理员帐号,还有系统应用帐号,例如mysql等应用。
chown user file
更改了file文件的所有者为user,chgrp usergrp file
更改了file所属组为usergrp。chown也可以修改文件所属组:chown user:usergrp file
同时修改file文件所有者和所属组。如果只修改所属组,将user去掉保留冒号即可。
和chmod一样,chown -R是级联更改。
umask
新建文件时系统默认为该文件设置了权限。root默认是目录755、普通文件644,普通用户默认是目录775、普通文件664。这个是有系统的umask值决定的。在终端中输入umask就可以看到。更改只需umask xxx
,xxx是要更改的数值。
目录x权限(打开目录)是使用目录的基本权限,而普通文件不常需要执行。所以规定目录默认全部权限为777,普通文件是666。linux默认root用户umask是022,则在新建目录时其权限是(777-022),普通文件类似。
要注意一个特殊情况:umask 033。linux赋予新文件权限时是通过权限位相减,而不是umask数值相减。(rwxrwxrwx减—-wx-wx)得到rwxr–r–,也就是744,而不是733(777减033)。
隐藏权限
隐藏权限有a、i、A、s、c,常用的a和i。可以用lsattr来查看文件的隐藏权限,lsattr -R级联查看目录下所有文件的隐藏权限。使用chattr修改文件隐藏权限。其实和上面chmod类似。
chattr +i file
使file文件增加i权限,不能删除、更改、重命名、链接。chattr +a file
使file文件只能追加内容,不能删除、重命名。
隐藏权限对文件和目录都是生效的,在电脑上操作很容易试验其特性。这里想写点关于linux下目录的个人理解。简单地讲,目录可以类比文本文件:目录里的文件类似文本文件里的内容。一个目录可读,则我们可以看到目录里有什么文件;一个文本文件可读,则我们可以看到文件里的内容。一个目录可写,则我们可以删除文件;一个文本文件可写,则我们可以更改删除文件里面的内容。
从文件系统角度来看,linux文件系统可以理解为inode+block:inode是序号、block是储存块,inode指向block。一个文件(目录和文本文件)有一个inode和block。linux通过一个文本文件的inode查找到对应block,于是可以读取文本内容。目录是类似的,linux通过目录的inode查找到该目录的block,这个block存放的就是目录下文件名和其inode。