原文地址: http://linux.vbird.org/linux_basic/0220filemanager.php#suid_sgid_sbit
- SUID/SGID/SBIT 權限設定
前面介紹過 SUID 與 SGID 的功能,那麼如何設定檔案使成為具有 SUID 與 SGID 的權限呢? 這就需要第六章的數字更改權限的方法了! 現在你應該已經知道數字型態更改權限的方式為『三個數字』的組合, 那麼如果在這三個數字之前再加上一個數字的話,最前面的那個數字就代表這幾個權限了!
- 4 為 SUID
- 2 為 SGID
- 1 為 SBIT
假設要將一個檔案權限改為『-rwsr-xr-x』時,由於 s 在使用者權限中,所以是 SUID ,因此, 在原先的 755 之前還要加上 4 ,也就是:『 chmod 4755 filename 』來設定!此外,還有大 S 與大 T 的產生喔!參考底下的範例啦!
Tips: 注意:底下的範例只是練習而已,所以鳥哥使用同一個檔案來設定,你必須瞭解 SUID 不是用在目錄上,而 SBIT 不是用在檔案上的喔! | ![]() |
[root@www ~]# cd /tmp [root@www tmp]# touch test <==建立一個測試用空檔 [root@www tmp]# chmod 4755 test; ls -l test <==加入具有 SUID 的權限 -rwsr-xr-x 1 root root 0 Sep 29 03:06 test [root@www tmp]# chmod 6755 test; ls -l test <==加入具有 SUID/SGID 的權限 -rwsr-sr-x 1 root root 0 Sep 29 03:06 test [root@www tmp]# chmod 1755 test; ls -l test <==加入 SBIT 的功能! -rwxr-xr-t 1 root root 0 Sep 29 03:06 test [root@www tmp]# chmod 7666 test; ls -l test <==具有空的 SUID/SGID 權限 -rwSrwSrwT 1 root root 0 Sep 29 03:06 test |
最後一個例子就要特別小心啦!怎麼會出現大寫的 S 與 T 呢?不都是小寫的嗎? 因為 s 與 t 都是取代 x 這個權限的,但是你有沒有發現阿,我們是下達 7666 喔!也就是說, user, group 以及 others 都沒有 x 這個可執行的標誌( 因為 666 嘛 ),所以,這個 S, T 代表的就是『空的』啦!怎麼說? SUID 是表示『該檔案在執行的時候,具有檔案擁有者的權限』,但是檔案 擁有者都無法執行了,哪裡來的權限給其他人使用?當然就是空的啦! ^_^
而除了數字法之外,妳也可以透過符號法來處理喔!其中 SUID 為 u+s ,而 SGID 為 g+s ,SBIT 則是 o+t 囉!來看看如下的範例:
# 設定權限成為 -rws--x--x 的模樣: [root@www tmp]# chmod u=rwxs,go=x test; ls -l test -rws--x--x 1 root root 0 Aug 18 23:47 test # 承上,加上 SGID 與 SBIT 在上述的檔案權限中! [root@www tmp]# chmod g+s,o+t test; ls -l test -rws--s--t 1 root root 0 Aug 18 23:47 test |
(二) 下面是find命令中有关于 permision的部分:
選項與參數: 3. 與檔案權限及名稱有關的參數: -name filename:搜尋檔案名稱為 filename 的檔案; -size [+-]SIZE:搜尋比 SIZE 還要大(+)或小(-)的檔案。這個 SIZE 的規格有: c: 代表 byte, k: 代表 1024bytes。所以,要找比 50KB 還要大的檔案,就是『 -size +50k 』 -type TYPE :搜尋檔案的類型為 TYPE 的,類型主要有:一般正規檔案 (f), 裝置檔案 (b, c), 目錄 (d), 連結檔 (l), socket (s), 及 FIFO (p) 等屬性。 -perm mode :搜尋檔案權限『剛好等於』 mode 的檔案,這個 mode 為類似 chmod 的屬性值,舉例來說, -rwsr-xr-x 的屬性為 4755 ! -perm -mode :搜尋檔案權限『必須要全部囊括 mode 的權限』的檔案,舉例來說, 我們要搜尋 -rwxr--r-- ,亦即 0744 的檔案,使用 -perm -0744, 當一個檔案的權限為 -rwsr-xr-x ,亦即 4755 時,也會被列出來, 因為 -rwsr-xr-x 的屬性已經囊括了 -rwxr--r-- 的屬性了。 -perm +mode :搜尋檔案權限『包含任一 mode 的權限』的檔案,舉例來說,我們搜尋 -rwxr-xr-x ,亦即 -perm +755 時,但一個檔案屬性為 -rw------- 也會被列出來,因為他有 -rw.... 的屬性存在! 範例五:找出檔名為 passwd 這個檔案 [root@www ~]# find / -name passwd # 利用這個 -name 可以搜尋檔名啊! 範例六:找出 /var 目錄下,檔案類型為 Socket 的檔名有哪些? [root@www ~]# find /var -type s # 這個 -type 的屬性也很有幫助喔!尤其是要找出那些怪異的檔案, # 例如 socket 與 FIFO 檔案,可以用 find /var -type p 或 -type s 來找! 範例七:搜尋檔案當中含有 SGID 或 SUID 或 SBIT 的屬性 [root@www ~]# find / -perm +7000 # 所謂的 7000 就是 ---s--s--t ,那麼只要含有 s 或 t 的就列出, # 所以當然要使用 +7000 ,使用 -7000 表示要含有 ---s--s--t 的所有三個權限, # 因此,就是 +7000 ~瞭乎? |
上述範例中比較有趣的就屬 -perm 這個選項啦!他的重點在找出特殊權限的檔案囉! 我們知道 SUID 與 SGID 都可以設定在二進位程式上,假設我想要找出來 /bin, /sbin 這兩個目錄下, 只要具有 SUID 或 SGID 就列出來該檔案,你可以這樣做:
[root@www ~]# find /bin /sbin -perm +6000
|
因為 SUID 是 4 分,SGID 2 分,總共為 6 分,因此可用 +6000 來處理這個權限! 至於 find 後面可以接多個目錄來進行搜尋!
(三) 權限與指令間的關係:
我們知道權限對於使用者帳號來說是非常重要的,因為他可以限制使用者能不能讀取/建立/刪除/修改檔案或目錄! 在這一章我們介紹了很多檔案系統的管理指令,第六章則介紹了很多檔案權限的意義。在這個小節當中, 我們就將這兩者結合起來,說明一下什麼指令在什麼樣的權限下才能夠運作吧!^_^
一、讓使用者能進入某目錄成為『可工作目錄』的基本權限為何:
- 可使用的指令:例如 cd 等變換工作目錄的指令;
- 目錄所需權限:使用者對這個目錄至少需要具有 x 的權限
- 額外需求:如果使用者想要在這個目錄內利用 ls 查閱檔名,則使用者對此目錄還需要 r 的權限。
二、使用者在某個目錄內讀取一個檔案的基本權限為何?
- 可使用的指令:例如本章談到的 cat, more, less等等
- 目錄所需權限:使用者對這個目錄至少需要具有 x 權限;
- 檔案所需權限:使用者對檔案至少需要具有 r 的權限才行!
三、讓使用者可以修改一個檔案的基本權限為何?
四、讓一個使用者可以建立一個檔案的基本權限為何?
- 目錄所需權限:使用者在該目錄要具有 w,x 的權限,重點在 w 啦!
五、讓使用者進入某目錄並執行該目錄下的某個指令之基本權限為何?
- 目錄所需權限:使用者在該目錄至少要有 x 的權限;
- 檔案所需權限:使用者在該檔案至少需要有 x 的權限
例題:
讓一個使用者 vbird 能夠進行『cp /dir1/file1 /dir2』的指令時,請說明 dir1, file1, dir2 的最小所需權限為何?
答:
執行 cp 時, vbird 要『能夠讀取來源檔,並且寫入目標檔!』所以應參考上述第二點與第四點的說明! 因此各檔案/目錄的最小權限應該是:
|
例題:
有一個檔案全名為 /home/student/www/index.html ,各相關檔案/目錄的權限如下:
答:
drwxr-xr-x 23 root root 4096 Sep 22 12:09 / drwxr-xr-x 6 root root 4096 Sep 29 02:21 /home drwx------ 6 student student 4096 Sep 29 02:23 /home/student drwxr-xr-x 6 student student 4096 Sep 29 02:24 /home/student/www -rwxr--r-- 6 student student 369 Sep 29 02:27 /home/student/www/index.html請問 vbird 這個帳號(不屬於student群組)能否讀取 index.html 這個檔案呢?
雖然 www 與 index.html 是可以讓 vbird 讀取的權限,但是因為目錄結構是由根目錄一層一層讀取的, 因此 vbird 可進入 /home 但是卻不可進入 /home/student/ ,既然連進入 /home/student 都不許了, 當然就讀不到 index.html 了!所以答案是『vbird不會讀取到 index.html 的內容』喔!
那要如何修改權限呢?其實只要將 /home/student 的權限修改為最小 711 ,或者直接給予 755 就可以囉! 這可是很重要的概念喔! |
(四) 權限與指令間的關係:
我們知道權限對於使用者帳號來說是非常重要的,因為他可以限制使用者能不能讀取/建立/刪除/修改檔案或目錄! 在這一章我們介紹了很多檔案系統的管理指令,第六章則介紹了很多檔案權限的意義。在這個小節當中, 我們就將這兩者結合起來,說明一下什麼指令在什麼樣的權限下才能夠運作吧!^_^
一、讓使用者能進入某目錄成為『可工作目錄』的基本權限為何:
- 可使用的指令:例如 cd 等變換工作目錄的指令;
- 目錄所需權限:使用者對這個目錄至少需要具有 x 的權限
- 額外需求:如果使用者想要在這個目錄內利用 ls 查閱檔名,則使用者對此目錄還需要 r 的權限。
二、使用者在某個目錄內讀取一個檔案的基本權限為何?
- 可使用的指令:例如本章談到的 cat, more, less等等
- 目錄所需權限:使用者對這個目錄至少需要具有 x 權限;
- 檔案所需權限:使用者對檔案至少需要具有 r 的權限才行!
三、讓使用者可以修改一個檔案的基本權限為何?
四、讓一個使用者可以建立一個檔案的基本權限為何?
- 目錄所需權限:使用者在該目錄要具有 w,x 的權限,重點在 w 啦!
五、讓使用者進入某目錄並執行該目錄下的某個指令之基本權限為何?
- 目錄所需權限:使用者在該目錄至少要有 x 的權限;
- 檔案所需權限:使用者在該檔案至少需要有 x 的權限
例題:
讓一個使用者 vbird 能夠進行『cp /dir1/file1 /dir2』的指令時,請說明 dir1, file1, dir2 的最小所需權限為何?
答:
執行 cp 時, vbird 要『能夠讀取來源檔,並且寫入目標檔!』所以應參考上述第二點與第四點的說明! 因此各檔案/目錄的最小權限應該是:
|
例題:
有一個檔案全名為 /home/student/www/index.html ,各相關檔案/目錄的權限如下:
答:
drwxr-xr-x 23 root root 4096 Sep 22 12:09 / drwxr-xr-x 6 root root 4096 Sep 29 02:21 /home drwx------ 6 student student 4096 Sep 29 02:23 /home/student drwxr-xr-x 6 student student 4096 Sep 29 02:24 /home/student/www -rwxr--r-- 6 student student 369 Sep 29 02:27 /home/student/www/index.html請問 vbird 這個帳號(不屬於student群組)能否讀取 index.html 這個檔案呢?
雖然 www 與 index.html 是可以讓 vbird 讀取的權限,但是因為目錄結構是由根目錄一層一層讀取的, 因此 vbird 可進入 /home 但是卻不可進入 /home/student/ ,既然連進入 /home/student 都不許了, 當然就讀不到 index.html 了!所以答案是『vbird不會讀取到 index.html 的內容』喔!
那要如何修改權限呢?其實只要將 /home/student 的權限修改為最小 711 ,或者直接給予 755 就可以囉! 這可是很重要的概念喔! |