linux档案文件管理,鳥哥的 Linux 私房菜 -- 檔案與目錄管理

SUID 與 SGID:

其實,說到這裡之前,應該先說明一下 UID (user

ID)與 GID (Groupt ID)的!基本上, Linux 認得的帳號只是一堆數字而已!而由於我們每個檔案中同時含有『使用者』與『使用者群組』的屬性,因此,就有所謂的

UID 與 GID 囉! UID 代表我們的使用者『代號』而 GID 則是群組的『代號』。你可以使用『

more /etc/passwd 』這個指令來看一下你的系統當中的所有帳號,然後你會注意到每行的第三、四個欄位(以

: 分隔)為數字,那個就是 UID 與 GID 了,您更會注意到的是, root 的 UID

與 GID 都是 0 !因此,當你建立了一個帳號,而你將該帳號的 UID 與 GID 都改為零,呵呵!那個帳號的使用者就具有

root 的身份囉!

那麼什麼是 SUID 與 SGID 呢?!在說明之前我們先來以一般身份使用者

( 還記得安裝的時候曾經增加一個 test 帳號的一般身份使用者嗎?對啦!用他!然後呢?直接在鍵盤上按下

[Alt] + [Ctrl] + [F2] 到第二個終端機呀!) test 的身份登入,再來看一個檔案的內容:

[test@test

test]$ls -l /usr/bin/passwd

-r-s--x--x

1 root     root

13476 Aug  7  2001 /usr/bin/passwd

看到了 /usr/bin/passwd 檔案的前面屬性了嗎?怎麼會有

s 的屬性在原本的 x 呀!?那個就是所謂的 SUID 了!如果是『 -r-xr-s--x 』時,那麼

s 就成為所謂的 SGID 了!

『當一個檔案具有

SUID 的時候,同時 other 的群組具有可執行的權限,那麼當 others 群組執行該程式的時候,

other 將擁有該檔案的 owner 的權限!』。

[test@test

test]$ls -l /usr/bin/passwd /etc/shadow

-r-s--x--x

1 root     root

13476 Aug  7  2001 /usr/bin/passwd

-rw-------

1 root     root

2423 Jun 25 14:29 /etc/shadow

我們以帳號的密碼檔來說明好了!注意上面的範例囉!可以看到的是,

/etc/shadow 的權限是『只有 root 才能存取』呦!那麼你會不會覺得很奇怪?明明我的一般使用者可以自己修改密碼呀!對不對?那麼修改密碼一定跟

/etc/shadow 這個檔案有關,那麼怎麼回事呀!?使用者是如何修改 /etc/shadow

這個檔案的呢?嗯!沒錯!就是使用 SUID 的功能啦!上面的例子說明了, /usr/bin/passwd

這個檔案具有 SUID 的屬性,那麼當使用者使用 /usr/bin/passwd 這個執行檔時,在執行

pass word 修改的期間就具有 /usr/bin/passwd 這個檔案的擁有者 root 的所屬權限囉!所以,所以當一般使用者執行

passwd 的時候,將具有 root 的權限,所以他們也可以更改 /etc/shadow 的內容囉!那麼由此也可以知道,由於這個

Set UID ( SUID ) 的主要功能是在『某個檔案執行的期間具有檔案擁有者的權限』,因此,

s 就是替代上面提到的 x 這個可執行的位置囉!那萬一該檔案並沒有 x 的屬性呢?哈哈!問的好!那麼該檔案的屬性就會將小寫的

s 變成大寫的 S 啦! ( 這裡即使暫時不瞭解也沒有關係,等到過一陣子再回來看一看,你就會瞭解啦!

)

不過,由此也知道 SUID 與 SGID 的問題所在,沒錯!就是太不安全了!如果你有一個檔案具有

root 的權限,那麼當開啟了 SUID 的時候,嘿嘿!夠你瞧的了!!因此上,在變更一個檔案成為具有

SUID 或 SGID 的情況時,必須要特別小心呢!知道乎!?

Sticky bit:

OK!接著下來,我們要來看一下,既然有 SUID 與

SGID ,那麼為什麼沒有在最末位出現 s 取代 x 呢?呵呵!這當然沒有必要啦!因為那是屬於

others 的權限,你的檔案如果是任何人皆可執行的話,那麼本來他們就具有權限啦!幹嘛還要設定

s 的屬性!?不過,這裡卻真的有另一個屬性出現了,那就是 Sticky bit 的屬性

( t ) !這個屬性的最大用處在於『具有 sticky

bit 屬性的該”目錄”下的檔案,其檔案或目錄只有檔案擁有者及 root 才有權力刪除!』這樣是否可以瞭解了呢?嘿嘿!沒錯!在我們系統裡面本來就預設有一個啦!那就是

/tmp 這個目錄!

[test@test

test]$ls -l /

drwxrwxrwt

2 root     root

4096 Jul 18 13:08 tmp

如何,發現了吧!雖然該目錄具有所有人皆可讀寫的權限,但是確有一個

t

出現了,那就是所謂的 sticky bit 囉!在該目錄裡面雖然你可以建立與修改任何檔案,但是卻僅能刪除自己建立的檔案呢!除非你是

root !你可以這樣試試看囉:

1. 以 root 登入系統,並且進入 /tmp 當中;

2. touch test,並且更改 test 權限成為 777 ;

3. 以一般使用者登入,並進入 /tmp;

4. 嘗試刪除 test 這個檔案!

如何!?發現了吧!!

SUID, SGID, Sticky bit 的設定方法:

前面介紹過 SUID 與 SGID 的功能,那麼如何開啟檔案使成為具有 SUID 與

SGID 的權限呢?!這就需要剛剛的數字更改權限的方法了!現在你應該已經知道數字型態個更改權限方式為『三個數字』的組合,那麼如果在這三個數字之前再加上一個數字的話,那最前的面數字就代表這幾個屬性了!

( 註:通常我們使用 chmod xyz

filename 的方式來設定 filename 的屬性時,則是假設沒有 SUID, SGID

及 Sticky bit 啦! )

4 為 SUID

2 為 SGID

1 為 Sticky bit

假設要將一個檔案屬性改為『-rwsr-xr-x』時,由於

s 在使用者權限中,所以是 SUID ,因此,在原先的 755 之前還要加上 4 ,也就是:『chmod 4755 filename 』來設定!此外,還有大 S 與大 T 的產生喔!參考底下的範例啦!

[root@test

tmp]#touch test

[root@test

tmp]#ll

total 0

-rw-r--r--1 root     root

0 Feb  6 23:08 test

[root@test

tmp]#chmod 4755 test

[root@vbird

tmp]#ll

total 0

-rwsr-xr-x1 root     root

0 Feb  6 23:08 test*

[root@test

tmp]#chmod 6755 test

[root@test

tmp]#ll

total 0

-rwsr-sr-x1 root     root

0 Feb  6 23:08 test*

[root@test

tmp]#chmod 1755 test

[root@test

tmp]#ll

total 0

-rwxr-xr-t1 root     root

0 Feb  6 23:08 test*

上面的三個例子應該都很好說明啊!就是直接將

x 以 s 或者是 t 來取代就是了!也就是分別為 SUID, SGID 及 sticky bit 的設定方法啦!

[root@test tmp]#chmod

7666 test

[root@test

tmp]#ll

total 0

-rwSrwSrwT1 root     root

0 Feb  6 23:08 test

這個例子就要特別小心啦!怎麼會出現大寫的

S 與 T 呢?不都是小寫的嗎?因為 s 與 t 都是取代 x 這個參數的,但是你有沒有發現阿,我們是下達

7666 喔!也就是說, user, group 以及 others 都沒有 x 這個可執行的標誌 (

因為 666 嘛! ),所以,這個 S, T 代表的就是『空的』啦!怎麼說? SUID 是表示『該檔案在執行的時候,具有檔案擁有者的權限』,但是檔案擁有者都無法執行了,哪裡來的權限給其他人使用?當然就是空的啦!

^_^

file

語法:

[root @test

/root ]#file [檔名]

參數說明:

範例:

[root @test

/root]#file ~/.bashrc

/root/.bashrc:

ASCII text<==表示這個檔案是 ASCII

純文字檔

[root @test

/root]#file /usr/bin/passwd

/usr/bin/passwd:

setuid ELF 32-bit LSB executable, Intel 80386, version 1, dynamically linked

(uses shared libs), stripped

嘿!還可以看到是否具有

SUID 的權限呢!

說明:

file 這個指令也蠻好用的,可以用來查看這個檔案的類型,例如

ASCII 格式檔,或者是 binary 的檔案等等,還可以用來觀看檔案是否被加入 SUID

等等的資訊!並且,也同時提供了是否有使用動態函式庫的資訊!相當的好用!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值