特殊權限set_uidset_gidstick_bit軟連接文件硬連接文件
我們之前有用過passwd這個文件這個文件是什麽權限那。我們用which看一下。
可以看到他是紅色的,也可以看到他的權限是rwsr-xr-x平時我們看到的都是rwx沒有s的這個權限,其實他就是set_uid權限
set_uid的作用:
我們Linux系統是一個比較安全的系統,普通用戶改密碼不可能只讓root超級用戶幫他們改。改密碼就是改密碼的配置文件(shadow)從下圖我們可以看到這個文件的權限有多嚴禁,就連root用戶都是000權限,不過root用戶是超級用戶他有至高無上的權利,就算shadow沒有任何權限他一樣可以使用的。普通用戶就不可以。
但是普通用戶有想要改密碼咋辦?這個時候我們的linux程序員就給passwd一個特殊的權限set_uid,set_uid權限會讓普通用戶使用帶set_uid權限的命令的時候
設置set_uid權限必須一個可執行的二進制可執行文件,給普通文件設置set_uid權限是沒有任何意義的
[root@MOMOCO-02 ~]# su - GYB
【進入一個普通用戶】
[GYB@MOMOCO-02 ~]$ whoami
GYB
【查看當前是在什麽用戶下】
[GYB@MOMOCO-02 ~]$ ls /root/
ls: 無法打開目錄/root/: 權限不夠
[GYB@MOMOCO-02 ~]$ ls -ld !$
ls -ld /root/
dr-xr-x---. 4 root root 228 12月 20 13:33 /root/
【可以看到雖然ls有普通用戶的執行權限,但是/root/沒有普通用戶執行的權限,下面我們讓ls臨時擁有所屬者權限】
[root@MOMOCO-02 ~]# chmod u+s /usr/bin/ls
【給一個可執行的二級制文件加上set_uid權限】
[GYB@MOMOCO-02 ~]$ ls /root/
2 2.txt 3.txt 3.txt~ anaconda-ks.cfg
【這樣普通用戶就可以使用ls所屬主身份了】
[root@MOMOCO-02 ~]# chmod u-s /usr/bin/ls
【刪除掉set_uid權限】
[root@MOMOCO-02 ~]# ls -ld !$
ls -ld /usr/bin/ls
-rwxr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
[root@MOMOCO-02 ~]# chmod u=rws !$
【加上set_uid權限】
chmod u=rws /usr/bin/ls
[root@MOMOCO-02 ~]# ls -ld /usr/bin/ls
-rwSr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
【這裏怎麽會變成大寫的S了,是因為你這樣設置權限沒有了x權限了】
[root@MOMOCO-02 ~]# chmod u+x /usr/bin/ls
[root@MOMOCO-02 ~]# ls -ld /usr/bin/ls
-rwsr-xr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
【當我們在加上x權限時他是不是就變成小s了,其實大S或者小s都不受印象】
[GYB@MOMOCO-02 ~]$ ls /root/
2 2.txt 3.txt 3.txt~ anaconda-ks.cfg
註意:目錄我們也可以設置set_uid但是沒有任何的意義。
2.19set_gid
set_gid這個權限和set_uid權限比較像,只不過他是作用在所屬組上的。
[root@MOMOCO-02 ~]# chmod g+s /usr/bin/ls
[root@MOMOCO-02 ~]# ls -ld /usr/bin/ls
-rwxr-sr-x. 1 root root 117656 11月 6 2016 /usr/bin/ls
可以看見他是×××,也可以看到他的權限是rwxr-sr-x,set_gid權限會讓普通用戶使用帶set_gid權限的命令的時候在他執行命令的一瞬間就會臨時給普通用戶一個所屬組的身份。
[GYB@MOMOCO-02 ~]$ ls /root/
2 2.txt 3.txt 3.txt~ anaconda-ks.cfg
[GYB@MOMOCO-02 ~]$ ls -ld /root/
dr-xr-x---. 4 root root 228 12月 20 13:33 /root/
【為什麽也可以用那,以為/root/的所屬組有讀和執行權限,如果我們關掉/root/的所屬組的讀和執行權限還可以用嗎?】
[root@MOMOCO-02 ~]# chmod g= /root/
[root@MOMOCO-02 ~]# ls -ld /root/
dr-x------. 4 root root 228 12月 20 13:33 /root/
[GYB@MOMOCO-02 ~]$ ls /root/
ls: 無法打開目錄/root/: 權限不夠
【看來是不可以的】
[root@MOMOCO-02 ~]# chown :gyb 2
[root@MOMOCO-02 ~]# ls -ld 2
drwxr--r-x. 2 root gyb 6 12月 21 17:03 2
[root@MOMOCO-02 ~]# mkdir 2/3
[root@MOMOCO-02 ~]# touch 2/3.txt
[root@MOMOCO-02 ~]# ls -l 2
總用量 0
drwxr-xr-x. 2 root root 6 12月 21 17:03 3
-rw-r--r--. 1 root root 0 12月 21 17:04 3.txt
[root@MOMOCO-02 ~]# chmod g+s 2
[root@MOMOCO-02 ~]# ls -ld 2
drwxr-Sr-x. 3 root gyb 28 12月 21 17:04 2
[root@MOMOCO-02 ~]# mkdir 2/4
[root@MOMOCO-02 ~]# touch 2/4.txt
[root@MOMOCO-02 ~]# ls -l 2
總用量 0
drwxr-xr-x. 2 root root 6 12月 21 17:03 3
-rw-r--r--. 1 root root 0 12月 21 17:04 3.txt
drwxr-sr-x. 2 root gyb 6 12月 21 17:05 4
-rw-r--r--. 1 root gyb 0 12月 21 17:05 4.txt
【當我們沒有set_gid一個目錄的時候我們在父目錄下創建的子目錄或者子文件他們的所屬組不會和父目錄一樣,當我們set_gid的時候我們再創建的時候他就會和父目錄一樣了】
2.20stick_bit
2.21軟連接文件
2.22硬連接文件
特殊權限set_uid\set_gid\stick_bit\軟連接文件\硬連接文件