Linux搭建samba服務
基於Armbian系統(基於Debian)搭建,其他Linux發行版可能會有些不同,搭建方法基本類似。
一、安裝Samba
apt -y install samba
二、修改samba的配置文件
samba的配置文件位於/etc/samba/smb.conf
默認的smb.conf文件中有很多注釋(#開頭),可以用 cat /etc/samba/smb.conf | grep -v "#"
命令過濾掉#開頭的行,方便查看
1、配置匿名訪問的smb共享
可以先備份下原本的smb配置文件cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
,然后將編輯smb.conf文件,將文件內容修改為:
#======================= Global Settings =======================
[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
map to guest = Bad User
#======================= Share Definitions =======================
[public]
comment = public
path = /opt/myShare/public
browseable = yes
public = yes
writable = yes
由於我只是用來smb共享文件,所以將原本smb.conf中的[homes]、[printers]等配置都刪除了
修改好smb.conf文件后,用testparm
命令測試配置是否正確。沒有錯誤后,輸入systemctl restart smbd.service
重啟smb服務。
這里要注意[global]設置中的map to guest = Bad User
配置,是匿名訪問的關鍵
注意點:
①、上述共享的/opt/myShare/public
目錄要設置777權限,不然默認權限下,就算設置了writable = yes,也是沒有權限寫入的
chmod 777 /opt/myShare/public
②、網上有部分教程將[global]設置中的security = user
設置為 security = share
,說share是指 用戶不需要賬戶及密碼即可登錄samba服務器,但是我實測下來,testparm會報錯
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: Ignoring invalid value 'share' for parameter 'security'
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
WARNING: Ignoring invalid value 'share' for parameter 'security'
Error loading services.
③、這樣設置后,匿名用戶創建的文件在linux中會顯示
為了解決這個問題,可以在[global]設置中增加guest account
配置
#======================= Global Settings =======================
[global]
workgroup = WORKGROUP
server string = Samba Server Version %v
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
map to guest = Bad User
guest account = sky
將匿名用戶映射為sky用戶(sky用戶是自己創建的,創建方法見下面的配置加密訪問的smb共享),此時匿名用戶新建的文件在linux中就會顯示
2、配置加密訪問的smb共享
既然是加密訪問,首先就要創建用戶並設置密碼
①、先創建linux用戶
useradd -s /sbin/nologin sky
②、再創建samba用戶,根據提示設置好密碼即可
pdbedit -a -u sky
③、驗證賬號是否添加成功
pdbedit -L #列出所有的賬號
用戶就創建好了
在上述smb.conf配置文件中增加[share]共享目錄,注意加密的要將public設置為no
#======================= Share Definitions =======================
[share]
comment = share
path = /opt/myShare/share
browseable = yes
public = no
writable = yes
修改好smb.conf文件后,同樣用testparm
命令測試配置是否正確。沒有錯誤后,輸入systemctl restart smbd.service
重啟smb服務
此時,在windows上訪問該smb服務時,只需要輸入剛才添加的用戶和對應的密碼即可訪問share目錄,如果發現不能寫入文件,別忘記了和之前匿名的方式一樣需要將共享的/opt/myShare/share
目錄設置777權限
chmod 777 /opt/myShare/share
另外,如果將browseable
參數設置為browseable = no
,那么在windows映射網絡驅動器時,輸入\\192.168.123.88
點擊瀏覽的時候是看不到share文件夾的,但是可以直接輸入全路徑添加,就是瀏覽的時候看不到了
三、擴展:samba分享移動硬盤或U盤里的文件
1、掛載移動硬盤
mount /dev/sdb1 /media/smbshare/
2、設置samba共享,在smb.conf文件中增加
#======================= Share Definitions =======================
[USB_Device]
comment = USB_Device
path = /media/smbshare
browseable = yes
public = no
writable = yes
重啟smb服務后即可
注意點:
移動硬盤或U盤被掛載使用samba共享並且正在使用時,umount會提示target is busy.
此時要想umount,先將samba服務停用,輸入systemctl stop smbd.service
停止smb服務,再輸入umount /media/smbshare
即可成功卸載磁盤,然后再輸入systemctl start smbd.service
啟動smb服務