為了方便Linux在Windows平台下開發,搭建Manjaro無密訪問samba服務器
后面加了Windows下搭建samba方法
安裝smb服務器
我用的是Manjaro gnome 18,需要安裝下面幾個軟件
sudo su
pacman -S samba nautilus-share manjaro-settings-samba
配置/etc/samba/smb.conf參數
1) 安裝上面軟件之后,開始配置參數,先備份smb.conf
mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
2) 然后新建一個,寫入如下參數 vim /etc/samba/smb.conf
,這里感謝Conanx給我的參考!
[global]
workgroup = WORKGROUP
#所要加入的工作組或者域
netbios name = Manjaro
#用於在 Windows 網上鄰居上顯示的主機名
security = user
#定義安全級別
map to guest = bad user
#將所有samba系統主機所不能正確識別的用戶都映射成guest用戶
dns proxy = no
#是否開啟dns代理服務
[misfit]
#共享顯示的目錄名
path = /home/misfit/code
#實際共享路徑
browsable = yes
#共享的目錄是否讓所有人可見
writable = yes
#是否可寫
guest ok = yes
#是否允許匿名(guest)訪問,等同於public
create mask = 0777
#客戶端上傳文件的默認權限
directory mask = 0777
#客戶端創建目錄的默認權限
#注意共享文件在系統本地的權限不能低於以上設置的共享權限。
修改好了輸入testparm
檢查smb.conf是否有語法錯誤,需要其他配置這里是:配置參數詳解。
3) 配置權限和密碼工作
##將系統用戶加入到samba用戶,並設置密碼,這里我們按兩次回車,設置成無密碼
smbpasswd -a misfit #這里misfit是上面設置的 #共享顯示的目錄名,也就是自己系統用戶名
##查看所有Samba用戶
pdbedit -L
##查看對應IP上的samba服務器
smbclient -L //IP #例如查看本機 smbclient -L 127.0.0.1
##這一段已經失效----2019.4.10更新
##將 path 中目錄的所有者改為nobody,否則,任何人都沒權限操作這個目錄。另外用如下命令設置:
##chown nobody:nobody /home/misfit/code -R
##將 path 中目錄的權限設置為777
chmod 777 /home/misfit/code -R
chmod 777 /home/misfit/ #這個不給權限會拒絕訪問
到這里配置基本完成了,跳到下一步直接啟動samba服務器
注意:不要把自己的 /home/misfit 系統目錄修改成nobody權限了,會導致開機無法登錄系統
如果導致進不小心修改了,登不進界面,在開機界面按ctrl+alt+F2
進入tty2控制台,修改輸入下面命令改回權限
chown misfit:misfit /home/misfit -R
這里misfit是linux的用戶名。
其他知識補充:目前samba有三種后台:smbpasswd、tdbsam和ldapsam。sam應該是security account manager(安全賬戶管理)的簡寫。
1.smbpasswd:該方式是使用smb自己的工具smbpasswd來給系統用戶(真實
用戶或者虛擬用戶)設置一個Samba密碼,客戶端就用這個密碼來訪問Samba的資源。smbpasswd文件默認在/etc/samba目錄下,不過有時候要手工建立該文件。
2.tdbsam:該方式則是使用一個數據庫文件來建立用戶數據庫。數據庫文件叫passdb.tdb,默認在/etc/samba目錄下。passdb.tdb用戶數據庫可以使用smbpasswd –a來建立Samba用戶,不過要建立的Samba用戶必須先是系統用戶。我們也可以使用pdbedit命令來建立Samba賬戶。pdbedit命令的參數很多,我們列出幾個主要的。
pdbedit –a username:新建Samba賬戶。
pdbedit –x username:刪除Samba賬戶。
pdbedit –L:列出Samba用戶列表,讀取passdb.tdb數據庫文件。
pdbedit –Lv:列出Samba用戶列表的詳細信息。
pdbedit –c “[D]” –u username:暫停該Samba用戶的賬號。
pdbedit –c “[]” –u username:恢復該Samba用戶的賬號。
3.ldapsam:該方式則是基於LDAP的賬戶管理方式來驗證用戶。首先要建立LDAP服務,然后設置“passdb backend = ldapsam:ldap://LDAP Server”
然后啟動服務
systemctl start smb #啟動服務
#然后設置為開機自啟
systemctl enable smb #開機自啟
#其他命令
systemctl status smb #查詢狀態
systemctl restart smb #重新啟動
Manjaro防火牆默認關閉的,並且沒有安裝selinux,安裝了的需要關閉
systemctl stop iptables #關閉防火牆
setenforce 0 #關閉selinux
關閉selinux開機啟動
sudo vim /etc/selinux/config
將SELINUX=enforcing
改為SELINUX=disabled
。
最后掛載到windows上
打開資源管理器>>右擊網絡>>映射網絡驅動,添加\Linux IP\共享目錄,完成
Windows搭建服務器
1) 關閉windows防火牆
控制面板>>系統安裝>>windows防火牆>>打開關閉防火牆,家庭、共用都關掉
2) 解禁Guest賬戶
資源管理右擊計算機,管理>>本地用戶和組>>用戶,右擊Guest選擇屬性,將賬戶已禁用的勾去掉。
3) 在本地策略上修改用戶權限分配和安全選項
- 輸入“secpol.msc”命令打開本地安全策略向導:
- 本地策略>>用戶權限分配>>拒絕從網絡訪問這台計算機,雙擊打開,將Guest賬戶刪除。
- 本地策略>>安全選項>>網絡訪問:本地賬戶的共享和安全模型,雙擊打開,設置為僅來賓模式。
4)將Windows的文件夾設置成無密共享
右鍵需要共享的文件夾,屬性>>共享(標簽)>>共享(按鈕),添加everyone用戶,設置權限級別為 讀\寫 ,單擊共享。
5)最后掛載到Manjaro Linux
- 查看共享目錄
smbclient -L //[PC的IP]
- 掛載共享目錄到Linux,manjaro 默認安裝了cifs:
mount -t cifs //[PC的IP]/[共享目錄名] /[掛載目錄名]
6)開機自動掛載samba (貌似無效)
在vim /etc/fstab
添加:
//[PC的IP]/[共享目錄名] /[掛載目錄名] cifs defaults,guest 0 0
關於服務器的選擇:
我目前偏向於在虛擬機Linux中將smb和nfs都搭建,Linux和windows之間共享用smb,Linux掛載到開發版用nfs。