文件的特殊權限SGID, SUID..SBIT
大家都知道文件和目錄的權限最常見的有三個.可讀(r)..可寫(w)..可執行(x)..它們的級別分別是4..2..1..我們有時也會發現有些文件 所屬主的權限上帶有一個s的標志位.目錄的所屬組上也帶有s標志位.很多人不理解這是為什么....下面我們舉例來看一下...
#ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 19876 Jul 17 2006 /usr/bin/passwd
這個文件的所屬主的x標志位上變成了s,這時稱為set uid ..簡寫就是suid..其實這個文件屬性也沒有特殊的含義..當這個s標志位出現在一些腳本上時,它就有意義了...比方說我我們有一個腳本名為sum.sh.這個腳本的權限如下:
-rwsrwxr-x 1 root root 117 Feb 6 20:46 sum.sh
這個腳本的所屬主和所屬組為root.我們當然可以以root的用戶的身份執行它..我們還可以看見它的所屬主的標志位上有個s..其他人有讀取和執行的 權限.假如我們現在有個普通用戶名為redhat..現在切換到redhat..執行此腳本..表面上我們看是執行成功了..其實我們是借助root用戶 的身份來執行它..而不是redhat..這就是suid的特性....
下滿我們來說下SGID,看了上面的SUID后很容易就知道所謂SGID就是將標志s加到gid的x標志位上..稱為set gid.簡稱sgid..在這強調一下SUID我們一般用在文件上.特別是一些腳本上...SGID用在目錄上最多...比方說我以root身份創建一個 目錄a.給他加上sgid權限
#mkdir a
#chmod 2757 a
#ls -l
drwxr-srwx 2 root root 4096 Feb 6 21:09 a
因為我們給a目錄其他人所具有的權限是可讀,可寫,可執行...當我們以redhat用戶的身份切換到另外一個終端..進入a目錄中,我們在此目錄中創建一個目錄b和一個文件c
[redhat@station18 a]$ mkdir b
[redhat@station18 a]$ touch c
[redhat@station18 a]$ ls -l
drwxrwsr-x 2 redhat root 4096 Feb 6 21:20 b
-rw-rw-r-- 1 redhat root 0 Feb 6 21:20 c
我們可以看到目錄b和文件c的所屬組都為root......當你將一個a目錄置為sgid權限時候,如果其他人有讀取,執行和寫入的權限時,別人在此目 錄中創建的任何文件和目錄的所屬組都為a目錄的所屬組..但所屬主還是自己...這個會經常的用到....有一點大家得注意...就是任何人在a目錄中創 建的東西.別人都可以刪掉...這就是我們下面要講到的SBIT....
SBIT 全稱Sticky Bit.但是它只對目錄有效,對文件卻是無效的,它的作用就是防止別人刪除對方的資料...我們舉例來說明...
1..我用root用戶登錄創建一個目錄名為test
[root@station18 ~]# mkdir test
[root@station18 ~]# chmod o+w test/
[root@station18 ~]# ls -l
drwxr-xrwx 2 root root 4096 Feb 6 21:30 test
2..我們切換到redhat用戶登錄一個終端,創建一個目錄a..
[redhat@station18 test]$ mkdir a
3.我們在切換到xiaoming用戶登錄一個終端,創建一個目錄b...
[xiaoming@station18 test]$ mkdir b
[xiaoming@station18 test]$ ls -l
drwxrwxr-x 2 redhat redhat 4096 Feb 6 21:32 a
drwxrwxr-x 2 xiaoming xiaoming 4096 Feb 6 21:31 b
我們可以以任何用戶的身份進入test目錄發現可以刪除a和b目錄...這樣就亂了套...別人的目錄你豈能隨便刪的...這時我們就需要將test目錄加上SBIT權限了...
[root@station18 ~]# chmod 1757 test/
[root@station18 ~]# ls -l
drwxr-xrwt 4 root root 4096 Feb 6 21:42 test
我們在用別的用戶登錄進入test目錄他就刪不掉別人的資料了,系統會提示rm: cannot remove directory `a': Operation not permitted..意思是你權限不夠....呵呵...這樣別人就沒轍了....我測試過成功的...
下面我來說一下關于SUID SGID SBIT權限的設定...
SUID為4
SGID為2
SBIT為1
我在上面設定一些文件或目錄的權限你可能看不懂,,下面我來詳細講解...
假如我們有個文件叫file.有一個目錄叫test..file它的權限是644..test的權限是755
1..如果我們想把file加上suid權限的話執行此命令
#chmod 4755 file
2..如果我們想把test目錄加上sgid的話執行此命令
#chmod 2755 test/
3.如果我們想把test目錄加上sbit權限的話執行此命令
#chmod 1755 test/
4..大家可以看得出來s與t都是取代x權限的...
5..如果不想讓test具備SUID和SGID權限執行此命令
#chmod 7666 file
#ls -l
-rwSrwSrwT 1 root root 0 Feb 6 21:49 file
這里的S和T就代表空..不具備其他人執行的權限...7666也就是說用戶,組,以及其他的人都不具備x的權限,除了root.任何人修改不了此文件...
這兒我用數字代替給文件加一些 權限....我們也可以用別的方法.比方說..我們給file文件加上suid權限
#chmod u=rwxs,o=rx file
給test目錄加上SGID權限和other可讀取寫入執行權限
#chmod g+s,o=wrx test/
給test目錄加上SBIT權限和other可讀取寫入執行權限
#chmod o=rwxt test/
posted on 2013-01-07 19:51
小果子 閱讀(652)
評論(0) 編輯 收藏 引用 所屬分類:
Linux