1、Samba概述
1)SMB和CIFS
SMB協議:Server Message Block,服務消息塊
CIFS協議:Common Internet File System,通用互聯網文件系統
SMB/CIFS默認是微軟的私有協議
2)Samba
Samba是著名的開源軟件項目,在linux/unix上實現SMB和CIFS協議,可以跨平臺文件共享
Samba軟件包組成:
samba-3.0.33-3.28.el5 -----服務端程序
samba-client-3.0.33-3.28.el5 -----客戶端程序
samba-common-3.0.33-3.28.el5 -----公共組件
samba-swat-3.0.33-3.28.el5.i386.rpm -----圖形化web管理程序
system-config-samba -----圖形化界面的管理程序
Samba提供兩個服務程序:
smbd提供共享資源的訪問,監聽TCP 的139端口(SMB協議)和445端口(CIFS協議)
nmbd提供NetBIOS名稱解析,監聽UDP的137和138端口(NetBIOS協議)
smb服務:service smb start -----會自動加載smbd和nmbd組件程序
3)安裝
rpm -ivh /mnt/iso/Server/perl-Convert-ASN1-0.20-1.1.noarch.rpm
rpm -ivh /mnt/iso/Server/samba-3.0.33-3.28.el5.i386.rpm
注:①默認情況下已安裝samba-common和samba-client
②perl-Convert-ASN1是samba所依賴的軟件包,必須安裝
2、主配置文件/etc/samba/smb.conf
#表示註釋行,;表示樣例行,過濾:grep -v "#" /etc/samba/smb.conf |grep -v "^;" |grep -v "^$"
testparm命令可用於檢查配置文件正確性
此配置文件中關鍵字對大小寫不敏感
1)常見全局配置項
workgroup:所在工作組名稱
server string:服務器描述信息
security:安全級別share、user、server、domain
log file:日誌文件位置,/var/log/samba/%m.log每個客戶機建立一個日誌,%m變量表示客戶機地址
passwd backend---設置賬戶文件的類型,默認爲tdbsam,若需兼容舊版samba密碼則改爲smbpasswd
2)常見共享目錄配置項
comment:對共享目錄的註釋、說明信息
path:共享目錄在服務器中對應的實際路徑
browseable:該共享目錄是否可見,值爲no時相當於隱藏共享目錄,類似於windows中的共享名加$
guest ok:是否允許所有人訪問,等效於public,例guest ok=yes等於public=yes
writable:是否可寫,與read only的作用相反,例writable=no等於read only=yes
3)其他配置項
vaild users:只有此名單內的用戶能訪問共享資源(拒絕優先)(用戶名/@組名)
invalid users:只有此名單內的用戶不能訪問共享資源(拒絕優先)(用戶名/@組名)
write list:只有此名單內的成員纔可作寫入動作(用戶名/@組名)
directory mask:通過共享創建文件夾的默認權限
create mask=0644:通過共享創建文件的默認權限
hosts allow:只有此網段/IP的用戶能訪問共享資源
hosts deny:只有此網段/IP的用戶不能訪問共享資源
3、匿名訪問的文件共享
1)設置安全級別security = share
2)新建共享目錄
mkdir /var/software
chmod 777 /var/software
[software]
comment=public software
path = /var/software
public = yes
read only = yes
3)service smb start 或service smb reload
注:客戶端只能訪問被指定爲允許匿名訪問的共享,即指定public=yes或guestok=yes的共享
4、帶驗證的文件共享
1) 建立samba用戶
useradd tom
pdbedit -a tom
pdbedit -a root
pdbedit -x tom -----刪除Samba用戶tom
pdbedit -vL -----查看Samba共享用戶的詳細信息
注:①samba使用獨立的賬號數據庫,但系統中必須有對應的賬號,其密碼可與系統密碼不同
②賬戶數據庫文件默認位於/etc/samba/passdb.tdb,可使用pdbedit命令對samba用戶進行管理
③若需兼容舊版samba密碼則修改passwd backend=smbpasswd,同時賬戶數據庫文件爲
/etc/samba/smbpasswd,使用smbpasswd命令管理smbpasswd –a tom、smbpasswd –x tom
2)設置用戶授權
[global]
security = user
[software]
comment= public software
path = /var/software
public = no
valid users=tom,@root -----此處應填寫真實用戶名,非別名
write list=root -----root用戶有可寫的權限
directory mask=0755 -----通過共享創建文件夾的默認權限
create mask=0644 -----通過共享創建文件的默認權限
chmod 777 /var /software
注:①應確保真實用戶對共享目錄有本地系統權限,用戶最終權限是samba權限和系統權限的交集
②可以在[global]中添加invalid users配置項拒絕用戶訪問samba服務,如invalid users=jack
③驗證valid users和write list時,應刪除writable配置項
3)用戶名稱映射
vi /etc/samba/smbusers
root = administrator admin
tom = zhangsan lisi
vi /etc/samba/smb.conf
username map=/etc/samba/smbusers //在[global]中指定名稱映射文件
注:添加映射後別名用戶的密碼仍爲真實用戶的密碼
4)添加授權的客戶端地址,既可以在[global]中全局配置,也可針對某個特定的共享
vi /etc/samba/smb.conf
hosts allow=192.168.1.2 192.168.2. //在[global]中指定
注:①hosts allow設置僅允許訪問共享的地址,hosts deny設置僅拒絕訪問的地址,兩項不要同時使用
②修改配置文件後必須重啓服務service smb restart
5、客戶端訪問
1)使用smbclient訪問
smbclient –L 192.168.1.1 //查看共享資源列表,未指定用戶賬戶時將以匿名方式登陸
smbclient –L 192.168.1.1 -U tom%123 //指定賬戶爲tom,密碼爲123
smbclient –U tom //192.168.1.1/software
命令:ls、pwd、get、mget、put、mput、exit、help、lcd切換本地目錄
2)使用mount命令將共享目錄掛載到本地
mount –o username=tom //192.168.1.1/software /mnt/iso
vi /etc/fstab
//192.168.1.1/software /mnt/iso cifs defaults,username=tom%123 0 0
注:當安全級別設置爲user時,在linux中仍然可以通過smbclient工具訪問匿名共享,但無法通過mount方式掛載訪問;如果是在windows中則無法再訪問匿名共享
3)使用自動掛載的方式
使用/etc/fstab文件掛載samba共享資源時,每次開機都會自動掛載,如果服務器未開機或其他原因,會導致掛載失敗,影響開機速度,而使用自動掛載則可以解決此問題
vi /etc/auto.master
/mnt /etc/samba.misc
vi /etc/samba.misc
samba -fstype=cifs,username=tom,password=111 ://192.168.1.1/software
service autofs restart