歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux特殊權限詳述

Linux特殊權限詳述

日期:2017/2/28 14:21:49   编辑:Linux教程

Linux引入suid、sgid、sticky這三種特殊權限,能夠更加方便、有效和安全地控制文件。

當在一個目錄或文件上加入suid特殊權限時,如過原來目錄或文件的屬主具有x(執行)權限,就會用小寫的s來替代x;如果原來文件或目錄不具有x(執行)權限,就會用大寫的S來代替x。

同樣,sgid和suid相同,如過原來目錄或文件的屬組具有x(執行)權限,就會用小寫的s來替代x;如果原來文件或目錄不具有x(執行)權限,就會用大寫的S來代替X。

同樣,如果在一個文件或目錄上加入sticky權限時,若原文件或目錄的其他用戶有x(可執行)權限時,就用小寫t代替x;如果原文件或目錄沒有x權限時,就用大寫T替代x權限。下例說明。

可以chmod的字符或數字的方式修改特殊權限,下例以數字方式實現。

# -rw-r--r-- 1 root root 0 Nov 6 07:40 test1 ugo都沒執行權限
# chmod 7644 test1 原權限是644,都加上特殊權限
# -rwSr-Sr-T 1 root root 0 Nov 6 07:43 test1 屬主、屬組、其他用戶執行權限變為S、S、T.

# -rwxr-xr-x 1 root root 0 Nov 6 07:43 test2 ugo都有執行權限
# chmod 7755 test2 原權限是655,都加上特殊權限
# -rwsr-sr-t 1 root root 0 Nov 6 07:49 test2 屬主、屬組、其他用戶執行權限變為s、s、t.

特殊權限對可執行文件的作用:
suid特殊權限是以可執行文件的所有者的權限來運行這一文件,不是以執行者的權限運行該命令。
sgid特殊權限是以可執行文件的群組的權限來運行這一文件。下例說明:
ls -l /bin/ping
-rwsr-xr-x 1 root root 35832 Apr 24 2009 /bin/ping
可見ping命令有suid特殊權限。ping可以測試網絡是否連通。切換到yaoyao用戶,ping一下可見網絡確實連通。
[yaoyao@localhost test2]# ping www.baidu.com -c4
PING www.linuxidc.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121: icmp_seq=1 ttl=47 time=10.0 ms
64 bytes from 61.135.169.121: icmp_seq=2 ttl=46 time=14.3 ms
64 bytes from 61.135.169.121: icmp_seq=3 ttl=46 time=17.7 ms
64 bytes from 61.135.169.121: icmp_seq=4 ttl=46 time=23.9 ms

--- www.linuxidc.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 10.090/16.539/23.938/5.067 ms
切換到root用戶,用chmod命令去掉ping命令的suid權限,再切換到yaoyao用戶,測試一下是否能ping通。
# chmod u-s /bin/ping
# ls -l /bin/ping
# -rwxr-xr-x 1 root root 35832 Apr 24 2009 /bin/ping
$ $ ping www.baidu.com
ping: icmp open socket: Operation not permitted
這次就無法ping通,由此可見,suid特殊權限是以可執行文件的所有者的權限來運行這一文件,不是以執行者的權限運行該命令。

特殊權限對目錄的作用:
在一個目錄上設置了sticky特殊權限,只有文件的所有者和用戶才能刪除該目錄的文件,而不理會屬組和其他用戶的寫權限。
在一個目錄上設置sgid特殊權限,則只要是同組成員,都可以在此目錄查看、創建、刪除文件。
經常會對目錄設置sticky和suid權限以方便管理。即同組成員可以查看和寫入本目錄下的各個文件,卻不能刪除。如下:
首先創建兩個用戶xiaoyao和linuxidc用於測試,再創建一個house目錄。創建一個love分組,於是xiaoyao和linuxidc便相愛了...將這對戀人xiaoyao和linuxidc加入love分組,house目錄屬組設置為love,再給house目錄設置sgid和sticky這兩個特殊權限。

# useradd xiaoyao
# useradd linuxidc
# mkdir house
# groupadd love

將xiaoyao和linuxidc加入love組內。
# usermod -G love xiaoyao
# usermod -G love linuxidc

#id xiaoyao;id linuxidc
uid=503(xiaoyao) gid=504(xiaoyao) groups=504(xiaoyao),506(love) context=root:system_r:unco nfined_t:SystemLow-SystemHigh
uid=504(linuxidc) gid=505(linuxidc) groups=505(linuxidc),506(love) context=root:system_r:u nconfined_t:SystemLow-SystemHigh 可以看到用戶xiaoyao和linuxidc都在love組內。

將house目錄屬組改為love組
# chown :love house
# ls -l
drwxr-xr-x 2 root love 4096 Nov 6 09:34 house

添加sgid和sticky特殊權限,並且屬組具有寫權限(屬組內用戶可以創建文件,否則不能)。
# chmod 3775 house
drwxr-sr-t 2 root love 4096 Nov 6 09:34 house

切換到用戶linuxidc,並創建文件xiaoming,寫入一句話"I love you"
$ echo "I love you xiaoyao." > linuxidc

切換到用戶xiaoyao,創建文件xiaoyao,且寫入"Me too."
$ echo "Me too" > xiaoyao

查看house目錄內容,可發現所創建文件屬組都是love。
ls -l
-rw-rw-r-- 1 linuxidc love 19 Nov 6 09:40 linuxidc
-rw-rw-r-- 1 xiaoyao love 6 Nov 6 09:41 xiaoyao

用戶xiaoyao嘗試刪除house目錄下的linuxidc,這時提示不允許,但可以寫入,這就是共享信息吧。
[xiaoyao@localhost house]$ rm linuxidc
rm: cannot remove `linuxidc': Operation not permitted
$ echo "Baby." >> linuxidc
$ cat linuxidc
Me too.
Baby.

Linux ACL權限規劃:getfacl,setfacl使用 http://www.linuxidc.com/Linux/2013-07/88049.htm

Linux權限補充:rwt rwT rws rwS 特殊權限 http://www.linuxidc.com/Linux/2013-07/87537.htm

Linux用戶及用戶組權限 http://www.linuxidc.com/Linux/2013-05/84980.htm

Linux三個特殊權限 setuid setgid stick bit http://www.linuxidc.com/Linux/2013-08/88587.htm

Copyright © Linux教程網 All Rights Reserved