寫在前面】
前面兩篇文章探索了手機Linux(Debian9)基礎上的博客與論壇部署。那么本期我們來談談一個比較簡單的課題:網絡文件共享。有大佬肯定會第一時間嫌棄:不就是NFS嘛,簡單!但就我基于手機平臺的NFS安裝與部署卻失敗了,翻閱了一些文檔,覺得解決起來挺復雜。所以只能換一種方式——Samba共享。雖然NFS部署號稱“Need For Speed”(笑),但Samba個人覺得更簡單易懂。
【聲明】
本文圖片基本為原創,文末附有參考文獻。
【以下正文】
一、基本環境概述
本文所涉共享文件夾位置為/var/www/html/files,跟網上很多教程不同,因為本人手機的/var/www/html文件夾已經設置了外網訪問,而且部署了WordPress和DiscuzX,為了方便從外部環境觀察實際效果,所以直接把共享文件夾也設在一起了。
二、部署過程
1 Nginx的相關配置
①創建files文件夾,并賦予其讀寫權限
cd /var/www/html
mkdir files
chmod -R 777 files
# 如果不賦予權限,那么文件夾中的文件只能由Linux端寫入修改,其他端只能可見只讀
②修改Nginx配置文件(要找到正確的配置文件位置)
cd /etc/nginx/sites-available
用文本編輯器打開其中的default文件
在server字段添加以下代碼,以確保瀏覽器以UTF-8編碼訪問
charset utf-8;
找到接下來的location字段,將共享文件夾/files插入其后,并在下面增加三行代碼
autoindex on; #打開目錄索引
autoindex_exact_size off; #以MB/GB來顯示文件大小,如為on則以字節顯示
autoindex_localtime on; #顯示文件的服務器時間
③保存default配置文件,并重啟Nginx服務
service nginx restart
然后在瀏覽器鍵入192.168.1.105(手機IP)/files/即可訪問這個文件夾
2 打開“此電腦”,在計算機選項卡下,選擇“映射網絡驅動器”,分配盤符,鍵入正確位置即可
在文件末尾加上以下代碼后保存文件:
[share] #共享文件夾名稱
comment = file share #共享說明
path = /var/www/html/files #共享文件夾位置
browseable = yes #共享文件夾可見
writeable = yes #共享文件夾可寫入(需要前文設置權限)
guest ok = yes #訪客可訪問
③重啟Samba服務
service smbd restart
三、Win10下訪問共享文件夾
1 Win+R打開運行,鍵入\192.168.1.105(手機IP)\share,回車訪問
2 打開“此電腦”,在計算機選項卡下,選擇“映射網絡驅動器”,分配盤符,鍵入正確位置即可
【效果示范】
Win10下訪問
【參考文獻】
https://www.linuxprobe.com/
https://blog.csdn.net/q649381130/article/details/81261306
https://m.jb51.net/LINUXjishu/63475.html
https://jingyan.baidu.com/article/495ba841cf3e0d38b20ede71.html
https://blog.csdn.net/fightingboom/article/details/104875614
桑巴是一種局域網共享
1.查看本地有沒有包
rpm -qa|grep samba
我是原就提前下好了的
2.下載
(1)掛在光盤,本地安裝
(2)在線安裝
我選擇(2),(1)既要掛載還是老版本的
命令:
3.了解配置文件
(1)
文件或目錄 | 說明 |
/etc/samba/smb.conf | 主配置文件 |
/etc/samba/lmhosts | 在啟動Samba服務進程時能自動捕捉到局域網內主機的NetBIOS名與IP地址的對應關系,并自動保存在lmhosts文件中,作用類似于/etc/hosts,一般無需配置 |
/var/lib/samba/private/passdb.tdb | 用戶認證信息文件,用來存放samba賬戶及與Linux賬戶之間的映射關系 |
/var/log/samba/ | 用于存放Samba的日志文件的目錄 |
類別 | 節/段落 | 作用 |
全局設置節 (global Settings) | [global] | 用于定義Samba服務器的總體特性,其配置對所有節生效,主要有基本設置參數、安全設置參數、打印機設置參數和日志設置參數等 |
特定共享節 | [homes] | 用于設置用戶家目錄的共享屬性 |
[printes] | 用于設置打印機共享資源的屬性 | |
用戶自定義共享節 | [節名] | 用于用戶自定義共享目錄的共享屬性的設置(需用戶添加,每個共享目錄對應一節) |
(2)
RHEL7中Samba 4版本對客戶端進行身份驗證的方式有以下兩種:
user(用戶模式):用戶對Samba服務器的訪問是由Samba服務器依據本地賬戶庫對訪問者進行身份驗證的,它要求每個訪問者必須在Samba服務器上有其本地Linux賬戶。
domain(域模式): 這種模式是把Samba服務器加入到Windows域網絡中,作為域中的成員。擔任用戶對Samba服務器訪問身份驗證的是域中的Windows域控制器,而不是Samba服務器,此時必須指定域控制服務器的NetBIOS名稱。
提示:在Samba4版本中,share和server驗證方式已被棄用。若需要share驗證方式以實現匿名訪問共享文件夾,需要用security = user和map to guest = Bad User兩個配置行方可。
此時,用戶對Samba服務器的訪問無需進行身份驗證,也就是不用輸入用戶名和密碼(即允許匿名訪問),用戶的訪問權限僅由相應用戶對共享文件的訪問權限決定。這是最簡單,但也是最不安全的一種Samba服務器訪問方式,該方式適用于公共共享資源。
(3)
smb.conf文件中共享定義的設置
要發布共享資源,需要對共享定義部分(Share Definitions)進行配置。共享定義通過[Homes]、[Printers]和[自定義目錄名]等節來說明共享資源的屬性。
[homes]為特殊共享目錄,其名字不能改變。[homes]共享目錄并不特指具某個共享目錄,而是表示Samba用戶的宿主目錄,即Samba用戶登錄后可以訪
問同名Linux系統用戶的宿主目錄中的內容。默認情況下,用戶宿主目錄位于/home目錄下,每個用戶有一個以用戶名命名的子目錄。
[printers]表示共享打印機。[printers]行也是特殊的行,不能修改其名字。若定義了[printers]段,用戶就可以連接在printcap文件里指定的打印機。要注意的是,
若是設置共享打印機,則必須設置printable關鍵字語句為yes,否則用戶無法打印。
(4)
配置項 | 說明 |
[用戶自定義的共享名] | 用戶訪問時通過此共享名來識別不同的共享資源。也就是在Windows客戶端的“網絡”或“網上鄰居”中看見的文件夾的名字,可以與原目錄名不同。 |
comment=備注信息 | 設置共享目錄或打印機的說明信息 |
path=絕對地址路徑 | 指定共享目錄在Samba服務器中的絕對路徑(此項必須要設置) |
public=yes|no | 是否允許匿名用戶訪問共享的文件夾或打印機資源 |
guest ok = yes|no | 設置共享目錄是否允許所有人都可以訪問,與public配置項作用相同 |
valid users=用戶名或組名列表 | 設置允許訪問共享的用戶或組的列表,不允許列表以外用戶訪問。多個用戶名或組名以空格或逗號分隔,組名前面應帶@、+、&三種符號之一,其中: @表示先通過NIS服務器查找,NIS找不到再到本機查找;+表示只在本機的密碼文件組中查找;&表示只在NIS服務中查找。若列表為空,表示允許所有用戶訪問共享 |
readonly=yes|no | 設置共享目錄只讀還是可讀寫 |
writable=yes|no | 指定共享目錄有讀寫權還是只讀權 (若可寫,還需要目錄本身具有寫權限),,默認設置為writable=no(即只讀權限) |
write list=用戶名或組名清單 | 設置對共享目錄具有可讀寫權限的用戶名或組名。多個用戶名或組名以空格或逗號分隔,組名前可以帶@、+、&。若writeable=no,則不在write list列表中的用戶將具有只讀權限 |
browseable = yes|no | 設置共享目錄在“網絡”或“網上鄰居”中是否可見(默認為no,即隱藏共享目錄) |
printable=yes|no | 是否允許用戶打印 |
create mask = 文件權限值 | 設置用戶在共享目錄下創建的文件的默認訪問權限。通常是以數字表示的,如0664,代表的是文件所有者對新創建的文件具有可讀可寫權限,其他用戶具有可讀權限,而所屬主要組成員不具有任何訪問權限 |
directory mask = 子目錄權限值 | 設置用戶在共享目錄下創建的子目錄的默認訪問權限 |
(3)編輯配置文件
在之前建議先cope一份配置文件用來以后還原
vim /etc/samba/smb.conf
輸入: testparm
驗證語法是否有問題,return ****ok*** 表明沒問題
(4)創建用戶和共享文件夾
useradd u1 u2
mkdir -p /var/samb/share
(5)為共享文件夾設置SELinux安全上下文
semanage fcontext -a -t samba_share_t "/var/samb/share(/.*)?"
restorecon -Rv /var/samb/share/ #默認應用至該目錄
查看擴展權限:
ll -dZ /var/samb/share/
顯示:
drwxr-xr-x. root root unconfined_u:object_r:samba_share_t:s0 /var/samb/share/
重啟服務:
systemctl restart smb nmb
(6)測試
我放了圖片在share用于window端測試
自此處輸入:\+your ip
enter
可見如下:
如果還需要其他功能可以繼續配置.conf