Samba伺服器基礎設定(Linux)
| 前言: |
Samba被各大平台廣泛使用是基於分享的通用性,可以在Windows,Linux,MacOS等系統間相互分享彼此資源。所以學習
Samba伺服器基礎設定也是有其必要性。
| 目錄內容: |
| 操作步驟: |
所有設定基於"Ubuntu 20.04.4 LTS" 系統。便於操作,轉換到root管理帳號
sudo -i安裝Samba軟件
apt update && apt install samba -y| 免密碼的分享設定 |
建立分享目錄
mkdir -p /srv/samba/public并允許目錄的所有存取權限
chmod 777 /srv/samba/public
新增分享目錄參數到 smb.conf 設定檔
cat >> /etc/samba/smb.conf << EOF
[Public]
comment = Public Folder without Password
browseable = yes
path = /srv/samba/public/
read only = no
security = share
guest ok = yes
EOF| 參數 | 說明 |
|---|---|
| [Public] | 分享名稱 |
| comment = | 分享說明 |
| browseable = yes | 讓使用者看到這個分享目錄 |
| path = | /srv/samba/public 是linux內的目錄路徑 |
| read only = no | 可以寫入 |
| security = share | 免帳號密碼 登入分享目錄 |
| guest ok = yes | 允許賓客 |
檢驗設定檔 smb.conf 的語法正確與否
testparm
重新啟動 Samba 服務以使設定生效
systemctl restart smbd.service
systemctl restart nmbd.service查看執行狀態
systemctl status smbd.service在Windows 的執行開啟分享目錄
\\10.0.0.74\Public

可以查看到免密分享的目錄權限是
使用者: nobody
群組: nogroup

| 需帳號密碼的分享設定 |
假設分享目錄為多使用者共享存取,而且要指定的使用者+密碼才可以進入到目錄讀寫資源。
建立分享目錄
mkdir -p /srv/samba/share- 以
users為共享群組,因為需要分享目錄為多位使用者存取,所以將目錄加入 共享群組users
chgrp users /srv/samba/share/查看目錄權限
ll -d /srv/samba/sharedrwxr-xr-x 2 root users 4096 Apr 28 09:26 /srv/samba/share/
設定共享群組的目錄權限
設定目錄SGID標籤,讓加入 users 群組的所有使用者在該目錄下均具有讀寫的權限。
chmod 2775 /srv/samba/share/查看SGID權限
ll -d /srv/samba/sharedrwxrwsr-x 2 root users 4096 Apr 28 09:26 /srv/samba/share/群組的x變為s
建立3個用戶,名稱分別為 client01, client02, client03 ,且均加入 users 為次要群組。
useradd -G users client01
useradd -G users client02
useradd -G users client03id指令用於顯示用戶的ID,以及所屬群組的ID
id client01uid=1001(client01) gid=1001(client01) groups=1001(client01),100(users)
id client02uid=1002(client02) gid=1002(client02) groups=1002(client02),100(users)
id client03uid=1003(client03) gid=1003(client03) groups=1003(client03),100(users)
設定每位使用者的Samba 的帳號密碼
smbpasswd -a client01New SMB password:
Retype new SMB password:
Added user client01.
smbpasswd -a client02New SMB password:
Retype new SMB password:
Added user client02.
smbpasswd -a client03New SMB password:
Retype new SMB password:
Added user client03.
查看Samba 建立的帳號清單
pdbedit -Lclient01:1001:
client03:1003:
client02:1002:
新增分享目錄參數到Samba的設定檔 smb.conf
cat >> /etc/samba/smb.conf << EOF
[Share]
comment = Share with Multiple Users
browseable = yes
path = /srv/samba/share
read only = no
security = user
create mask = 0775
directory mask = 0775
write list = @users
EOF| 參數 | 說明 |
|---|---|
| [Share] | 分享名稱 |
| comment = | 分享說明 |
| browseable = yes | 讓使用者看到這個分享目錄 |
| path = | /srv/samba/share 是linux內的目錄路徑 |
| read only = no | 可以寫入 |
| security = user | 需要帳號+密碼 才可以存取分享目錄 |
| create mask = 0775 | 使用者建立文件的預設權限 |
| directory mask = 0775 | 使用者建立目錄的預設權限 |
| write list = @users | 指加入該群組(users)的使用者均可取得使用的權限! |
檢驗設定檔 smb.conf 的語法正確與否
testparm
重新啟動 Samba 服務以使設定生效
systemctl restart smbd.service
systemctl restart nmbd.service查看服務運行狀態
systemctl status smbd.service連入Samba伺服器測試
範例中在Windows使用帳號為client01的使用者。


可以成功連入到伺服器及建立文件(讀寫)
查看使用者client01在該分享目錄的權限。
ll /srv/samba/share/
可以看到文件的擁有者為client01,群組的所屬為users

同樣,client02建立文件的擁有者為client02,群組的所屬為users

其他使用者也可刪除client01建立的文件及內容

| 客戶端(Linux)掛載分享目錄設定 |
安裝軟件包,用於掛載及使用SMB功能
apt install cifs-utils -y手動掛載 Samba(SMB) 分享目錄
建立掛載目錄
mkdir -p /mnt/linux02手動掛載
mount -t cifs -o username=client02 //10.10.10.54/share /mnt/linux02/
Password for client02@//10.10.10.54/share: *******在-o參數中,指定使用者為client02

進入到目錄建立文件
cd /mnt/linux02/
touch files{1..50}.txt
可以看到已經成功掛載分享目錄及讀寫文件。
系統引導時自動掛載 Samba(SMB) 分享目錄
首先建立憑證檔案,用於掛載時讀取使用者名稱及密碼 (或者連網域)
vim /root/smb.cred
username=指定使用者為client03
password=密碼是123456
#domain=domain_name (註解)
基於安全,設定只有憑證檔案擁有者才可以讀寫
chmod 600 /root/smb.cred將開機掛載指命添加到/etc/fstab檔案
當系統啟動的時候,系統會自動地從這個文件讀取信息,並且會自動將此文件中指定的文件系統掛載到指定的目錄。
vim /etc/fstab
//10.10.10.54/share /mnt/linux02 cifs credentials=/root/smb.cred 0 0即時查看/etc/fstab檔案是否設定正確
sudo mount -a
重新開機後系統引導時就會自動掛載分享目錄。
| 結語: |
Samba是Linux的標準程式套件。Samba為所有支持SMB/CIFS協議的客戶提供安全,穩定檔案分享和列印服務(CPUS),例如所有版本的Windows,macOS,Linux和Andorid等許多其他系統間相互分享資源。* 基於安全性,建議不要使用免密碼的分享設定,而且
Windows10/11開始不再支援SMB1.0(不能連入無密碼的Samba伺服器)。
| 參考資料: |