1.隐藏属性
1.1 chattr可以设置文件的隐藏属性,用法如下:
[root@Ansible user1]# chattr --help Usage: chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files… 部分选项与参数解释: -R:递归处理,将指定目录下的所有文件及子目录一并处理。 -V:显示指令执行过程。 -f:禁止显示错误信息。 -v:<版本编号> 设置文件或目录版本。 +:增加文件或目录的属性。 -:删除文件或目录的属性。 =:指定文件或目录的属性。 a:设置此权限时,文件内容只能增加,不能删除或修改,仅root可以设置此权限。 A:设置此权限时,文件的读取时间(mtime)不会被修改。 c:设置此权限时,文件自动压缩,读取时自动解压缩。 s:设置此权限时,文件将完全从磁盘中删除,无法恢复。 S:设置此权限时,文件被修改时后会同步写入磁盘,一般文件是非同步写入磁盘。 u:设置此权限时,文件被删除后可恢复。
但是并不是所有的的文件系统都适用这些属性,根据man page可以知道:
xfs文件系统支持以下属性:
FILE ATTRIBUTES
The XFS filesystem supports setting the following file attributes on Linux systems using the chattr(1) utility:
a - append only
A - no atime updates
d - no dump
i - immutable
S - synchronous updates
ext3,ext4文件系统支持以下属性:
FILE ATTRIBUTES
The ext2, ext3, and ext4 filesystems support setting the following file attributes on Linux systems using the chattr(1) utility:
a - append only
A - no atime updates
d - no dump
D - synchronous directory updates
i - immutable
S - synchronous updates
u - undeletable
In addition, the ext3 and ext4 filesystems support the following flag:
j - data journaling
Finally, the ext4 filesystem also supports the following flag:
e - extents format
1.2 lsattr可以查看文件的隐藏属性
[root@Ansible user1]# lsattr -a 1.txt ---------------- 1.txt [root@Ansible user1]# chattr +i 1.txt [root@Ansible user1]# lsattr -a 1.txt ----i----------- 1.txt [root@Ansible user1]# rm 1.txt rm: remove regular file ‘1.txt’? y rm: cannot remove ‘1.txt’: Operation not permitted [root@Ansible user1]#
2.特殊权限:SUID、SGID、SBIT
先观察一下系统某些文件的特殊权限:
[root@Ansible user1]# ls -ld /tmp/ drwxrwxrwt. 11 root root 4096 Nov 7 15:31 /tmp/ [root@Ansible user1]# ls -ld /usr/bin/passwd -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
可以看到除了rwx权限外,还有st权限。
2.1 Set UID
当s权限在文件拥有者的x权限位置上时,称为Set UID,简称为SUID的特殊权限。当文件拥有SUID权限时,文件拥有以下功能:
- SUID权限仅对二进制程序有效;
- 执行程序的用户需要拥有该程序的执行权限;
- SUID权限仅在执行该程序的过程中有效;
- 执行程序的用户将暂时获取该程序的owner权限。
举个例子,加深理解:
我们知道系统的账号密码都记录在/etc/shadow文件内,但是这个文件只有root才有权限修改;由于普通用户没有权限写入,原则上普通用户就无法修改密码。但实际上是可以的,这就是SUID发挥的作用。
我们看下passwd程序的权限:
[root@Ansible user1]# ll /usr/bin/passwd -rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
首先普通用户拥有passwd命令的执行权限,而root是passwd程序的owner。当普通用户执行passwd命令时,普通用户会暂时拥有root的权限,从而完成密码的修改。
2.2 Set SGID
当s权限在文件用户组的x权限位置上时,称为Set SGID。与SUID不同的是,它还可以针对目录来设置权限。对于目录来说,具有以下功能:
- 用户如果对此目录拥有rx权限时,该用户能够进入此目录;
- 用户在此目录下的有效用户组将会变成该目录的用户组;
- 如果用户在此目录下具有w权限,那么用户所新建的文件的用户组和此目录的用户组相同。
2.3 Sticky Bit
SBIT仅对目录有效,作用如下:
- 当用户拥有目录的wx权限时,即具有写入权限;
- 当用户在此目录下新建文件或目录时,仅有自己与root可以删除文件。
3.特殊权限设置
SUID、SGID、SBIT权限的数字代表分别为421。
设置权限时原则上应该是四位数字,例如0644,但是我们一般都会直接写后面三位数,第一位数字其实就是特殊权限的位置。比如要设置SUID、SGID权限,运行命令【 chmod 6644 filename 】即可。
特殊情况:当文件的权限为0666时,再增加特殊权限,字母会显示大写:
[root@Ansible user1]# chmod 7666 1.txt [root@Ansible user1]# ll 1.txt -rwSrwSrwT. 1 root root 2 Nov 7 14:48 1.txt
「 文章如果对你有帮助,请点个赞哦^^ 」 
若无特殊注明,文章均为本站原创或整理发布。
转载请注明本文地址:https://om.fangxiaoxiong.com/4236.html