day11特殊权限s , t 特殊 和 特殊属性 i , a

文件特殊权限 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

你可能感兴趣的:(day11特殊权限s , t 特殊 和 特殊属性 i , a)