Linux第二周學習筆記(12)
2.18 特殊權限set_uid
set_uid:這個權限是針對二進制可執行文件,使文件在執行階段具有文件所有者的的權限。
--------------------------------------------------------------------------------------------
例如passwd命令:
[root@daizhihong01 ~]# which passwd
/usr/bin/passwd
[root@daizhihong01 ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
首先我們分析不同點:/usr/bin/passwd這個文件是一個紅色的文件,-rwsr-xr-x.在它的權限位上多了一個“s”。
這個“s”就是set_uid的權限:windows系統裏一個普通的用戶也是可以給自己的賬號更改密碼,在Linux系統裏passwd也是可以支持普通用戶更改自己的密碼,但是在Linux系統裏面普通用戶是不能更改密碼文件的,我們來看一下密碼文件的一個權限:
[root@daizhihong01 ~]# ls -l /etc/shadow
---------- 1 root root 677 1月 30 23:11 /etc/shadow
/etc/shadow文件權限都是零,連超級用戶root都沒有權限更改,普通用戶是更加改不了密碼文件的。在
set_uid特殊權限:保證普通用戶臨時擁有該命令所有者的身份,使用set_uid特殊權限的文件必須是一個二進制的文件,並且是一個可執行文件。在
----------------------------------------------------------------------------------------------
文件授權set_uid特殊權限:
給ls –l /usr/bin/ls, 授予set_uid特殊權限
先查看權限:
[root@daizhihong01 ~]# ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
然後切換一個普通用戶:
[root@daizhihong01 ~]# su - yngndzh1
[yngndzh1@daizhihong01 ~]$ whoami
yngndzh1(切換到yngndzh1用戶)
普通用戶查看/root/時權限不夠:
[yngndzh1@daizhihong01 ~]$ ls /root/
ls: 無法打開目錄/root/: 權限不夠
[yngndzh1@daizhihong01 ~]$ ls -ld /root/
dr-xr-x---. 3 root root 203 1月 30 20:53 /root/(普通用戶是沒有權限的)
對ls命令設置一個set_uid特殊權限使普通用戶臨時擁有root用戶的權限:
切換到root用戶下進行修改:
[root@daizhihong01 ~]# chmod u+s /usr/bin/ls
[root@daizhihong01 ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
這時-rwsr-xr-x權限位加上了“s”
切換到yngndzh1普通用戶下運行ls命令:
[yngndzh1@daizhihong01 ~]$ ls -l /root/
總用量 12
-rwx------ 1 root root 0 1月 30 20:53 123.txt
-rw-------. 1 root root 1418 1月 22 08:19 anaconda-ks.cfg
-rw-r--r-- 1 root root 4358 1月 29 23:24 anaconda-ks.cfg.1
[yngndzh1@daizhihong01 ~]$ ls -ld /root/
dr-xr-x---. 3 root root 203 1月 30 20:53 /root/(權限依舊是普通用戶不能執行)
授權set_uid特殊權限以後就能查看/root/目錄下的內容了
去掉set_uid特殊權限:
[root@daizhihong01 ~]# chmod u-s /usr/bin/ls
[root@daizhihong01 ~]# ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
[root@daizhihong01 ~]#
--------------------------------------------------------------------------------------------
[root@daizhihong01 ~]# chmod u=rws /usr/bin/ls
[root@daizhihong01 ~]# ls -l /usr/bin/ls
-rwSr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
[root@daizhihong01 ~]#
這時變成了大“S”-rwSr-xr-x,這時因為沒有X權限,少了一個x所以就變成了一個大寫的“S”,設置成小“s”的話加入x權限即可,如下:
[root@daizhihong01 ~]# chmod u+x /usr/bin/ls
[root@daizhihong01 ~]# ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
大“S”和小“s”區別不大,因為我們授予ls這個命令特殊權限的時候ls這個命令本身普通戶就擁有X權限,所以執行時不受限制
[root@daizhihong01 ~]# ls -l /usr/bin/ls
-rwxr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
---------------------------------------------------------------------------------------------
目錄授權set_uid特殊權限:
目錄是可以加入set_uid特殊權限,但是用處不大
Linux第二周學習筆記(12)