set_uid
例子 -rwsr-xr-x.中的s的權限
[root@hf-01 ~]# which passwd
/usr/bin/passwd
[root@hf-01 ~]# ls -l /usr/bin/passwd 會發現passwd文件含有特殊的s權限
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd
set_uid介紹
- set_uid(s):該權限針對二進制可執行文件使文件在執行階段具備文件全部者的權限。
- 可使用chmod u+(-)s 【二進制文件名】 來設置權限。
- 至關於set_uid設置user的權限位。
[root@hf-01 ~]# ls /etc/shadow
/etc/shadow 改用戶密碼的文件
[root@hf-01 ~]# ls -l !$ 會發現更改密碼的文件權限爲000
ls -l /etc/shadow
----------. 1 root root 665 10月 26 08:04 /etc/shadow
set_uid總結
- set_uid命令,就是保證普通用戶臨時擁有該命令全部者的身份
- 給一個文件設置set_uid擁有臨時全部者的權限
- 前提,是該文件必須是二進制文件,並且是一個可執行(x)的文件
-
- 例如:ls,passwd這些文件就是二進制文件
- 而像,1.txt去設置set_uid權限是沒有意義的
- 小寫的s包括了x權限,大寫的S表示沒有x權限
[root@hf-01 ~]# ls -l /usr/bin/ls 這裏想給ls命令加一個
-rwxr-xr-x. 1 root root 117616 6月 10 2014 /usr/bin/ls
而後複製SSH渠道,打開另外一個終端2hf(1)下
[root@hf-01 ~]# su - hanfeng 切換到普通用戶hanfeng下去
[hanfeng@hf-01 ~]$ whoami 來查看當前用戶
hanfeng
[hanfeng@hf-01 ~]$ ls /root/ 這時訪問/root/目錄,會提示沒權限
ls: 沒法打開目錄/root: 權限不夠
這時回到以前的終端下1hf(0)下
[root@hf-01 ~]# chmod u+s /usr/bin/ls 給ls命令增長+s權限
[root@hf-01 ~]# ls -l /usr/bin/ls 這時查看ls命令,會發現x變化爲了s權限(小寫的s包括了x權限,大寫的S表示沒有x權限)
-rwsr-xr-x. 1 root root 117616 6月 10 2014 /usr/bin/ls
在切換到另外一個終端2hf(1)下
[hanfeng@hf-01 ~]$ ls /root/ 這時會看到有訪問權限了,就是由於set_uid權限賦給ls。(當在其餘用戶下使用ls命令時,在執行過程當中會以root身份來運行)
11.txt 123 234 2.txt 33.txt anaconda-ks.cfg.1 ha.txt hf
[hanfeng@hf-01 ~]$ ls -ld /root/
dr-xr-x---. 5 root root 4096 10月 26 09:41 /root/
回到終端1hf(0)下
[root@hf-01 ~]# chmod u-s /usr/bin/ls 去除set_uid賦予給ls的權限
set_uid的寫法
[root@hf-01 ~]# chmod u+s /usr/bin/ls 命令ls被賦予了s權限
[root@hf-01 ~]# chmod u-s /usr/bin/ls 收回s權限
[root@hf-01 ~]# chmod u=rws /usr/bin/ls 這也是賦予ls權限的方法,可是它缺乏可執行的權限(小寫的s包括了x權限,大寫的S表示沒有x權限)
[root@hf-01 ~]# !ls 會發現這裏顯示的是大寫S
ls -l /usr/bin/ls
-rwSr-xr-x. 1 root root 117616 6月 10 2014 /usr/bin/ls
[root@hf-01 ~]# chmod u+x /usr/bin/ls 在這裏再給它加上+x可執行的權限便可
[root@hf-01 ~]# !ls 會發現這裏顯示的是小寫s
ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117616 6月 10 2014 /usr/bin/ls
[root@hf-01 ~]#
- 目錄可增長set_uid權限,可是基本沒啥做用,目錄基本不用去執行啥
- set_uid權限自己的做用就是給一個普通用戶的用戶執行,臨時擁有全部者的身份