SMB (Service Message Block,服務信息塊):局域網上共享文件夾/打印機的一種協議。既可以用在TCP/IP之上,亦可以在其他網絡協議之上。
提供兩種服務:文件共享服務 smbd
名稱解析服務 nmbd
進程:winbindd 將linux加入到windows 域中,使用windows域中的資源。
軟件包:samba(服務器端),samba-client(客戶端),samba-common(額外組件)
samba-swat 基於web接口,提供samba服務器配置管理。
samba-client samba-common 默認已經安裝
主配置文件:/etc/samba/smb.conf
啟動腳本:/etc/init.d/smb
語法檢查工具:testparm
端口:137 (向別人提供服務 服務器端) 提供netbios服務
138 (接受別人服務 客戶端) 提供netbios服務
139 (文件傳輸) 445(文件傳輸)
主配置文件相關參數:
[global]
workgroup = MYGROUP //** 工作組
server string = Samba Server Version %v //** 說明信息
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 //**定義監聽接口
hosts allow = 127. 192.168.12. 192.168.13. //** ACL 白名單
log file = /var/log/samba/%m.log //** 定義日志
security = user //** 安全級別 默認 user
安全等級:share 不用賬號和密碼可以直接登錄,最不安全。
user 需要輸入有效地賬號和密碼,通過驗證後才能使用服務器的共享資源。
server 與user等級,也需要輸入有效地賬號和密碼,但密碼的驗證會由另一
台SMB服務器負責,必須指定口令服務器,即“password server”選項。
[homes]
comment = Home Directories //**注釋信息
browseable = no //** 是否可被浏覽
writable = yes //** 是否可寫
; valid users = %S //** 哪些用戶可以使用此類共享
; valid users = MYDOMAIN\%S
[printers]
printable = yes //** 標識一個打印設備
下面就來共享一個目錄:
[root@mail samba]# mkdir /share
編輯/etc/samba/smb.conf 添加一個共享目錄
[tools]
comment = Public Software
path = /share
browseable = yes
writable = yes
public = yes //**允許所有人訪問
保存退出。
添加samba用戶:
smbpasswd -a 添加一個用戶
-d 禁用一個用戶
-e 啟用用戶
-x 刪除用戶
PS:Samba要求來訪問的用戶必須是系統賬號,但是密碼必須是samba提供的密碼。
[root@mail samba]# setenforce 0
為用戶添加寫權限:
[root@mail samba]# setfacl -m u:lucy:rwx /share
只允許某些用戶有寫權限:
編輯主配置文件
[tools]
comment = Public Software
path = /share
browseable = yes
write list = lucy //** 如果允許一組用戶有寫權限 則 write list = @develop
public = yes
為組添加/share目錄的寫權限:
[root@mail samba]# setfacl -m g:develop:rwx /share/
在SElinux開啟的情況下允許用戶有寫權限:
首先改變目錄的標簽:
[root@mail samba]# chcon -R -t samba_share_t /share
[root@mail samba]# ls -dZ /share
drwxrwxr-x+ root root root:object_r:samba_share_t /share
開放samba家目錄的訪問權限:
[root@mail samba]# setsebool -P use_samba_home_dirs 1
[root@mail samba]# setsebool -P samba_enable_home_dirs 1
利用smbclient訪問共享資源:
列出目標主機上所有可以訪問的共享資源
[root@mail samba]# smbclient -L //192.168.0.39
[root@mail samba]# smbclient -L //192.168.0.39 -U lucy%lucy //** 以某個用戶身份來查看
訪問共享目錄:
[root@mail samba]# smbclient //192.168.0.39/tools -U lucy
將遠端共享目錄掛載到本地主機目錄下
[root@mail ~]# mount -t cifs //192.168.0.39/share /samba -o username=lucy
設置開機設置自動掛載
編輯/etc/fstab
//192.168.0.181/tools /mnt cifs credentials=/etc/samba/cred 0 0
credentials=/etc/samba/cred //** 驗證信息存放位置
建立cred文件:
uername=lucy
password=lucy
實現samba的訪問控制功能
編輯主配置文件:
hosts allow = 127. 192.168.0. line 81
設置iptables規則:
[root@mail ~]# iptables -t filter -A INPUT -s 192.168.0.1 -d 192.168.0.39 -p tcp -m multiport --dports 139,445 -j ACCEPT
[root@mail ~]# iptables -t filter -A INPUT -s 192.168.0.1 -d 192.168.0.39 -p udp -m multiport --dports 137,138 -j ACCEPT
[root@mail ~]# iptables -A INPUT -s 0.0.0.0/0.0.0.0 -d 192.168.0.39 -p tcp -m multiport --dports 139,445 -j REJECT
[root@mail ~]# iptables -A INPUT -s 0.0.0.0/0.0.0.0 -d 192.168.0.39 -p udp -m multiport --dports 137,138 -j REJECT