chattr文件隐藏属性(物理属性)修改

语法:chattr [+ - =] [Asaci] [文件或者目录名]
  • “+ - =”:分别为增加、减少、设定;
  • -A:增加该属性后,文件或目录的atime将不可不修改;
  • -S:增加该属性后,会将数据同步写入磁盘中;
  • -a:增加该属性后,只能追加不能删除,非root用户不能删除该属性;
  • -c:自动压缩该文件,读取时会自动解压;
  • -i:增加后,使文件不能被删除、重命名、设定链接文件、写入、新增数据;
  • 常用的为a和i两个选项。
    对test1目录增加i权限后,即使是root账户也不能在test1目录中创建或者删除test2等文件。

clipboard.png

test2目录增加a权限后,只可以里面创建文件,而不能删除文件,文件同样可以适用这些权限。

clipboard.png

lsattr读取文件或目录的文件隐藏属性

语法:lsattr [-aR] [文件/目录名]
  • -a:类似于ls的-a选项,即连同隐藏文件一同列出;
  • -R:连同子目录的数据一同列出;

clipboard.png

:lsattr命令显示文件系统属性与ls显示的UNIX文件系统属性是不同的概念,lsattr实现的属性是文件系统的物理属性,而ls显示的文件属性是可操作系统进行管理文件系统的逻辑属性。

特权权限之suid

在前面介绍权限的时候,我们一直都是用3位数,其实在最前面还有一位,这就是说的set uid、set gid 以及sticky bit。
该权限针对二进制可执行文件,使文件在执行阶段具有文件所有者的权限,比如passwd这个命令就具有该权限,当普通用户执行passwd命令时,可以临时获得root权限,从而可以更改密码。

clipboard.png

passwd显示的rws,并非传统的rwx,用数字表示为4755。那么这个4是如何计算出来的呢?当有特殊权限时,第一位数字可以是0、1(--t)、2(-s-)、3(-st)、4(s--)、5(s-t)、6(ss-)、7(sst)。在来看passwd,它的s--所以是4,
SUID的功能:

  1. SUID权限只能对二进制程序有效,
  2. 执行此二进制档案的用户要对一个二进制开始到命令执行结束;
  3. SUID权限的有效时间是在纸箱一个二进制开始到命令执行结束;
  4. 二进制程序的执行者在执行时会暂时拥有此程序所有者的权限;

clipboard.png

特殊权限之guid

该权限可以应用在文件上同样也可以作用在目录,设置文件上,作用和set uid类似,前提是这个文件可执行的二进制文件,当设置set gid后,执行该文件的用户会临时以该文件所属组的身份执行,若目录被设置这个权限后,任何用户在此目录下创建的文件或目录都具有和该目录所属的组相同的组。
“s”位出现在属主的“x”位上时那档案就拥有了SUID的权限,当“s”位出现在档案属组的“x”位上时,那档案就拥有了SGID的权限。

  1. 二进制档案和目录都可拥有SGID权限;
  2. 程序的执行者对该档案要拥有可执行权限;
  3. 在执行此程序时,进程会切换到此二进制文件所组拥有的权限;

当一个目录具有SGID权限时,那此目录具有如下的功能:

  1. 用户对此目录具有rx权限时,用户可进入此目录;
  2. 用户在此目录上的群组不再是用户的所属的组,群组被切换成了目录的群组;
  3. 若用户对此目录具有可写入的权限,那用户在此目录下就可以新建档案,新建的档案的属主时用户本身,但属组就成了目录的所属群组;

clipboard.png

clipboard.png

特殊权限之sticky_bit

  1. 只对目录生效,当用户对此目录有rwx权限,也就是用户对在此目录下可新建,删除,修改档案。
  2. 用户在此目录下创建的档案,只有用户本身与root用户才能对档案进行删除、修改操作。

clipboard.png

说明:一个文件能否被删除,取决于该文件父目录的权限,/tmp/目录是777,任何人都可写的,所以理论上任何人都可以删除/tmp/下的所有文件,但是刚才我们做的实验表明,user2不不可以删除user1的文件的,这是因为/tmp/目录有一个stick_bit。
stick_bit可以理解为防删位,一个文件是否可以被某用户删除,主要取决于该文件所在目录是否对该用户具有写权限,如果没有写权限,则这个目录下的所有文件都不能被删除,同时也不能添加新的文件,如果希望用户能够添加文件但同时不能删除该目录下的其他用户的文件,则可以对父目录增加该权限,设置它后,就算用户对目录具有写权限,也不能删除其他用户的文件。

“!$”:代表上一条指令;


孔雀东南飞
20 声望0 粉丝

本人今年刚毕业,正在学习Linux,Java,oracle