SAMBA可以讓Windows與Linux之間共享文件系統,還可以成為打印機服務器(雖然現在不怎么需要這個功能)。
使用FTP傳輸文件有個小小的問題,那就是無法直接修改主機上面的文件數據。samba則不會。
CIFS (common Internet File System),是微軟操作系統上面的文件系統。最常見的就是目前的“網上鄰居”。不過CIFS只能讓windows機器溝通,NFS是Unix-like上面的文件共享,只能讓Unix機器溝通。
samba原為 Server Message Block(SMB)文件系統,后來在注冊的時候因為需要而注冊為samba(熱情奔放的拉丁舞蹈)。
samba 這個文件系統是架構在NetBIOS( Network Basic Input/Output System)這個通信協議上面開發出來的。NetBIOS是無法跨越路由的。
NetBIOS在局域網內實在是很好用,所以微軟的網絡架構就是用了這個協議來進行溝通。但通過NetBios over TCP/IP 的技術,我么就可以跨路由使用SAMBA服務器所提供的功能。當然,Samba還是比較廣泛地是用在LAN里。
NetBios 當初發展時就著眼于局域網內的快速數據交流,而因為是定義在局域網內,因此它并沒有使用了類似 TCP/IP 之類的傳輸協議,也就不需要IP的設置。其實主機在Netbios協議當中的定義為使用“NetBios name”,每一臺主機必須要有不同的NetBios name才行,額頭文件數據就是在不同的NetBios name 之間溝通。在同一個組中,NetBios 必須是獨一無二的。
SAMBA是通過兩個服務來控制的,分別是:
nmbd:這個daemon是用來管理工作組、NetBIOS Name等的解析。主要利用UDP協議開啟port137、138來負責名稱解析的任務;
smbd:這個daemon的主要功能就是用來管理SAMBA主機共享的目錄、文件與打印機等。主要利用可靠的TCP協議來傳輸數據,開放的端口為139與445。
samba的配置文件/etc/samba/smb.conf主要包括兩部分:
[global]
[共享資源名稱]
global中就是一些服務器的全局參數;
共享資源名稱則是針對開放的目錄來進行權限方面的設置。
在新版本的samba中,匿名訪問有所變化:
security = user
map to guest = Bad User
特別注意以下幾點:
setenforce 可能需要關閉,如果以未設置防火墻配置;
writeable = yes
browseable = yes
SAMBA用戶賬戶必須要存在于Linux系統當中(/etc/passwd),但是SAMBA用戶密碼可以另行設置;
共享的文件夾必須首先存在于服務器上;
文件夾的相關權限問題;
利用編輯smb.conf來開放其他的目錄資源,并且特別注意Linux在該目錄下的權限,chown,chmod;
利用pdbedit 來添加其他可用的SAMBA賬戶,如果該賬戶沒有存在于/etc/passwd里面,請先以 useradd 添加賬戶;
不論進行完任何的設置,請先以testparm進行確認,之后重啟smb服務;
如果samba用戶太多,并且它們的數據都放置在samba服務器上的話,/home未來肯定不夠用,所以/home所在的磁盤或許可以使用大一點的硬盤,或者使用磁盤陣列,使用LVM;
在安裝Linux時,建議不安裝 X Window;
在規劃linux時,/home最好獨立出一個partition,而且硬盤空間大一點;
規劃samba針對內網IP開放或者設置一定的防火墻規則。
可用宏列表:
%m:客戶端主機的NetBIOS名稱使用 pdbedit 來新增samba用戶:
%M:客戶端的Internet主機名,即HOSTNAME
%H:當前用戶的家目錄
%U:當前用戶的用戶名
%g:當前用戶所屬的組名
%h:當前SAMBA主機的HOSTNAME
%I:客戶端主機IP
%T:當前的日期時間
創建Samba用戶的密碼:
pdbedit -a -u smb1
輸入密碼,可與系統密碼不一致
因為SAMBA會對外提供服務,因此SELinux會特別關照一下這個服務。
SAMBA安全性的議題與管理:
使用samba是有一定的危險性的,很多網絡攻擊的蠕蟲、病毒、木馬就是通過網上鄰居來攻擊的。為了阻擋不必要的連接,默認的SELinux已經關閉了很多SAMBA連接的功能,因此可能很多客戶端的掛載可能會有問題。
1、SELinux的相關議題
2、防火墻議題:iptables來管理
3、通過內建的SAMBA設置(smb.conf)
[global]
hosts allow = 192.168.
SAMBA的訪問:
通過windows的網絡搜索;
通過 port 445的特殊登陸方式:
\\192.168.xx.xx
Samba.conf栗子
```
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
unix charset = utf-8
display charset = utf-8
#printing = cups
#printcap name = cups
#load printers = yes
#cups options = raw
browseable = yes
hosts allow = 192.168.
log file = /var/log/samba/log.%m
[共享]
comment = Public
path = /home/samba
public = yes
writeable = yes
browseable = yes
[myself]
comment = zhang
path = /home/zhang
valid users = zhang,root
writeable = yes
guest ok =?no #是否允許匿名訪問
[group]
comment =?group?share
path = /home/group
valid users = @group
writeable = yes
```