2.14 文件或目录权限chmod
  • 认识文件权限

rw-------.
第1位:文件类型
第2-4位 : 所有者的权限
第5-7位:所属组的权限
第8-10位:除了所有者、所属组之外的权限

w:是否可写
r:是否可读
x:是否可执行
以数字表示: r=4;w=2;x=1

  • 认识chmod

chmod == change mode 使用这个命令对目录或者文件进行操作,不加-R选项,表示生效的,仅仅是目录本身或文件本身。
-R 选项 批量的更改目录下所有的文件或子目录的权限

  • chmod的使用方法

使用方法: chmod 700 文件或目录或文件的绝对路径
chmod u=rwx,g=r,o=r 文件或目录或文件的绝对路径 ,比较直观,但比较繁琐
chmod a+x 文件或目录或文件的绝对路径,会把所有的权限都加上 x 权限 
支持,针对某一个所有属权限进行增加或删除 例如:
chomd u+x 1.txt,chomd g+x 1.txt,chomd o+x 1.txt
chomd u-x 1.txt,chomd g-x 1.txt,chomd o-x 1.txt

2.15 更改所有者和所属组chown
  • chown

chown = change owner 也就是更改所有者

可以通过 cat /etc/paswwd/ 查看系统下的用户

使用方法:
chown aming /tmp/yum.log 更改文件的所有者
chown user1:aming /tmp/yum.log 同时修改文件的所属主和所属组,以 : 冒号分割
chown:root /tmp/yum.log 在不修改所属主的情况下,修改所属组

-R 选项 级联更改文件或者目录的所属主,所属组

chgrp = change group 更改所属组
使用方法 chgrp user1 /tmp/yum.log

2.16 umask

运行 umask 可以看到系统默认的值
更改这个值
umask 002 第一位可以省略不写

目录必须要有 x 权限,理由是,不管你的所属主、所属组、还是其他用户,都必须先保证能其中一个能先执行,才能进行进一步的操作,如果不让执行,那么这个目录将无法打开,这个是不符合系统逻辑的。

系统文件的默认权限为 666
系统目录的默认权限为 777
创建的时候就会减去umask值,得出最终的目录或文件的权限
创建目录或文件时的算法:
例:
umask 值为 0002时 正确查看方式应该为 --- --- -w-
这时 创建目录的 权限就为\
777 (rwx rwx rwx)- 002 (--- --- -w- )=775 (rwx rwx r-x )
这时 创建文件的 权限就为
666 (rw- rw- rw-)- 002 (--- --- -w- )=664 (rw- rwx r-- )

ps :不能使用数字,直接进行运算,因为这个运算方式不符合系统的逻辑

2.17 隐藏权限lsattr_chattr

使用 ls -l 命令是看不到的隐藏权限的

chattr 的隐藏权限,以中文翻译,就是一个附加权限
使用方式:
chattr +i 1.txt ;反之,chattr -i 1.txt 清除这个权限;
i 是一个非常严谨的权限,对文件使用时会直接不能mv,不能写文件,只能读;对目录使用,它不会影响对已经存在的文件的写入

chattr +a 1.txt ;反之,chattr -a 1.txt 清除这个权限 a 权限;
a 权限不能删除,不能更改, 只能追加,可以更改时间信息,只能在文件末尾增加

对文件 1.txt 增加 i 权限,这时对1.txt进行编辑,是无法编辑的,系统会提示这是一个只读文件无法编辑 使用 :wq! 强制保存 也是保存不了的

当对一个文件进行编辑的时候,提示权限不够,同时我们又是使用root用户去进行操作也会这样显示,那么我们就该考虑到一个问题,这个文件是不是添加有隐藏权限 
这时,我们就可以使用 lsattr 1.txt 去查看文件是否有隐藏权限

lsattr 查看的是一个目录下面的子目录和子文件 
-d 可以查看目录本身
-R 可以查看目录本身,和目录下子目录的文件等等的隐藏信息(只使用lsattr命令是会显示目录本身和目录下的,子目录的情况不会显示)

vi 编辑文件的时候,会默认生成一个缓存文件,与源文件唯一不同的就是末尾多一个 ~ 符号,当保存退出的时候,就会保存覆盖源文件,然后这个缓存文件就会自动删除,如果文件添加有隐藏权限的时候,导致vi 无法编辑时,就会显示出 以 ~结尾的文件,且不会删除