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
閱讀(873)
評論(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中如何插入特殊字符:& 和 ' (多種解決方案)(48446)
2.?getOutputStream() has already been called for this response的解決方法(43350)
3.?【Java基礎專題】編碼與亂碼(05)---GBK與UTF-8之間的轉換(37031)
4.?360安全衛士誤刪audiosrv.dll文件造成系統無聲的解決方案(21267)
5.?Java中讀取字節流并按指定編碼轉換成字符串的方法(17318)
評論排行榜
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)
主站蜘蛛池模板:
亚洲美女视频网址
|
免费a级毛片18以上观看精品
|
国产精品99久久免费观看
|
97在线免费视频
|
中文字幕乱码免费看电影
|
jizz在线免费播放
|
搡女人免费免费视频观看
|
a视频在线免费观看
|
永久免费av无码入口国语片
|
在线人成免费视频69国产
|
免费污视频在线观看
|
午夜理伦剧场免费
|
91久久青青草原线免费
|
成人在线免费看片
|
两个人的视频高清在线观看免费
|
蜜桃视频在线观看免费网址入口
|
在线免费观看色片
|
免费一级做a爰片性色毛片
|
久久精品国产亚洲Aⅴ蜜臀色欲
|
日本一区二区在线免费观看
|
一级做a爰片久久毛片免费陪
|
午夜不卡AV免费
|
99在线免费观看
|
99热在线精品免费播放6
|
91精品免费在线观看
|
天天摸天天碰成人免费视频
|
国产一级理论免费版
|
青青草原亚洲视频
|
亚洲AV日韩精品久久久久久
|
亚洲国产成人无码av在线播放
|
亚洲中文字幕一二三四区
|
黄色一级毛片免费
|
a级毛片免费全部播放无码
|
最近新韩国日本免费观看
|
欧洲黑大粗无码免费
|
内射无码专区久久亚洲
|
亚洲av永久无码精品漫画
|
亚洲制服丝袜中文字幕
|
欧亚一级毛片免费看
|
久久99热精品免费观看牛牛
|
无人在线观看完整免费版视频
|