pengpenglin
人,必須選擇一種生活方式并有勇氣堅持下去
BlogJava
首頁
新隨筆
新文章
聯系
聚合
管理
posts - 262, comments - 221, trackbacks - 0
【Linux學習筆記】特殊權限
【1.SUID與SGID】
前面我們知道了Linux中文件、目錄一般有rwx三種權限,但是請看下面命令的結果,我們可以發現了多了2個權限:s,t:
[
root@localhost ~
]
# ls -ld /tmp /usr/bin/passwd
drwxrwxrw
t
11
root root
4096
1月
5
21
:
36
/tmp
-r-
s
--x--x
1
root root
19336
2004
-
09
-
07
/usr/bin/passwd
[
root@localhost ~
]
# ls /usr/bin/passwd
其中s權限當出現于用戶的x位置時被稱為SUID,當s權限出現于組用戶的x位置時被稱為SGID (而SGID又分為作用于文件還是目錄,SUID僅對文件有用)
那么這兩個權限有什么作用呢?簡單的概括起來:
①SUID允許執行該文件的用戶在運行時暫時擁有所有者的權限
②SGID允許執行該文件的用戶在運行時暫時擁有用戶組的權限
③如果SGID作用于目錄,則使用者在該目錄下創建的文件,其用戶組都和該目錄一樣
Example 1:修改passwd文件中用戶paul的密碼
我們知道/usr/bin/passwd文件的用戶是root,用戶組也是root,如果沒有s權限,那么光憑用戶paul的x權限我們只能執行而不能看到,更改這個文件的內容。但是實際上我們完全可以通過passwd命令來修改自己的密碼。
[
paul@localhost ~
]
$ passwd
Changing password for user paul.
Changing password for paul
(current) UNIX password:
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[
paul@localhost ~
]
$
那么為什么我們不具備對passwd這個文件rw權限,卻能夠修改這個文件呢?原因就在于我們前面提到的s權限--SUID。從描述可以知道當paul用戶執行該文件時(x權限),可以暫時地獲得用戶root對這個文件的權限,用戶root對passwd是rwx權限,所以我們當然可以修改自己的密碼了。
但一旦我們執行完畢時這個權限就還回去了,如果我們cat這個文件我們會發現沒有權限顯示
[
paul@localhost ~
]
$ cat /usr/bin/passwd
cat: /usr/bin/passwd: 權限不夠
[
paul@localhost ~
]
$
不過SUID和SGID也不是隨便那個人,那個文件都可以用的,必須滿足下面兩個條件
①用戶對要執行的文件必須具備x權限
②SUID,SGID僅對二進制文件起作用
【2.SBIT】
SBIT權限就是前面我們看到的t權限,它只能作用于目錄,它的作用是:但用戶在該目錄下建立文件或目錄時,僅有用戶自己或root用戶有權刪除。其他人無法刪除,而用戶也無法刪除他人的目錄或文件。
[
paul@localhost ~
]
$ ls -ld /tmp
drwxrwxrw
t
11
root root
4096
1月
5
22
:
34
/tmp
[
paul@localhost ~
]
$
我們看到/tmp目錄的x位置被替換成t了,這意味著這個目錄下的內容只有root用戶和創建者有權刪除。
Example 1:試驗SBIT權限
首先我們以paul用戶身份在/tmp目錄下建立一個文件test,并設置成為777權限。讓所有人可以修改文件。
[
paul@localhost tmp
]
$ touch test
[
paul@localhost tmp
]
$ ls -l test
-rw-rw-r--
1
paul paul
0
1月
5
23
:
26
test
[
paul@localhost tmp
]
$ chmod
777
test
[
paul@localhost tmp
]
$ ls -l test
-rwxrwxrwx
1
paul paul
0
1月
5
23
:
26
test
[
paul@localhost tmp
]
$
然后我們以Oracle用戶身份分別嘗試刪除該文件和修改該文件
[
oracle@localhost ~
]
$ cd /tmp
[
oracle@localhost tmp
]
$ ls -l /tmp/test
-rwxrwxrwx
1
paul paul
0
1月
5
23
:
26
/tmp/test
[
oracle@localhost tmp
]
$ rm test
rm: 無法刪除‘test’: 不允許的操作
[
oracle@localhost tmp
]
$ vi test
[
oracle@localhost tmp
]
$ cat test
Modify this file
經過試驗我們發現兩個結果:
①我們不能以Oracle身份刪除test文件,即便/tmp目錄對其他用戶開放w權限
②我們可以Oracle身份修改test文件,因為我們對test文件設置了777權限
這就是SBIT權限的好處,即不會限制正常的刪除,又可以防止意外或惡意的刪除。
【3.如何設置特殊權限】
如何設置權限我們已經在前面提到過了,設置特殊權限也是同樣的。只是特殊權限在設置時是位于普通權限的前面,而且4代表SUID權限,2代表SGID權限,1代表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
注意最后一個7666權限的例子,大寫S和T和上面小寫的s和t不同,這是空的特殊權限的表示。因為本身666已經斷絕了所有人的執行權限,所以特殊權限也就沒有意思了。
(來自《鳥哥的私房菜》的例子)
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
posted on 2009-01-05 22:03
Paul Lin
閱讀(879)
評論(0)
編輯
收藏
所屬分類:
Unix / Linux
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發表評論。
網站導航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關文章:
【Linux學習筆記】壓縮和打包命令
【Linux學習筆記】特殊權限
【Linux學習筆記】文件的尋找
【Linux學習筆記】文件和目錄的默認權限與隱藏權限
【Linux學習筆記】文件操作命令
【Linux學習筆記】目錄操作命令
【Linux學習筆記】分區與目錄
【Linux學習筆記】文件類型與擴展名
【Linux學習筆記】文件權限學習要點
Unix基本概念及入門技術【四】:Solaris下cp命令的若干注意點
Copyright ©2025 Paul Lin Powered by:
博客園
模板提供:
滬江博客
<
2009年1月
>
日
一
二
三
四
五
六
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
(21)
給我留言
查看公開留言
查看私人留言
隨筆分類
J2EE 框架(9)
J2EE基礎(4)
J2SE(43)
Java 工具(5)
Oracle Concept(4)
Oracle SQL/PLSQL(9)
Oracle 開發(13)
Oracle 管理(4)
Oracle 調優
Oracle 錯誤診斷
RoR(19)
UML(3)
Unix / Linux(13)
Web基礎(19)
其它技術(7)
感悟(3)
雜項(7)
架構與性能(8)
模式與重構(19)
灌水(8)
電影與音樂(16)
走過的路(1)
軟件過程與軟件方法(3)
陽光戶外(2)
項目管理(36)
隨筆檔案
2012年2月 (3)
2011年11月 (4)
2011年10月 (1)
2011年9月 (2)
2011年8月 (2)
2011年7月 (5)
2011年6月 (3)
2011年5月 (1)
2011年4月 (1)
2011年3月 (3)
2011年1月 (1)
2010年12月 (1)
2010年11月 (5)
2010年10月 (3)
2010年9月 (1)
2010年7月 (1)
2010年6月 (1)
2010年5月 (4)
2010年4月 (9)
2010年3月 (19)
2010年2月 (8)
2010年1月 (3)
2009年12月 (34)
2009年11月 (1)
2009年10月 (2)
2009年7月 (4)
2009年6月 (5)
2009年5月 (3)
2009年4月 (2)
2009年3月 (1)
2009年2月 (5)
2009年1月 (5)
2008年12月 (13)
2008年11月 (4)
2008年10月 (1)
2008年9月 (6)
2008年8月 (5)
2008年7月 (3)
2008年6月 (31)
2008年5月 (10)
2008年4月 (9)
2008年3月 (7)
2008年2月 (4)
2008年1月 (19)
BlogJava熱點博客
BeanSoft
Jack.Wang
如坐春風
詩特林
鄭暉
銀河使者
阿密果
隔葉黃鶯
好友博客
無羽蒼鷹
搜索
最新評論
1.?re: 【Java基礎專題】編碼與亂碼(01)---編碼基礎[未登錄]
666666666666666666666這幾天正在做個類似工程編碼出現錯誤
--李
2.?re: 【Java基礎專題】IO與文件讀寫---使用Apache commons IO簡化文件讀寫
不錯
--阿斯蘭
3.?re: 【Java基礎專題】編碼與亂碼(03)----String的toCharArray()方法
多謝分享
--thx
4.?re: 【Java基礎專題】編碼與亂碼(05)---GBK與UTF-8之間的轉換
評論內容較長,點擊標題查看
--karl
5.?re: 【Java基礎專題】編碼與亂碼(01)---編碼基礎[未登錄]
謝謝,幫了我大忙!
--小龍
閱讀排行榜
1.?Oracle中如何插入特殊字符:& 和 ' (多種解決方案)(48479)
2.?getOutputStream() has already been called for this response的解決方法(43369)
3.?【Java基礎專題】編碼與亂碼(05)---GBK與UTF-8之間的轉換(37063)
4.?360安全衛士誤刪audiosrv.dll文件造成系統無聲的解決方案(21301)
5.?Java中讀取字節流并按指定編碼轉換成字符串的方法(17328)
評論排行榜
1.?360安全衛士誤刪audiosrv.dll文件造成系統無聲的解決方案(33)
2.?【原】Oracle開發專題之:時間運算(11)
3.?【Java基礎專題】編碼與亂碼(05)---GBK與UTF-8之間的轉換(11)
4.?getOutputStream() has already been called for this response的解決方法(10)
5.?【原】Oracle開發專題之:分析函數(OVER)(8)
主站蜘蛛池模板:
国产成人亚洲综合
|
日本免费xxxx色视频
|
国产成人免费A在线视频
|
亚洲ts人妖网站
|
亚洲三级高清免费
|
国产成人精品亚洲日本在线
|
免费观看无遮挡www的视频
|
亚洲色欲或者高潮影院
|
日韩精品成人亚洲专区
|
亚洲色偷偷色噜噜狠狠99网
|
国产精品亚洲一区二区无码
|
午夜神器成在线人成在线人免费
|
亚洲天堂电影在线观看
|
免费影院未满十八勿进网站
|
亚洲va精品中文字幕
|
四虎www成人影院免费观看
|
精品久久亚洲一级α
|
亚洲精品一级无码鲁丝片
|
9久热精品免费观看视频
|
九九精品免费视频
|
亚洲欧美日韩中文字幕一区二区三区
|
国外成人免费高清激情视频
|
77777午夜亚洲
|
尤物永久免费AV无码网站
|
免费无毒a网站在线观看
|
亚洲日韩aⅴ在线视频
|
91精品视频在线免费观看
|
亚洲一区在线观看视频
|
国产精品视频免费一区二区三区
|
黄页网址在线免费观看
|
亚洲精品色午夜无码专区日韩
|
最近中文字幕mv免费高清视频8
|
亚洲午夜久久久久久尤物
|
日韩在线一区二区三区免费视频
|
久久久久一级精品亚洲国产成人综合AV区
|
亚洲宅男天堂a在线
|
午夜一区二区免费视频
|
国产免费内射又粗又爽密桃视频
|
亚洲国产人成网站在线电影动漫
|
最近高清中文字幕免费
|
国产亚洲男人的天堂在线观看
|