SetUID与SetGID应用

一些有经验的Linux人员我相信都知道Linux权限中有一些不为人知的权限.了解了这些权限对以后更好管理服务器安全有很大的管理,下面我们就来谈谈.
相对于Windows系统的安全权限设置来说Linux安全权限设置相对来麻烦些..起码没有Win人性化..但也这无非这个RWX这三个权限的互相搭配和使用,我相信大家都知道的..好,不知大家是否留意看/bin/su,/usr/sbin/passwd等等这个目录以及文件的属性.
如: /etc/passwd -rw-r--r-- 1 root root
      /etc/shadow -r-------- 1 root root
     按照上面的二种权限来看的话,/etc/passwd只有root才有写入的权限..那为什么,我su - skycn时,用passwd修改skycn密码没有任何问题呢?再来看看/etc/shadow的权限,默认应该是只有root才能读,其它用户应该是连写的权限都没有...那修改密码的奥秘又在那里呢?接下来出场的就是今天的主角SetUID,SetGID.
   先来看看这个权限/bin/su -rws-r-xr-x 1 root root
                        /usr/bin/passwd -r-s--x--x 1 root root
   注意看到没有那个s权限是什么呢?s就是SetUID的标识,有了这个标识当用户执行此命令时,将拥有此命令相当于root的权限操作,这就是为什么当普通用户使用/etc/passwd修改密码可能正常修改的原因了.SetUID只会出现了Binary file中,目录中存在将没有意思...还有一点就是当其它用户使用带用Setuid标识的命令时,自己对此命令也必需有X(执行)的权限,否则一切都免谈..这点应该不难理解的..^_^
    SetGID如果标识在文件中的话,那么执行用户将会拥有此命令所属组的权限..
    SetGID如果标识在目录中,那么执行者将在此目录下建立的目录以及文件所属将会是目录的所属组.

规范的说
setuid: 设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.

setgid: 该权限只对目录有效. 目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.

sticky bit: 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于该文件所属的组是否对该用户具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件. 如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky bit位. 设置该位后, 就算用户对目录具有写权限, 也不能删除该文件.

下面说一下如何操作这些标志:

操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作,

1) chmod u+s temp -- 为temp文件加上setuid标志. (setuid 只对文件有效)

chmod g+s tempdir -- 为tempdir目录加上setgid标志 (setgid 只对目录有效)

chmod o+t temp -- 为temp文件加上sticky标志 (sticky只对文件有效)

 

 

檔案特殊權限: SUID, SGID, SBIT

------------------------------------------------------------------------------------------------------------------------------------------------

http://linux.vbird.org/linux_basic/0220filemanager.php#suid_set

 

SUID/SGID/SBIT 權限設定

前面介紹過 SUID 與 SGID 的功能,那麼如何設定檔案使成為具有 SUID 與 SGID 的權限呢? 這就需要第六章的數字更改權限的方法了! 現在你應該已經知道數字型態更改權限的方式為『三個數字』的組合, 那麼如果在這三個數字之前再加上一個數字的話,最前面的那個數字就代表這幾個權限了!

4 為 SUID2 為 SGID1 為 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值