Linux上Samba服務的搭建和訪問
SAMBA服務的產生
在早期的網路世界中,檔案資料在不同主機之間的傳輸大多是使用FTP服務,但是FTP服務傳輸檔案有一些小小的問題,那就是我們無法直接修改主機上面的檔案資料,也就是說我們如果想要修改某個檔案的資料時,就必須將該檔案的伺服器下載後才能修改,這樣就很麻煩了。其實解決這個問題也很簡單,NFS服務就很好的解決檔案資料不能直接修改的問題,因為NFS服務是直接將共享目錄掛載到客戶端的機器上,那麼共享目錄就好像成了自己的目錄一樣,共享資料的使用自然就很方便,但是,NFS也有一些小小的問題,它僅能使Unix Like的機器相互分享。那麼我要是需要Windows與Unix-Like這兩個不同的平臺相互分享呢?那該怎麼辦?也就是說,FTP服務實現了跨平臺分享,卻無法修改共享資料;NFS解決了共享資料的修改問題,卻沒辦法實現跨平臺的共享。所以,SAMBA服務也就隨著需要產生了。 它綜合了FTP和NFS的有點,既實現了跨平臺的傳輸,還滿足了修改資料的功能。
SAMBA服務的配置檔案
samba的設定流程
- 伺服器整體設定方面:在smb.conf當中設定好工作組、NetBIOS主機名、密碼使用狀態(無密碼分享或 本機密碼)等等;
- 規劃準備分享的目錄引數:在smb.conf內設定好預計要分享的目錄或裝置以及可供使用的賬號資料;
- 建立所需要的檔案系統:根據步驟2的設定,在linux檔案系統當中建立好分享出去的檔案或裝置,以及相關的許可權引數
- 建立可用samba的賬號:根據步驟2的設定,建立所需的linux實體賬號,再一pdbedit建立使用的samba的密碼
- 啟動服務:啟動samba的smbd,nmbd服務,開始運轉。
samba服務的配置檔案
由上述的設定流程,可以看出samba服務的配置檔案為服務搭建起到了導向的作用,那麼我就先來了解以下samba的基礎配置。
- smb.conf繼承了.ini檔案的格式,用[ ]分成了不同的部分
- 全域性設定:[global] 伺服器通用或全域性設定的部分
- 特定共享設定:[homes] 使用者的家目錄共享;[printers] 定義印表機資源和服務;[sharename] 自定義的共享目錄配置。
- 巨集定義:
符號 | 釋義 | 符號 | 釋義 |
---|---|---|---|
%m | 客戶端主機的NetBIOS名 | %M | 客戶端主機的FQDN |
%H | 當前使用者家目錄路徑 | %U | 當前使用者的使用者名稱 |
%g | 當前使用者所屬組 | %h | samba伺服器的主機名 |
%L | samba伺服器的NetBIOS名 | %I | 客戶端主機的IP |
%T | 當前的日期和時間 | %S | 可登入的使用者名稱 |
samba伺服器全域性配置
- workgroup 指定工作組名稱
- server string 主機註釋資訊
- netbios name 指定NetBIOS名
- interfaces 指定服務偵聽介面和ip
- hosts allow 可用“,”,空格,或tab分隔,預設允許所有主機訪問,也可在每個共享獨立配置。
- hosts deny 拒絕指定主機訪問
- config file = /etc/samba/conf.d/%U 使用者獨立的配置檔案
- Log level = 2 日誌級別,預設為0,不記錄日誌
- max log size = 50 日誌檔案達到50k,將輪循rotate,單位KB
- passdb backend = tdbsam 密碼資料庫格式
“samba服務共享目錄配置”
- 每個共享目錄應該有獨立的[ ]部分
- [共享名稱] 遠端網路看到的共享名稱
- comment 註釋資訊
- path 所共享的目錄路徑
- public 能否被guest訪問的共享,預設為no,和guest ok類似
- browsable 是否允許所有使用者瀏覽此共享,預設為yes,no為隱藏
- writeable = yes 可以被所有使用者讀寫,預設為no
- read only = no 和 writeable = yes 等價,如與以上設定發生衝突,放在後面的設定生效,預設只讀
- write list 三種形式:使用者,@組名(如writeable=no,列表中使用者或組可讀寫,不在列表中使用者只讀)
- valid users 特定使用者才能訪問該共享,如為空,將允許所有使用者訪問,使用者名稱之間用空格分隔
SAMBA服務的搭建
基礎的SAMBA服務搭建
要求: 在現有的Linux上搭建一個samba服務,共享/app下的smbtest目錄。
在搭建服務之前,我們需要預先安裝我們需要的軟體
- samba:這個軟體主要提供了SMB伺服器所需的各項服務程式(smbd及nmbd)以及其他與SAMBA相關的logrotate配置檔案及開機預設選項檔案等
- samba-common:這個軟體提供的則是伺服器與客戶端都會使用到的資料,包括SAMBA的主要配置檔案(smb.conf)、語法檢驗指令(testparm)等等;
安裝完所需的軟體之後,我們便可以正式開始搭建SAMBA服務了
- 在samba伺服器上安裝samba包
yum - y install samba
- 建立samba使用者和組
groupadd -r team useradd -s /sbin/mologin -G team lsy smbpasswd -a lsy useradd -s /sbin/nologin qjc smbpasswd -a qjc
- 建立samba共享目錄,並設定SElinux
mkdir ./app/smbtest chgrp team /app/smbtest setfacl -m g:team:rwx /app/smbtest/ setfacl -m u:qjc:rwx /app/smbtest/ chcon -Rt samba_share_t/app/smbtest
- samba伺服器配置
vim /etc/samba/smb.conf
啟動samba服務
windows客戶端訪問
我在上面的配置檔案中簡單的設定了,使得team組的使用者對共享目錄有寫許可權,而其他使用者則只可以瀏覽共享目錄,不能修改共享資料,具體訪問如下圖:
- 客戶端登陸
- 以team組成員lsy身份進入共享目錄, 則可以在目錄中建立,編輯檔案
- 再以qjc的身份進入共享目錄,因為沒有寫許可權,所以只能訪問,建立檔案會被拒絕
嘗試建立新檔案時
- 同時我們再伺服器端共享目錄下,可以檢視到lsy使用者建立的檔案
SAMBA服務實現多使用者掛載(僅CentOS7支援)
我們仍利用上面已經建立好的共享目錄lishuyang來進行操作(ps:: 在生產環境中,建立共享目錄,建議使用LVM)。
服務端:
在服務端, 我們還需要建立一個普通samba使用者smbbase, 作為我們在客戶端登陸的擁有較小許可權的使用者(實現多使用者的掛載目的就在於對共享目錄獲取更大的許可權),使用者smbbase只有瀏覽共享目錄的許可權
useradd -s /sbin/nologin smbbase smbpasswd -a smbbase
客戶端
- 安裝客戶端需要的軟體 cifs-utils(系統一般預設安裝)
- 編輯檔案,將許可權較低的smbbase使用者的賬戶資訊寫入
- 建立掛載目錄並將共享目錄掛載到本地掛載目錄上
- 進入/app/mnt目錄下,可以發現已經進入到了共享目錄下,嘗試用smbbase使用者修改檔案(smbbase沒有寫許可權,所以一定被拒絕寫入)
- 切換到使用者lsy,執行如下操作
cifscreds add 192.168.100.127
- 嘗試修改檔案(使用者lsy擁有寫許可權,若能修改,則多使用者掛載實驗成功)
ps:有幾個只需要注意的問題:
1,防火牆要關閉, # service iptables stop
2,注意共享目錄的許可權設定
3,要設定成不需要使用者名稱密碼直接訪問,需要修改配置檔案,將security設定成security = share。
更多 Samba 相關教程見以下內容:
CentOS 7.2 安裝配置Samba伺服器 ofollow,noindex" target="_blank">https://www.linuxidc.com/Linux/2017-03/141390.htm
VMWare 虛擬機器Ubuntu 雙網絡卡 訪問 samba 速度 翻倍 https://www.linuxidc.com/Linux/2013-06/85445.htm
samba安裝使用圖解 https://www.linuxidc.com/Linux/2017-03/141254.htm
CentOS7.2下原始碼搭建Samba檔案伺服器[原創] https://www.linuxidc.com/Linux/2017-06/144557.htm
如何在Ubuntu 16.04上安裝和配置Samba伺服器以進行檔案共享 https://www.linuxidc.com/Linux/2017-11/148194.htm
CentOS 7下Samba服務安裝與配置詳解 https://www.linuxidc.com/Linux/2017-11/148354.htm
Red Hat 6.5 下 Samba伺服器搭建 https://www.linuxidc.com/Linux/2017-07/145747.htm
如何在Ubuntu 17.10上使用System-Config-Samba https://www.linuxidc.com/Linux/2018-01/150493.htm
Linux公社的RSS地址 : https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址: https://www.linuxidc.com/Linux/2018-10/154738.htm