samba實現複雜的用戶許可權
samba實現複雜的用戶許可權
(原來看過samba實現複雜的用戶許可權的文章,一直沒有時間做試驗,今天有空,把整個過程記錄下來,並且在網上發現大部分教程都是基於share用的,對於文件夾許可權的控制搞的頭暈,所以這次我以user為示例,記錄下我的試驗,如有什麼不正確的地方,請斧正!)
我建了第一個管理上傳用戶update,普通用戶zbhdpx ,還有兩個組:business和tech,每各組用戶:bus01,bus02和tech01,tech02.。
實現的最終目的:
1.是要所有的共享文件夾update用戶都可以寫入,查看。
2.普通用戶zbhdpx,不可以查看update用戶,business和tech組的文件夾(disk,business,tech),只可以在公有目錄save讀取寫入文件,和讀取普通目錄mp3,data。
3.business和tech組用戶可以讀取寫入business,tech,save,可以查看mp3,data目錄,而不可以查看寫入對方組和disk文件夾。
先添加系統組:
Groupadd business
Groupadd tech
添加系統用戶:
Useradd update
Useradd zbhdpx
useradd -g business -d /home/bus01 -s /bin/false bus02
useradd -g business -d /home/bus02 -s /bin/false bus02
useradd -g tech -d /home/tech01 -s /bin/false tech01
useradd -g tech -d /home/tech02 -s /bin/false tech02
然後再添加到samba用戶:
smbpasswd -a update
New SMB password:
Retype new SMB password:
Added user update.
以上示例,添加全部用戶:
smbpasswd -a zbhdpx
smbpasswd -a bus01
smbpasswd -a bus02
smbpasswd -a tech01
smbpasswd -a tech02.
然後我們編輯我們的smb.conf主文件:
# File server For TEST
# http://www.zocc.net.cn QQ:396362184
#======================= Global Settings =====================================
# unix charset = cp936
# dos charset = cp936
# display charset = cp936
workgroup = WORKGROUP
netbios name = Server
server string = Test File Server
guest account = nobody
log file = /var/log/samba/%m.log
max log size = 50
security = user
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
username map = /etc/samba/smbusers
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# interfaces = 192.168.1.254/24 192.168.2.254/24
os level = 33
# default case = lower
# case sensitive = no
valid users = update,zbhdpx,@busniss,@tech
admin users = update,
write list = update,
#============================ Share Definitions ==============================
path = /home/data
writeable = yes
public = no
path = /home/save
writeable = yes
admin users = update,zbhdpx,@busniss,@tech
public = no
path = /home/mp3
public = no
writeable = yes
path = /home/disk
public = no
writeable = yes
valid users = update
path = /home/busniss
public = no
admin users = @busniss
writeable = yes
valid users = @busniss
path = /home/tech
public = no
admin users = @tech
writeable = yes
valid users = @tech
我的smbuser文件內容:
# cat /etc/samba/smbusers
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
我的smbpasswd文件內容:
# cat /etc/samba/smbpasswd
zbhdpx:502:D2F1CAA3AB15874DAAD3B435B51404EE:5D5EDEA7217AAA683D40B9B8D2B87E02::LCT-48E9D1D0:
bus01:2001:AFB15BD8963BBE79AAD3B435B51404EE:A70A24B656C40725C9CB63B6802BF13F::LCT-48EABB1E:
bus02:2002:AFB15BD8963BBE79AAD3B435B51404EE:A70A24B656C40725C9CB63B6802BF13F::LCT-48EABB2C:
tech01:2003:A4A1DF1691FB9A38AAD3B435B51404EE:06DA4042F45ED8E9A8D0574B0437C14B::LCT-48EABB36:
tech02:2004:A4A1DF1691FB9A38AAD3B435B51404EE:06DA4042F45ED8E9A8D0574B0437C14B::LCT-48EABB3C:
update:500:AB30CE88F7B510A0AAD3B435B51404EE:B3BCF07E85B9338F9C2F554CEA16B1B7::LCT-48EAC23D:
以zbhdpx用戶登陸系統,打開\\server,如下圖:
Save這個公有目錄是可寫的:但是不可以訪問:business,tech,disk三個目錄,mp3和data這兩個目錄是可以讀取的,但不可以寫入。
如果要進入disk目錄,我們在smb.conf文件中已經定義了此目錄的可用的用戶只有update,所以進入disk目錄只能用update用戶。同樣此目錄的管理用戶在全局中已經定義了:admin user=update,可以進行管理,寫入,同樣全局中定義的admin user對共享定義的文件夾data,disk,mp3,save都有做用,也就是說,如果以update用戶登陸,那麼對這四個目錄是可寫的。
同樣,business,tech目錄的可用用戶在共享定義中已經註明了:只有business和tech這兩個組用戶。所以不可以訪問。
我們還以zbhdpx的身份進入,可以打開save目錄,寫入文件:
同樣打開data,mp3,目錄可以看到文件,但是不可以寫入:
我們以update用戶連接disk目錄:
然後就可以看到此目錄內容,並寫入文件:
同樣,對於其它三個目錄:mp3,save.data,也都update用戶可以進行寫入。
這樣,我的要求update用戶已經實現對disk,data,mp3,save管理寫入,zbhdpx普通用戶實現了對save目錄的寫入,對data,mp3目錄可讀取,disk目錄不可見。其實寫到這個位置,大概的意思已經可以理解了。
我們還有兩個用戶組:business和tech.在這裡這兩個用戶是為了驗證一下smb.conf文件中組的寫法,實現基於組的管理,更加的方便。
我們再來測試,進入tech文件夾,現在我們已經以update的身份進行了映射,所以會有下邊的提示:
右鍵計算機管理,斷開網路驅動器如下圖:
然後再次以tehc01/tech02用戶連接,就可以了:
同理,斷開網路驅動器,用business組用戶bus01/bus02進入business文件夾,也是可寫。
如果用update用戶測試一下進入tech目錄:
就會有上邊的提示,因為我在smb.conf文件中已經定義了,business和tech用戶對各自的文件夾有管理許可權,所以,如果我們想要update用戶讀取這兩個目錄,並且可以寫入tech目錄要怎麼做?
那麼smb.conf中關於business和tech就改為下邊的:
path = /home/business
public = no
admin users = @business
writeable = yes
valid users = @business,update
path = /home/tech
public = no
admin users = @tech,update
writeable = yes
valid users = @tech,update
寫了這麼多,只是想要理解smb.conf文件中組管理的實現,共享文件夾對於不同用戶和組的設置,並且許可權的設定。
參考了以下文章:
http://www.linuxsir.org/main/node/158
http://www.linuxsir.org/main/node/278
[ 本帖最後由 zbhdpx 於 2008-10-7 17:46 編輯 ]
《解決方案》
感謝樓主的原創和分享精神,這個還是很有用的,收藏了~