Linux 特殊权限a,i,t,s以及查找带有特殊权限的所有文件
按照在实际的工作中的使用率来,我想 a i t这三个是十分高的,尤其是a和i,a和i是文件的特殊属性,可以这么说,人在三界中,它在五行外,特殊在它们的设置都是专用命令chattr命令,而不是chmod这个一般文件的属性修改命令。当然,t(包括大t)s(包括大s),仍然是使用chmod这个命令来设置,切记,切记!!!!
属性a是表示该文件只可append,也就是只可追加补充文本内容,不可覆盖或者删除内容。这一个功能无疑是文件保护的利器(当然了,重要日志文件的利器,别理解错了)。
属性 i 是表示该文件冻结了,不可移动,不可修改,不可追加,(因为不可移动所以)不可删除,但可复制。(类似冰封了,但有一线生机---复制),所以复制是这个特殊属性的弱点哦。
对于a和i这两个属性,通常同时使用,保护重要的日志记录以及重要的脚本,二进制文件,防止恶意的破坏。但是,终究人力有限,删除时会报错 无权限删除,因此,还是可以发现特殊属性的蛛丝马迹哦。(题外话,没有绝对的安全,只有相对的安全,对数据保持一颗敬畏的心吧!!!!!!!!!)
给test这个文件同时附加a i这两个特殊属性,添加命令为 chattr +权限 文件名,查看特殊属性为lsattr 文件名。(attribute的缩写为attr表示)。
当移动带有这两个特殊属性的文件时,会报错,无权限操作。
修改这个文件或者添加内容到这个文件时,会报错,只读模式文件,无法写入,请不保存退出。
可以复制这个文件,复制后的副本文件没有特殊属性,可以任意修改,移动删除,即使复制的时候使用 了a参数、(cp -a是保留权限属性,但特殊属性并不会保留。)
s:文件属主和组设置SUID和GUID,文件在被设置了s权限后将以root身份执行。在设置s权限时文件属主、属组必须先设置相应的x权限,否则s权限并不能真正生效(c h m o d命令不进行必要的完整性检查,即使不设置x权限就设置s权限,chmod也不会报错,当我们ls -l时看到rwS,大写S说明s权限未生效)。特别需要注意,s和S属性只针对二进制可执行文件。下面是验证:
以passwd 这个修改用户密码的命令和自建用户zsk为例,演示当passwd命令权限带s和S的不同使用情况。
[root@centos7 ~]# ls -al /usr/bin/passwd
-rwsr-xr-x 1 root root 27856 Apr 1 2020 /usr/bin/passwd#这个时候是小s
[root@centos7 ~]# chmod -x !$
chmod -x /usr/bin/passwd#改成大s了
[root@centos7 ~]# ls -al /usr/bin/passwd
-rwSr--r-- 1 root root 27856 Apr 1 2020 /usr/bin/passwd
[zsk@centos7 ~]$ passwd
-bash: /bin/passwd: Permission denied#切换成zsk用户后无法执行passwd命令了,说明大s并没有效力。
s属性的增减一般为 chmod u+s 文件名 chmod g+s文件名
特别说明,s属性我认为是和windows右键管理员运行该程序一样的功能,实现。简单记忆就是Windows的右键管理员运行。
t和T是针对文件夹的,表明这个文件夹和其内的文件是属主的,同样的,大t仅仅表明设置了t属性,但并不生效。t的位置是在other内,
因此,设置 t属性的命令为 chmod o+t 文件夹。
t属性针对的是多用户文件管理,使得动态的用户属主生效。(比如a这个用户在有t属性的文件夹一个文件,那么,这个文件的属主就是a和root用户,同样的,b用户在这个有t属性的文件夹下拥有另一个文件,那么,这个另一个文件的属主就是b和root用户。)。
t属性多见于samba,ftp这样的多用户服务中配合管理多用户,以及Linux中一个比较特殊的文件夹,tmp文件夹。