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
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]中全局配置,也可針對某個特定的共享
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