(一)Samba是一個與Windows操作系統兼容的文件與打印共享服務器,通過在Linux服務器上配置Samba,可以使Linux系統集成到Windows網絡中。在網絡中,用戶可以使用多種方法實現數據共享,例如常見的Web服務、FTP服務。使用這兩種網絡服務的好處是:它們是標準的Internet服務,可以被絕大多數操作系統支持,用戶基本不用考慮操作系統之間集成問題。另外,各種Unix操作系統之間也可以通過SSH和NFS提供數據共享服務。但是這兩種服務在微軟Windows系列操作系統中默認不被支持,因而Windows客戶機訪問這兩種服務時不方便。現在微軟網絡使用文件共享協議爲CIFS(通用Internet文件系統),基本可以認爲是SMB的升級版本。Linux下的Samba服務就是基於SMB/CIFS協議的。
(二)配置Samba服務器
實驗環境:LinuxAS4操作系統,雙網卡,IP分別爲192.10.30.3/24(VM1) | 192.10.10.3/24(VM2)
[root@localhost /]#rpm -qa |grep samba
system-config-samba-1.2.21-1 #提供了RH公司專門爲SMB服務器管理編寫的圖形界面的管理程序,功能不如Swat工具完善
samba-common-3.0.10-1.4E6 #Samba的支持軟件包,提供smb服務器和客戶機中都必須使用的公共文件
samba-client-3.0.10-1.4E.6 #提供了samba客戶機的所有文件,可以使Linux作爲客戶機訪問Windows服務器或其他Samba服務器
samba-3.0.10-1.4E.6 #基本的服務器軟件包,用於提供SMB服務
samba-swat-3.0.10 #基於Web界面的管理工具,使用戶可以比較方便地精確調整Samba服務器
smb.conf文件分成多個小節,結構清晰,該文件不區分大小寫,如參數"writable = yes"與"writable = YES"等價;以"#"和";"開頭的行爲註釋行
[root@localhost /]#grep -v "^#" /etc/samba/smb.conf |grep -v "^;" #查看smb.conf有效配置內容
[global] #全局參數字段
workgroup = mygroup #定義Samba服務器所在的工作組域
netbios name=Linux srv #定義計算機的Netbios名,默認不存在,新添加
server string = Linux samba Server #定義計算機描述,通過網上鄰居訪問時可以在備註信息中看到這個信息
client code page = 936
character set = 936 # 以上用於支持中文字體
#unix charset = cp936 #我按以下輸入不支持中文
#dos charset = cp936
# unix charset = gb2312 #我按以下輸入不支持中文
#dos charset = gb2312
hosts allow = 192.10.30. 192.10.10. #允許訪問的網絡或主機地址,注意此句本爲註釋行
printcap name = /etc/printcap
load printers = yes #自動加載打印機列表
cups options = raw
log file = /var/log/samba/%m.log #設置Samba服務器的日誌文件存放路徑,%m.log爲變量,表示客戶端主機名稱
max log size = 50 #日誌文件最大容量,單位是KB
security = user
#定義Samba服務器的安全級別;share:共享級別,所有用戶不需要用戶名和密碼即可訪問;user:這是Samba的默認配置,所有用戶需提供用戶名及密碼才能訪問;server:和user安全級別類似,所有用戶必須通過身份驗證才能訪問服務器的資源,如果遞交失敗,退到user級別;domain:要求網絡上存在一臺Windows域控制器,Samba把用戶名能密碼傳給指定的域控制器進行驗證
encrypt passwords = yes #是否加密密碼,no表示以明文傳輸
smb passwd file = /etc/samba/smbpasswd #指定存放Samba用戶密碼文件
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
interfaces = 192.10.30.3/24 192.10.10.3/24 #指定Samba使用的網絡接口,可使用接口名或者IP地址
dns proxy = no
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
template shell = /bin/false
winbind use default domain = no
[homes] #目錄共享字段
comment = Home Directories
browseable = no #表示所有Samba用戶目錄不被看到,只有登錄用戶才能看到自己的宿主目錄
writable = yes #設置用戶對自己的宿主目錄有寫權限
[printers] #打印機共享字段
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
[public] #以public爲共享名共享
comment = Public directories #描述共享信息
path = /home/public #指定共享目錄位置
public = yes #對所有Samba用戶可見
writable = yes #允許用戶對該目錄進行寫入操作
[public2]
path =/usr/public2
only guest = yes #表示所有用戶在使用該共享目錄進的用戶身份都是guest,即linux系統用戶nobody
writable = yes
browseable = no
#用戶都不能瀏覽到,類似於public,但可以在運行處輸入\\IP\public2訪問到
printable = no
:wq 保存以上配置文件
[root@localhost /]#testparm #查看Samba有效的設置情況
[root@localhost /]#service smb restart #重新啓動Samba服務 或使用service smb reload
[root@localhost /]#smbpasswd -a user1 #建立Samba用戶
#smbpasswd -a 向 /etc/samba/smbpasswd中添加用戶
#smbpasswd -x 從/etc/samba/smbpasswd中刪除用戶
#smbpasswd -d 禁用某個Samba用戶
#smbpasswd -e 啓用某個Samba用戶
#smbpasswd 命令所操作的帳戶必須是Linux系統中已有的用戶
[root@localhost /]#cat /etc/passwd | mksmbpasswd.sh > /etc/samba/sambpasswd #將所有的linux用戶帳戶一次性添加到smbpasswd文件中
[root@localhost /]#smbpasswd user2 #爲了使新加入的用戶帳戶可用,還得設置Samba密碼,區分所有用戶還沒有加入到smbpasswd文件時命令的寫法
從Windows客戶端訪問:通過網上鄰居直接找到Samba服務器進行訪問或者在運行中輸入UNC路徑
[root@localhost /]#smbclient -L 127.1 #查看本機提供的共享資源
[root@localhost /]#smbstatus #顯示Samba服務器連接狀態;顯示客戶端IP/主機名/登錄用戶/及鎖定的文件等
[root@localhost /]#smbclient //192.10.30.10/aa -U aa #訪問Windows主機上的資源,注意格式(IP後面不能有空格)
[root@localhost /]#smbmount //19210.30.10/aa /mnt #將Windows主機上的共享目錄直接掛載到Linux主機上
[root@localhost /]#umount /mnt/ #卸載Samba文件系統
(三)使用Swat管理samba服務器
[root@localhost /]#chkconfig swat on #啓動Swat
[root@localhost /]#vi /etc/xinetd.d/swat #修改允許訪問Swat服務的客戶主機IP地址,可根據管理需求進行更改;在此我註釋掉#only_from =127.0.0.1,即允許任意IP訪問
[root@localhost /]#service xinetd restart #重啓xinetd服務
^^接下來就以Web界面的方式管理Samba了,自己好好再研究下吧