活用三種權(quán)限 理解Samba的權(quán)限控制
原創(chuàng)【51CTO獨(dú)家特稿】在企業(yè)內(nèi)網(wǎng)開發(fā)環(huán)境方面,文件服務(wù)器是一個(gè)非常重要的環(huán)節(jié)。在這當(dāng)中,Samba服務(wù)器由于其權(quán)限控制的高度靈活性,在這里撫琴煮酒會(huì)進(jìn)行一些列詳細(xì)的說明。之前我們已經(jīng)介紹了Samba服務(wù)器一些入門和基本的更換用戶、端口監(jiān)聽、列表控制等技巧,今天這篇文章將會(huì)著重介紹Samba服務(wù)器中如何靈活利用Suid、Sgid、Sticky三種權(quán)限的作用。
作者簡(jiǎn)介:余洪春(博客),網(wǎng)名撫琴煮酒,英文名Andrew.Yu,武漢某外企高級(jí)Linux/Unix系統(tǒng)管理員、項(xiàng)目實(shí)施工程師,紅帽RHCE講師,擅長(zhǎng)負(fù)載均衡高可用和中小型證券類和商務(wù)網(wǎng)站架構(gòu),目前關(guān)注網(wǎng)站架構(gòu)研究及網(wǎng)絡(luò)安全。
很多人都很奇怪,為什么我們需要學(xué)習(xí)這三種權(quán)限?在實(shí)際工作中我們發(fā)現(xiàn),這些特殊權(quán)限讓Linux的權(quán)限理解,尤其是samba顯得極為困難,但又的確有使用的必要。本文試圖用淺顯的講解,讓大家能充分理解這三種權(quán)限的作用。理解了它們,就可以更方便的理解samba的權(quán)限控制。
首先需要提醒大家注意的是,samba的權(quán)限由兩方面構(gòu)成:一是目錄本身的權(quán)限,二是samba的配置權(quán)限。最終權(quán)限定義是兩者的最小交集。
OK,我們接著來理解這三種權(quán)限:
- 一個(gè)文件都有一個(gè)所有者,表示該文件是誰創(chuàng)建的。
- 同時(shí),該文件還有一個(gè)組編號(hào),表示該文件所屬的組,一般為文件所有者所屬的組。
- 如果是一個(gè)可執(zhí)行文件,那么在執(zhí)行時(shí),一般該文件只擁有調(diào)用該文件的用戶具有的權(quán)限。
權(quán)限標(biāo)志通過三個(gè)“位”來定義,分別是:
- setuid:設(shè)置使文件在執(zhí)行階段具有文件所有者的權(quán)限。比如/usr/bin/passwd,如果一般用戶執(zhí)行該文件,則在執(zhí)行過程中,該文件可以獲得root權(quán)限,從而可以更改用戶的密碼。
- setgid:該權(quán)限只對(duì)目錄有效。目錄被設(shè)置該位后,任何用戶在此目錄下創(chuàng)建的文件都具有和該目錄所屬的組相同的組。
- sticky bit:該位可以理解為防刪除位。 一個(gè)文件是否可以被某用戶刪除,主要取決于該文件所屬的組是否對(duì)該用戶具有寫權(quán)限。如果沒有寫權(quán)限,則這個(gè)目錄下的所有文件都不能被刪除,同時(shí)也不能添加新的文件。 如果希望用戶能夠添加文件但同時(shí)不能刪除文件,則可以對(duì)文件使用sticky bit位。設(shè)置該位后,就算用戶對(duì)目錄具有寫權(quán)限也不能刪除該文件。
三個(gè)權(quán)限的特點(diǎn)
Sticky(范例:/tmp目錄)
①sticky只能應(yīng)用在目錄上,并且是應(yīng)用在其它人上。
②只有root和文件的擁有人才能刪除該文件。
③小寫表示能執(zhí)行,大寫表示不能執(zhí)行
Suid(范例:/usr/bin/passwd目錄)
①suid只能應(yīng)用在二進(jìn)制文件中
②當(dāng)一個(gè)文件應(yīng)用了suid,那么任何人在執(zhí)行該命令的時(shí)候他就臨時(shí)擁有該文件擁有人的權(quán)限
③suid只能應(yīng)用在文件的擁有人上
④小寫表示能執(zhí)行,大寫表示不能執(zhí)行
Sgid(應(yīng)用環(huán)境為用于一組開發(fā)人員共用資源,保證安全)
①sgid既可以應(yīng)用在文件上,也可以應(yīng)用在目錄上
②當(dāng)sgid應(yīng)用在目錄上時(shí),任何人在該目錄中建立健全的文件和目錄的擁有者屬于目錄所屬組
③應(yīng)用在擁有組上
④sgid應(yīng)用在文件上時(shí),任何人在執(zhí)行該文件時(shí),臨時(shí)擁有該文件所屬組權(quán)限
⑤小寫表示可執(zhí)行,大寫反之。
如何操作這些標(biāo)志
操作這些標(biāo)志與操作文件權(quán)限的命令是一樣的, 都是 chmod。有兩種方法來操作:
① chmod u+s temp -- 為temp文件加上setuid標(biāo)志。 (setuid 只對(duì)文件有效)
chmod g+s tempdir -- 為tempdir目錄加上setgid標(biāo)志 (setgid 對(duì)目錄和文件有效)
chmod o+t temp -- 為temp文件加上sticky標(biāo)志 (sticky只對(duì)文件有效)
② 采用八進(jìn)制方式。對(duì)一般文件通過三組八進(jìn)制數(shù)字來置標(biāo)志,如 666,777,644等。如果設(shè)置這些特殊標(biāo)志,則在這組數(shù)字之外外加一組八進(jìn)制數(shù)字,如4666,2777等。這一組八進(jìn)制數(shù)字三位的意義如下,
abc
a - setuid位。如果該位為1,則表示設(shè)置setuid
b - setgid位。如果該位為1,則表示設(shè)置setgid
c - sticky位。如果該位為1,則表示設(shè)置sticky
我習(xí)慣用第一種方法來做,但許多時(shí)候文件的權(quán)限表示都是用數(shù)字為執(zhí)行;所以,建議兩種方法都要掌握熟悉。
設(shè)置完這些標(biāo)志后, 可以用 ls -l 來查看。 如果有這些標(biāo)志,則會(huì)在原來的執(zhí)行標(biāo)志位置上顯示。 如
rwsrw-r-- 表示有setuid標(biāo)志
rwxrwsrw- 表示有setgid標(biāo)志
rwxrw-rwt 表示有sticky標(biāo)志
那么原來的執(zhí)行標(biāo)志x到哪里去了呢?系統(tǒng)是這樣規(guī)定的,如果本來在該位上有x,則這些特殊標(biāo)志顯示為小寫字母 (s, s, t)。否則, 顯示為大寫字母 (S, S, T)
這三個(gè)權(quán)限的數(shù)字位可以這么理解,這是我的理解和記憶參考法,僅供大家參考學(xué)習(xí)
[root@server3 test]# 1 1 1 [root@server3 test]# rws rws rwt [root@server3 test]# [root@server3 test]# SUID SGID Sticky
所以,可以得出
chmod 4777是設(shè)sid
chmod 2777是設(shè)置gid
chmod 1777是設(shè)sticky
最后,介紹兩個(gè)常用操作。
常用操作
找出所有危險(xiǎn)的目錄(設(shè)置目錄所有人可讀寫卻沒有設(shè)置sticky位的目錄)
find / -perm -0007 -type d
找出所有設(shè)置了suid的文件
find / -perm -4000 -type f
【編輯推薦】



























