Linux第二週學習筆記(12)windows
2.18 特殊權限set_uidide
set_uid:這個權限是針對二進制可執行文件,使文件在執行階段具備文件全部者的的權限。學習
-------------------------------------------------------------------------------------------- ui
例如passwd命令:spa
[root@daizhihong01 ~]# which passwdorm
/usr/bin/passwdit
[root@daizhihong01 ~]# ls -l /usr/bin/passwdclass
-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都沒有權限更改,普通用戶是更加改不了密碼文件的。在root用戶下是能夠受權一個可寫的權限給這個文件那就能夠直接更改了,可是普通用戶就不可能更改密碼文件的。要想讓普通用戶更改本身的密碼可是這個密碼文件又不能讓它寫,這個就是比較矛盾的地方。那咱們怎麼來實現這個問題呢?爲了可以實現這個問題咱們就要使用特殊權限set_uid來完解決普通用戶更改密碼的問題,set_uid特殊權限可讓普通用戶在執行/usr/bin/passwd 命令的時候賦予普通用戶臨時擁有全部者的權限,進行密碼的更改,更改完了之後權限就會被收回。這個就是set_uid特殊權限的做用。
set_uid特殊權限:保證普通用戶臨時擁有該命令全部者的身份,使用set_uid特殊權限的文件必須是一個二進制的文件,而且是一個可執行文件。在Linux系統當中只有/usr/bin/passwd 命令用到這個權限
----------------------------------------------------------------------------------------------
文件受權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特殊權限,可是用處不大