Samba是在Linux和UNIX系統(tǒng)上實現(xiàn)SMB協(xié)議的一個免費(fèi)軟件,由服務(wù)器及客戶端程序構(gòu)成。SMB(Server Messages Block,信息服務(wù)塊)是一種在局域網(wǎng)上共享文件和打印機(jī)的一種通信協(xié)議,它為局域網(wǎng)內(nèi)的不同計算機(jī)之間提供文件及打印機(jī)等資源的共享服務(wù)。
samba三種權(quán)限理解:
1、一個文件都有一個所有者,表示該文件是誰創(chuàng)建的。
2、同時,該文件還有一個組編號,表示該文件所屬的組,一般為文件所有者所屬的組。
3、如果是一個可執(zhí)行文件,那么在執(zhí)行時,一般該文件只擁有調(diào)用該文件的用戶具有的權(quán)限。
權(quán)限標(biāo)志通過三個“位”來定義,分別是:
1、setuid:設(shè)置使文件在執(zhí)行階段具有文件所有者的權(quán)限。比如/usr/bin/passwd,如果一般用戶執(zhí)行該文件,則在執(zhí)行過程中,該文件可以獲得root權(quán)限,從而可以更改用戶的密碼。
2、setgid:該權(quán)限只對目錄有效。目錄被設(shè)置該位后,任何用戶在此目錄下創(chuàng)建的文件都具有和該目錄所屬的組相同的組。
3、sticky bit:該位可以理解為防刪除位。 一個文件是否可以被某用戶刪除,主要取決于該文件所屬的組是否對該用戶具有寫權(quán)限。如果沒有寫權(quán)限,則這個目錄下的所有文件都不能被刪除,同時也不能添加新的文件。 如果希望用戶能夠添加文件但同時不能刪除文件,則可以對文件使用sticky bit位。設(shè)置該位后,就算用戶對目錄具有寫權(quán)限也不能刪除該文件。
三個權(quán)限的特點:
Sticky(范例:/tmp目錄)
?、賡ticky只能應(yīng)用在目錄上,并且是應(yīng)用在其它人上。
?、谥挥衦oot和文件的擁有人才能刪除該文件。
?、坌懕硎灸軋?zhí)行,大寫表示不能執(zhí)行
Suid(范例:/usr/bin/passwd目錄)
?、賡uid只能應(yīng)用在二進(jìn)制文件中
?、诋?dāng)一個文件應(yīng)用了suid,那么任何人在執(zhí)行該命令的時候他就臨時擁有該文件擁有人的權(quán)限
?、踫uid只能應(yīng)用在文件的擁有人上
?、苄懕硎灸軋?zhí)行,大寫表示不能執(zhí)行
Sgid(應(yīng)用環(huán)境為用于一組開發(fā)人員共用資源,保證安全)
?、賡gid既可以應(yīng)用在文件上,也可以應(yīng)用在目錄上
?、诋?dāng)sgid應(yīng)用在目錄上時,任何人在該目錄中建立健全的文件和目錄的擁有者屬于目錄所屬組
?、蹜?yīng)用在擁有組上
?、躶gid應(yīng)用在文件上時,任何人在執(zhí)行該文件時,臨時擁有該文件所屬組權(quán)限
?、菪懕硎究蓤?zhí)行,大寫反之。
如何操作這些標(biāo)志:
操作這些標(biāo)志與操作文件權(quán)限的命令是一樣的, 都是 chmod。有兩種方法來操作:
?、?chmod u+s temp -- 為temp文件加上setuid標(biāo)志。 (setuid 只對文件有效)
chmod g+s tempdir -- 為tempdir目錄加上setgid標(biāo)志 (setgid 對目錄和文件有效)
chmod o+t temp -- 為temp文件加上sticky標(biāo)志 (sticky只對文件有效)
?、?采用八進(jìn)制方式。對一般文件通過三組八進(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í)慣用第一種方法來做,但許多時候文件的權(quán)限表示都是用數(shù)字為執(zhí)行;所以,建議兩種方法都要掌握熟悉。
設(shè)置完這些標(biāo)志后, 可以用 ls -l 來查看。 如果有這些標(biāo)志,則會在原來的執(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)
這三個權(quán)限的數(shù)字位可以這么理解,這是我的理解和記憶參考法,僅供大家參考學(xué)習(xí)
?。踨oot@server3 test]# 1 1 1
[root@server3 test]# rws rws rwt
?。踨oot@server3 test]#
?。踨oot@server3 test]# SUID SGID Sticky
所以,可以得出
chmod 4777是設(shè)sid
chmod 2777是設(shè)置gid
chmod 1777是設(shè)sticky
最后,介紹兩個常用操作。
常用操作:
找出所有危險的目錄(設(shè)置目錄所有人可讀寫卻沒有設(shè)置sticky位的目錄)
find / -perm -0007 -type d
找出所有設(shè)置了suid的文件
find / -perm -4000 -type f
使用samba用戶的權(quán)限設(shè)置
首先要保證你的samba安裝并配置好
需求1:有一個共享目錄為rule,里面放公司的規(guī)章制度,所有用戶都可以查看,但是不能修改
解決方法:在smb.conf里配置read only = yes,具體示例如下:
?。踨ule]
path = /var/samba/rule
read only = yes
public = no
需求2:一部分人只對file1這個目錄有權(quán)限,一部分人只對file2這個目錄有權(quán)限
解決方法:
1、首先建立兩個samba用戶user1和user2,這兩個用戶要保證是在linux系統(tǒng)中存在的用戶,命令如下:
#smbpasswd -a user1
2、然后對目錄file1和file2設(shè)置訪問權(quán)限,讓用戶user1訪問file1,用戶user2訪問file2,命令如下:
#chown user1:user1 /var/samba/file1
#chmod 700 /var/samba/file1
3、在smb.conf中配置file1和file2的訪問權(quán)限,示例如下:
?。踗ile1]
path = /var/samba/file1
read only = no
public = no
vaild users = user1
4、在客戶端登錄samba服務(wù)的時候分配給訪問file1的用戶user1的用戶名,訪問file2的用戶user2的用戶名。
需求3:只有user1組里的人對file1這個目錄有權(quán)限,并且user1組中用戶a有讀寫權(quán)限,而用戶b只有讀權(quán)限
解決方法:
1、首先建立兩個samba用戶a和b,這兩個用戶要保證是在linux系統(tǒng)中存在的用戶,并且在同一個用戶組user1中,創(chuàng)建方法同上
2、然后對目錄file1設(shè)置訪問權(quán)限,讓用戶組user1可以訪問file1,命令如下:
#chown user1.user1 /var/samba/file1
#chmod 770 /var/samba/file1
3、在smb.conf中配置file1的訪問權(quán)限,示例如下:
?。踗ile1]
path = /var/samba/file1
public = no
vaild users = @user1
write list = a
read list = b
需求3:只有user1組里的人對file1這個目錄有權(quán)限,并且user1組中所有用戶都有讀寫權(quán)限,這里值得注意的是當(dāng)權(quán)限設(shè)置好后新建文件夾及文件的權(quán)限會與之前不同導(dǎo)致同組用戶只有讀權(quán)限沒有寫權(quán)限,所以要在配置文件中指定新建文件及文件夾的權(quán)限
解決方法:
1、首先建立所需的samba用戶若干,這些用戶要保證是在linux系統(tǒng)中存在的用戶,并且在同一個用戶組user1中,創(chuàng)建方法同上
2、然后對目錄file1設(shè)置訪問權(quán)限,讓用戶組user1可以訪問file1,命令如下:
#chown user1.user1 /var/samba/file1
#chmod 770 /var/samba/file1
3、在smb.conf中配置file1的訪問權(quán)限,示例如下:
?。踗ile1]
path = /var/samba/file1
read only = no
public = no
create mode = 0770
directory mode = 0770
vaild users = @user1
write list = @theworld
評論