Login

Navigation

This articles is published 722 days ago and last updated 722 days ago, some information may be out of date.

Samba伺服器基礎設定(Linux)

Logo.jpg

Picture Source:

前言:
Samba被各大平台廣泛使用是基於分享的通用性,可以在WindowsLinuxMacOS等系統間相互分享彼此資源。

所以學習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

726b9b38d42a1914e831961b557aff81753f3cfb.png

新增分享目錄參數到 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

f7ddc4acf50c6a3c39ba14aa86e516b26f4dc03f.png

重新啟動 Samba 服務以使設定生效

systemctl restart smbd.service
systemctl restart nmbd.service

查看執行狀態

systemctl status smbd.service

在Windows 的執行開啟分享目錄

\\10.0.0.74\Public

a853718428625a87cdfaf0ffd485c8df869459ad.png

58799444ab886b514cfe4057da0ec11c5a8f85a0.png

可以查看到免密分享的目錄權限是

使用者: nobody

群組: nogroup

55056f5ac491fb5d64e1017e2dd648bd983e0cd7.png

需帳號密碼的分享設定
假設分享目錄為多使用者共享存取,而且要指定的使用者+密碼才可以進入到目錄讀寫資源。

建立分享目錄

mkdir -p /srv/samba/share
  • users為共享群組,因為需要分享目錄為多位使用者存取,所以將目錄加入 共享群組 users
chgrp users /srv/samba/share/

查看目錄權限

ll -d /srv/samba/share
drwxr-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/share
drwxrwsr-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 client03

id指令用於顯示用戶的ID,以及所屬群組的ID

id client01
uid=1001(client01) gid=1001(client01) groups=1001(client01),100(users)
id client02
uid=1002(client02) gid=1002(client02) groups=1002(client02),100(users)
id client03
uid=1003(client03) gid=1003(client03) groups=1003(client03),100(users)

設定每位使用者的Samba 的帳號密碼

smbpasswd -a client01
New SMB password:
Retype new SMB password:
Added user client01.
smbpasswd -a client02
New SMB password:
Retype new SMB password:
Added user client02.
smbpasswd -a client03
New SMB password:
Retype new SMB password:
Added user client03.

查看Samba 建立的帳號清單

pdbedit -L
client01: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

b641e63eae4e75d327dbb01d8a06505dc4a81975.png

重新啟動 Samba 服務以使設定生效

systemctl restart smbd.service
systemctl restart nmbd.service

查看服務運行狀態

systemctl status smbd.service

連入Samba伺服器測試

範例中在Windows使用帳號為client01的使用者。

9f8e2c47f3b5972b2005433b28a22b4165c3e2e5.png

54384997f3adf6f683e4ec6d09b320eae3e1281b.png

可以成功連入到伺服器及建立文件(讀寫)

查看使用者client01在該分享目錄的權限。

ll /srv/samba/share/

41d10bb156bb687b6d522e3f875f3a6cabde7101.png

可以看到文件的擁有者為client01,群組的所屬為users

b7f3a7db530a87881c29420fef74ae312dfa3cc7.png

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

4c19eaac2bc4b2b91804e35dfea72da5fb897fe4.png

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

ae96bc8beefdbc0b15335beb7a249497eda3c277.png

客戶端(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

adc95c5965ef628158a61e93b0633b0c77169080.png

進入到目錄建立文件

cd /mnt/linux02/
touch files{1..50}.txt

bea48356da48138fa45662debf2fe6377132f4be.png

可以看到已經成功掛載分享目錄及讀寫文件。

系統引導時自動掛載 Samba(SMB) 分享目錄

首先建立憑證檔案,用於掛載時讀取使用者名稱及密碼 (或者連網域)

vim /root/smb.cred

d7a57a366f62256a7c543eb0bf15ba2c3147d5cf.png

username=指定使用者為client03
password=密碼是 123456
#domain=domain_name (註解)

基於安全,設定只有憑證檔案擁有者才可以讀寫

chmod 600 /root/smb.cred

將開機掛載指命添加到/etc/fstab檔案

當系統啟動的時候,系統會自動地從這個文件讀取信息,並且會自動將此文件中指定的文件系統掛載到指定的目錄。
vim /etc/fstab

56b5cf778190425d2aaa47c936ed043638c27309.png

//10.10.10.54/share /mnt/linux02 cifs credentials=/root/smb.cred 0 0

即時查看/etc/fstab檔案是否設定正確

sudo mount -a

10048c449bb784bab563248a312be523d258b252.png

重新開機後系統引導時就會自動掛載分享目錄。

結語:
SambaLinux的標準程式套件。Samba為所有支持SMB / CIFS協議的客戶提供安全,穩定檔案分享和列印服務(CPUS),例如所有版本的WindowsmacOS LinuxAndorid等許多其他系統間相互分享資源。

* 基於安全性,建議不要使用免密碼的分享設定,而且Windows10/11開始不再支援SMB1.0(不能連入無密碼的Samba伺服器)。

參考資料: