Samba在企業(yè)中的簡單應用案例
原創(chuàng)【51CTO獨家特稿】Samba服務器雖然很多企業(yè)都在用,但Samba其實可以說的東西很多,也有很多用法。之前我們介紹了Samba的實用技巧與三種權限的機制,下面會介紹一個Samba的企業(yè)應用案例。
作者簡介:余洪春(博客),網(wǎng)名撫琴煮酒,英文名Andrew.Yu,武漢某外企高級Linux/Unix系統(tǒng)管理員、項目實施工程師,紅帽RHCE講師,擅長負載均衡高可用和中小型證券類和商務網(wǎng)站架構,目前關注網(wǎng)站架構研究及網(wǎng)絡安全。
本文介紹的Samba應用案例在很多公司需要,只要根據(jù)具體情況修改配置文件就可以了。其實原理也很簡單,就是用戶的讀與寫權限要分開。
案例要求與分析
需求1
所有與員工都能在公司內(nèi)漫游辦公,但不管在那臺電腦上工作,都要把自己的文件數(shù)據(jù)庫存在Samba文件服務器上。
分析:
需要Samba作為文件服務器,為所有的用戶創(chuàng)建帳號和目錄
需求2
為所有的用戶創(chuàng)建帳號和目錄,不分配shell
假設市場部有tom、jack,他們屬于sales組
技術部有red、blue,他們屬于tech組
總經(jīng)理是ceo、財務是fineance,他們均屬于lead組
分析:
建組sales,tech及l(fā)eader組
所有市場部的員工加入sales組
技術部的員工加入tech組
ceo和fineance加入leader組
需求3
sales組的文件只有tom和leader組的人可以讀寫,其它人只能看(非認證用戶是不能進入目錄的);tech組的文件只有red和leader組的人可以讀寫,其它人只能看(非認證用戶是不能進入目錄的);
分析:
通過samba權限控制來做。
實施步驟
首先是安裝samba34。
- 服務器系統(tǒng) FreeBSD 8.1-64bit
- samba版本 samba3.4
#cd /usr/ports/net/samba34 #make install clean #cp /usr/local/share/examples/samba34/smb.conf.default /usr/local/etc/smb.conf
#echo 'nmbd_enable="YES"' >> /etc/rc.conf
#echo 'smbd_enable="YES"' >> /etc/rc.conf
#記得用>>追加符,不然你的rc.conf文件會被清零的:)
啟動samba
#/usr/local/etc/rc.d/samba start
先建立組和用戶。把用戶加入相應的組,給用戶分配一個不可用的shell;由于組比較多,我建議在紙上畫好組織結構圖,這樣也方便自己理解。
添加用戶組
# pw groupadd sales # pw groupadd tech # pw groupadd leader
然后用pw groupshow分別得知sales、tech及l(fā)eader的GID分別為1005、1006和1007
添加用戶
# pw useradd tom -s /sbin/nologin -g 1005 # pw useradd jack -s /sbin/nologin -g 1005 # pw useradd red -s /sbin/nologin -g 1006 # pw useradd blue -s /sbin/nologin -g 1006 # pw useradd ceo -s /sbin/nologin -g 1007 # pw useradd fineance -s /sbin/nologin -g 1007
將其分別添加進samba用戶庫,此處的samba密碼盡量選擇不一樣,并注意密碼的復雜性。
# smbpasswd -a jack New SMB password: Retype new SMB password: Added user jack. # smbpasswd -a red New SMB password: Retype new SMB password: Added user red. # smbpasswd -a blue New SMB password: Retype new SMB password: Added user blue. # smbpasswd -a ceo New SMB password: Retype new SMB password: Added user ceo. # smbpasswd -a fineance New SMB password: Retype new SMB password: Mismatch - password unchanged. Unable to get new password. research_jail# smbpasswd -a fineance
建立samba的文件目錄,并分配權限。
# mkdir /home/sales
# mkdir /home/tech
# ls -ld /home/sales
drwxr-xr-x 2 root wheel 512 Jan 25 05:36 /home/sales
# ls -ld /home/tech
drwxr-xr-x 2 root wheel 512 Jan 25 05:36 /home/tech
#給予sales和tech目錄777權限的目的,是為了防止它們被本身的權限控制,用戶能訪問目錄的最終權限是被文件目錄的權限和samba權限的最小權限交集所控制
# chmod 777 /home/sales
# chmod 777 /home/tech
給這個二個目錄建議sgid權限,將能建立的文件都劃歸其組所有
# chgrp sales /home/sales # chgrp tech /home/tech # chmod g+s /home/sales # chmod g+s /home/tech [root@localhost samba]# ls -ld /home/sales /home/tech # ls -ld /home/sales /home/tech drwxrws--- 2 root sales 512 Jan 25 05:36 /home/sales drwxrws--- 2 root tech 512 Jan 25 05:36 /home/tech
用samba的權限來嚴格限制這二個目錄的權限
修改配置文件vim /etc/samba/smb.conf,在文件的***加入目錄
[sales] path = /home/sales public = no valid users = @sales,@leader write list = tom,@leader create mask = 0770 directory mask = 0770 [tech] path = /home/tech public = no valid users = @tech,@leader write list = red,@leader create mask = 0770 directory mask = 0770
重啟服務器
#/usr/local/etc/rc.d/samba start
總結
測試時我為了避免windows的NETBIOS的bug問題,直接開了三臺windows機器,外加N臺虛擬機,省得不停的net use /delete,免得鬧心;測試結果還是比較成功的,其實這里主要也只牽涉到三個知識點,我這里歸納下:
一、用戶的最終權限分配為目錄的權限和samba權限的最小交集;
二、valid為認證用戶,沒經(jīng)過認證的用戶是不能看到其目錄的文件的;
三、write list會覆蓋用戶原有的用戶權限,即使他們原先只有讀的權限。
希望這個案例對你有幫助!
【51CTO.com獨家特稿,轉載請注明原文作者和出處?!?/p>
【編輯推薦】
- 企業(yè)內(nèi)網(wǎng)開發(fā)環(huán)境部署與管理全攻略(FreeBSD+PHP)
- Samba服務器簡介與快速配置指南
- 使用GFS和DRBD在CentOS 5.5上進行Samba CTDB集群部署