文件特殊权限 s 和 t
SUID:(set uid)当我们为某个命令设定了suid,无论谁使用该命令都会
使用该命令的 "属主" 运行该命令。
我们知道在Linux中,每个用户可以通过passwd命令更改自己的密码。密码存放的位置为/etc/shadow。我们可以查看一下/etc/shadow的权限。
[root@ceshi-kehu-02 ~]#ll /etc/shadow
---------- 1 root root 899 Aug 16 22:18 /etc/shadow
[root@ceshi-kehu-02 ~]#
s 特殊权限 任何用户将与文件拥有者身份运行
通过上结果,我们可以知道任何人对/etc/shawow都是没有任何权限的。当然root除外,因为root在Linux系统中有着最高的权限。
我们时通过passwd这个命令来修改密码的,在Linux中一切皆文件,我们可以查看一下passwd这个命令的权限。
[root@ceshi-kehu-02 ~]#ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
我们发现属主的权限中有个s(若原先权限为为空的话,会显示 S),这就是SUID,这表示当任何人想要执行passwd这条命令时,都会以该命令的属主身份运行该命令。
使用普通用户ennan执行passwd修改密码
[zhao@ceshi-kehu-02 /tmp]$passwd
Changing password for user zhao.
Changing password for zhao.
(current) UNIX password:
我们发现其实是以root的身份在运行这条命令。
[root@ceshi-kehu-02 ~]#ps -aux |grep passwd
root 8255 0.0 0.2 170712 2008 pts/2 S+ 22:25 0:00 passwd
SUID的设置与取消
可通过
chmod u+s 文件名称
chmod 4XXXX 文件名称设置
[root@ceshi-kehu-02 ~]#ll -d zhao
drwxr-xr-x 2 root root 6 Aug 20 22:28 zhao
[root@ceshi-kehu-02 ~]#chmod 4755 zhao
[root@ceshi-kehu-02 ~]#ll -d zhao
drwsr-xr-x 2 root root 6 Aug 20 22:28 zhao
[root@ceshi-kehu-02 ~]#chmod u-s zhao
[root@ceshi-kehu-02 ~]#ll -d zhao
drwxr-xr-x 2 root root 6 Aug 20 22:28 zhao
进程能够以何种形式访问文件,取决于运行这个进程的用户对这个文件有没有相应的权限。
比如:passwd要修改/etc/shadow,要看运行passwd这条命令的人对/etc/shadow用怎么样的权限。
SGID:将目录设置为sgid后,如果在该目录下创建文件,都将与该目录的所属组保持一致。
(只能属组保持一致 不能和属主保持一致)
[zhao@ceshi-kehu-02 /tmp/11]$touch 2.txt
[zhao@ceshi-kehu-02 /tmp/11]$ll
total 0
-rw-r--r-- 1 zhao root 0 Aug 20 23:00 2.txt
[zhao@ceshi-kehu-02 /tmp/11]$
这时候,我们发现2.txt的属组已经变成了root,即zhao/这个目录的属组。
t 粘滞位 删除文件只能是 谁创建的谁删除
SBIT:如果一个目录设定了粘滞位, 那么谁都可以在该目录下创建文件。删除文件只能是 谁创建的谁删除. 除此以外 root 和目录的所属主都能删除该目录下的所有内容。
[root@ceshi-kehu-02 /tmp]#chmod 1777 zs
[root@ceshi-kehu-02 /tmp]#ll -d zs
drwxrwxrwt 2 root root 6 Aug 20 23:05 zs
在该目录下创建文件
[root@ceshi-kehu-02 /tmp/zs]#touch 1.txt
[root@ceshi-kehu-02 /tmp/zs]
zhao用户虽然对目录zs有足够的权限,但是仍然无法删除1.txt
[zhao@ceshi-kehu-02 /tmp/zs]$rm -rf 1.txt
rm: cannot remove ‘1.txt’: Operation not permitted
[zhao@ceshi-kehu-02 /tmp/zs]$
取消粘滞位后,zhaot用户可以删除1.txt
[root@ceshi-kehu-02 /tmp/zs]#chmod o-t ../zs
[root@ceshi-kehu-02 /tmp/zs]#ll -d /tmp/zs
drwxrwxrwx 2 root root 6 Aug 20 23:09 /tmp/zs
[zhao@ceshi-kehu-02 /tmp/zs]$rm -rf 1.txt
[zhao@ceshi-kehu-02 /tmp/zs]$ls
特殊属性 i 和 a
chattr:只有 root 用户可以使用,用来修改文件系统的权限属性,建立凌驾于 rwx 基础权限之上的授权。
lsattr:查看文件的特殊属性。
chattr常用选型及解释
选项 | 解释 |
---|---|
+i | 锁定文件,任何人无法对文件进行操作 |
+a | 无法写入和删除文件,可追加文件内容 |
i 锁定文件,任何人无法对文件操作
当文件被+i后,包括root在内的所有用户无法对文件进行操作。
[root@ceshi-kehu-02 /tmp/zs]#touch zhao.txt
[root@ceshi-kehu-02 /tmp/zs]#lsattr zhao.txt
---------------- zhao.txt
[root@ceshi-kehu-02 /tmp/zs]#chattr +i zhao.txt
[root@ceshi-kehu-02 /tmp/zs]#lsattr zhao.txt
----i----------- zhao.txt
[root@ceshi-kehu-02 /tmp/zs]#ll zhao.txt
-rw-r--r-- 1 root root 0 Aug 20 23:16 zhao.txt
[root@ceshi-kehu-02 /tmp/zs]#rm -rf zhao.txt
rm: cannot remove ‘zhao.txt’: Operation not permitted
[root@ceshi-kehu-02 /tmp/zs]#
若对/etc/passwd设置了+i选项后,任何人无法增加或者删除用户
[root@zhaoshuang ~]#chattr +i /etc/passwd #设置+i权限
[root@zhaoshuang ~]#lsattr /etc/passwd
----i----------- /etc/passwd
[root@zhaoshuang ~]#useradd kkk
useradd: cannot open /etc/passwd #创建用户失败,无法打开文件
[root@zhaoshuang ~]#chattr -i /etc/passwd # 取消文件锁定
[root@zhaoshuang ~]#lsattr /etc/passwd
---------------- /etc/passwd
a 无法写入和删除文件,可追加文件内容
文件使用了+a选项后,尽可追加文件内容,不可进行其他任何操作
[root@ceshi-kehu-02 ~/zhao]#chattr +a 123.txt
[root@ceshi-kehu-02 ~/zhao]#lsattr 123.txt
-----a---------- 123.txt
[root@ceshi-kehu-02 ~/zhao]#rm -rf 123.txt
rm: cannot remove ‘123.txt’: Operation not permitted
[root@ceshi-kehu-02 ~/zhao]#echo "nihao" >>123.txt
[root@ceshi-kehu-02 ~/zhao]#cat 123.txt
123
nihao
取消a选项
[root@ceshi-kehu-02 ~/zhao]#chattr -a 123.txt
[root@ceshi-kehu-02 ~/zhao]#lsattr 123.txt
---------------- 123.txt
进程掩码umask
通过umask可查看当前登陆用户的umask
[root@ceshi-kehu-02 ~/zhao]#umask
0022
Linux在/etc/bashrc中定义了umask的值
[root@ceshi-kehu-02 ~/zhao]#vim /etc/bashrc
if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
umask 002
else
umask 022
fi
用户也可以通过umask临时设置umask的值
[root@ceshi-kehu-02 ~/zhao]#umask 002
[root@ceshi-kehu-02 ~/zhao]#umask
0002
[root@ceshi-kehu-02 ~/zhao]#touch 1.txt
[root@ceshi-kehu-02 ~/zhao]#mkdir 12
[root@ceshi-kehu-02 ~/zhao]#ll
total 4
drwxrwxr-x 2 root root 6 Aug 21 15:29 12 # 权限775
-rw-rw-r-- 1 root root 0 Aug 21 15:29 1.txt #权限664
[root@ceshi-kehu-02 ~/zhao]#
用户家目录的umask可以通过/etc/login.defs指定 (用户家目录的权限)
[root@zhaoshuang ~]#grep UMASK /etc/login.defs
UMASK 077
[root@zhaoshuang ~]#ll /home
total 0
drwx------ 2 ii id 62 Aug 17 17:08 ii
drwx------ 2 zhao zhao 83 Aug 16 10:44 zhao
drwx------ 2 zhao1 zhao1 62 Aug 18 15:01 zhao01
drwx------ 2 zhao1 zhao1 62 Aug 19 21:51 zhao1
drwx------ 2 zhao2 zhao2 62 Aug 19 21:51 zhao2
drwx------ 2 zhao3 zhao3 62 Aug 19 21:51 zhao3
drwx------ 3 zhaoshuang zhaoshuang 109 Aug 14 23:22 zhaoshuang
当用户的umask为045的时候(其他用户组位为奇数)
[root@ceshi-kehu-02 ~/zhao]#umask 0045
[root@ceshi-kehu-02 ~/zhao]#touch 111
[root@ceshi-kehu-02 ~/zhao]#mkdir 112
[root@ceshi-kehu-02 ~/zhao]#ll
total 4
-rw--w--w- 1 root root 0 Aug 21 15:56 111
drwx-wx-w- 2 root root 6 Aug 21 15:56 112
666-45=621,而创建出来的文件权限是622,所以当umask的其他用户组位为奇数时,在其他用户组位再加1
7770-45=732, 而创建出来的目录权限是732
umask值的所有位为奇数时 +1
[root@ceshi-kehu-02 ~/zhao]#umask 0045
[root@ceshi-kehu-02 ~/zhao]#touch 111
[root@ceshi-kehu-02 ~/zhao]#mkdir 112
[root@ceshi-kehu-02 ~/zhao]#ll
total 4
-rw--w--w- 1 root root 0 Aug 21 15:56 111 #666-045=621 631+1+622
drwx-wx-w- 2 root root 6 Aug 21 15:56 112 # 777-045=732
-rw-r---w-. 1 root root 0 Aug 8 06:50 test