samba-4.12.3版本 smb.conf 配置方式


1. 配置說明

1.1> 文件位置

Samba服務的主配置文件是smb.conf,默認在/etc/samba/目錄下。

1 [root@localhost /]# vim etc/samba/smb.conf      # 文件路徑 2 [global]
3 workgroup = ...
4 server string = ...
5 netbios name = ...
6 security = ...
7 map to guest = ...
8 dns proxy = ...

 

1.2> 文件配置格式

smb.conf含有多個段,每個段由段名開始,直到下個段名。每個段名放在方括號中間。

每段的參數的格式是:名稱 = 值。挨着等號的兩側可以留出空格, 解放排版強迫症患者。

配置文件中一行一個段名和參數,除了[global] 段外,段名和參數名不分大小寫。

所有的段都可以看作是一個共享資源。段名是該共享資源的名字,段里的參數是該共享資源的屬性。

 1 [global]          # 段名, 也將是Windows下訪問共享時的文件名  2 workgroup = ...
 3 server string = ...
 4 netbios name = ...
 5 security = ...
 6 map to guest = ...
 7 dns proxy = ...
 8 
 9 [data]
10 path = /.../.../
11 browseable = ...
12 writable = ...
13 guest ok = ...
14 read only = ...

 

1.3> 三個特殊 <section header>

[global]

[global] 下配置的內容是全局可見的,但是在需要的時候,我們可以在其他 [自定義共享] 中定義某些屬性來覆蓋 [global] 的對應選項定義,比如我們在全局中配置了 deadtime = 10,作用為10分鍾強制斷線,我們在 [自定義共享] 的局部配置了 deadtime = 20,那么用戶訪問這個  [自定義共享] 將會20分鍾強制斷線。如果 [自定義共享] 的局部沒有配置 deadtime 那么他依舊是10分鍾強制斷線。

[homes]

[homes] 下的配置作用為:當客戶端發起訪問共享服務請求時,samba服務器就查詢 smb.conf 文件是否定義了該共享服務,如果沒有指定的 [自定義共享] ,但 smb.conf 文件定義了 [homes] 時,samba 服務器會將請求的共享服務名看做是某個用戶的用戶名,並在本地的 password 文件中查詢該用戶,若用戶名存在並且密碼正確,則 samba 服務器會將 [homes] 中的選項定義克隆出一個共享服務給客戶端,該共享的名稱是用戶的用戶名。

[printers]

[printers] 用於提供打印服務。當客戶端發起訪問共享服務請求時,沒有特定的服務與之對應,並且 [homes] 也沒有找到存在的用戶,則samba服務器將把請求的共享服務名當做一個打印機的名稱來進行處理。

 

1.4> 其他注意事項

1.4.1 配置中,以“=”來划分選項名和選項值

1.4.2 如果說配置過長,可以在某行的末尾使用續行符“\”來在下一行繼續某選項的定義

1.4.3 共享的服務器名稱,以及配置選項不區分大小寫

1.4.4 配置保存完成后,使用 testparm 命令可以測試 smb.conf 配置是否正確。

1.4.5 使用 testparm -v 命令可以詳細的列出 smb.conf 支持的配置參數。

1.4.6 使用 testparm --show-all-parameters 命令可以列出 samba-4.12.3版本490余項配置的默認參數,如果smb.conf 中沒有對其作出配置,那么都將按照默認值處理。

 

1.4> 可配置項的含義說明

所有配置的類型,以及常用配置項的說明可以看這篇:samba-4.12.3版本 smb.conf 配置內容解釋

 

2. 配置舉例

2.1 配置一個不需要賬號密碼便可以訪問的文件夾

進入到root權限操作

進入 smb.conf 配置內容

vim /etc/samba/smb.conf
[global]
        workgroup = WORKGROUP
        server string = Samba Server %v
        netbios name = SambaServer
        security = user
        map to guest = bad user
        dns proxy = no

[homes]
        comment = this is homes
        path = /home/homes/
        browseable = yes
        guest ok = yes
        writable = yes

編輯完成后保存,驗證配置

testparm

出現以下內容

[root@localhost /]# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
        dns proxy = No
        map to guest = Bad User
        netbios name = SAMBASERVER
        security = USER
        server string = Samba Server %v
        idmap config * : backend = tdb
[homes]
        comment = this is homes
        guest ok = Yes
        path = /home/homes/
        read only = No

到此,說明配置完畢,接下來添加共享需要的文件夾。

創建文件夾,我這里放到了home文件夾下,你如果是其他位置,記得改上邊 smb.conf 中的 path = /home/homes/

mkdir -p /home/homes/

修改文件夾權限,由於是公共訪問操作,這里給了777最高權限

chmod -R 0777 /home/homes/

改變文件上下文

chcon -t samba_share_t /home/homes/

修改文件所有者和文件關聯屬組為 nobody 

chown -R nobody:nobody /home/homes/ 

重啟Samba服務

/sbin/service smb restart

windows下 win + R 打開運行,輸入服務器IP地址

 

Linux 下的查看打印

[root@localhost homes]# touch Linux創建.txt
[root@localhost homes]# vim Linux創建.txt
[root@localhost homes]# ll
總用量 8
-rw-r--r--. 1 root       root       493 1月  17 23:12 Linux創建.txt
-rwxr--r--. 1 suozhiyuan suozhiyuan   3 1月  17 23:12 Windows創建.txt

 

 

2.2 配置一個指定用戶, 通過賬號密碼訪問的文件夾

進入到root權限操作

創建一個用戶組, 如果你要的組已經有了, 就不用創建了, 這里的 SUOZHIYUAN 是我的組名

groupadd SUOZHIYUAN

創建一個用戶, 並且添加到組中, 如果這個用戶你已經有了, 就不用創建了, 這里的 suozhiyuan 是我的用戶名

useradd -g SUOZHIYUAN suozhiyuan

配置這個用戶的密碼, (密碼要求輸入兩遍)   這里的 suozhiyuan 是我的用戶名

smbpasswd -a suozhiyuan

 

接下來添加共享需要的文件夾

創建共享文件夾,我這里放到了home文件夾下

mkdir -p /home/suozhiyuan/

修改文件夾權限,由於是私人文件夾,這里給了700

chmod -R 0700 /home/suozhiyuan/

改變文件上下文

chcon -t samba_share_t /home/suozhiyuan/

修改文件所有者和文件關聯屬組 

chown -R suozhiyuan:suozhiyuan /home/suozhiyuan/ 

 

進入 smb.conf 配置內容

vim /etc/samba/smb.conf
[global]
        workgroup = WORKGROUP
        server string = Samba Server %v
        netbios name = SambaServer
        security = user
        map to guest = bad user
        dns proxy = no

[suozhiyuan]
        comment = this is suozhiyuan
        path = /home/suozhiyuan/
        browseable = yes
        valid users = suozhiyuan
        guest ok = no
        writable = yes

編輯完成后保存,驗證配置

testparm

出現以下內容

[root@localhost homes]# testparm
Load smb config files from /etc/samba/smb.conf
Global parameter guest account found in service section!
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
        dns proxy = No
        map to guest = Bad User
        netbios name = SAMBASERVER
        security = USER
        server string = Samba Server %v
        idmap config * : backend = tdb


[suozhiyuan]
        comment = this is suozhiyuan
        path = /home/suozhiyuan/
        read only = No
        valid users = suozhiyuan

到此,配置完畢。

重啟Samba服務

/sbin/service smb restart

windows下 win + R 打開運行,輸入服務器IP地址

 

Linux 下查看文件

[root@localhost suozhiyuan]# cd /home/suozhiyuan/
[root@localhost suozhiyuan]# touch Linux創建.txt
[root@localhost suozhiyuan]# ls -laF
總用量 28
drwx------. 4 suozhiyuan suozhiyuan  214 1月  17 23:45 ./
drwxr-xr-x. 7 root       root         80 1月  17 21:05 ../
-rw-------. 1 suozhiyuan suozhiyuan  270 1月  17 21:07 .bash_history
-rw-r--r--. 1 suozhiyuan suozhiyuan   18 7月  21 23:59 .bash_logout
-rw-r--r--. 1 suozhiyuan suozhiyuan  141 7月  21 23:59 .bash_profile
-rw-r--r--. 1 suozhiyuan suozhiyuan  376 7月  21 23:59 .bashrc
drwx------. 3 suozhiyuan suozhiyuan   19 1月  12 07:51 .config/
-rw-------. 1 suozhiyuan suozhiyuan   16 1月  12 07:51 .esd_auth
-rw-r--r--. 1 root       root          0 1月  17 23:39 Linux創建.txt
drwxr-xr-x. 4 suozhiyuan suozhiyuan   39 1月  12 07:10 .mozilla/
-rw-------. 1 suozhiyuan suozhiyuan 1497 1月  17 03:02 .viminfo
-rwxr--r--. 1 suozhiyuan suozhiyuan    0 1月  17 23:45 Windows創建.txt*
-rw-------. 1 suozhiyuan suozhiyuan  134 1月  17 21:13 .Xauthority

 

 

2.4 配置一個指定用戶組用密碼登錄的文件夾

進入到root權限操作

創建一個用戶組, 如果你要的組已經有了, 就不用創建了, 這里的 GroupA 是組名

groupadd GroupA

創建兩個用戶, 並且添加到組中, 如果這個用戶你已經有了, 就不用創建了, 這里的 A1 A2是用戶名

useradd -g GroupA A1
useradd -g GroupA A2

配置用戶的密碼, (密碼要求輸入兩遍)   這里的 A1 A2 是用戶名

smbpasswd -a A1
smbpasswd -a A2

以上三步的打印結果:

[root@localhost suozhiyuan]# groupadd GroupA
[root@localhost suozhiyuan]# useradd -g GroupA A1
[root@localhost suozhiyuan]# useradd -g GroupA A2
[root@localhost suozhiyuan]# smbpasswd -a A1
New SMB password:
Retype new SMB password:
Added user A1.
[root@localhost suozhiyuan]# smbpasswd -a A2
New SMB password:
Retype new SMB password:
Added user A2.

 

接下來添加共享需要的文件夾

創建共享文件夾,我這里放到了home文件夾下

mkdir -p /home/GroupA/

修改文件夾權限,由於是私人文件夾,這里給了700

chmod -R 0700 /home/GroupA/

改變文件上下文

chcon -t samba_share_t /home/GroupA/

修改文件所有者和文件關聯屬組

chown -R A1:GroupA /home/GroupA/

 

進入 smb.conf 配置內容

vim /etc/samba/smb.conf
[global]
        workgroup = WORKGROUP
        server string = Samba Server %v
        netbios name = SambaServer
        security = user
        map to guest = bad user
        dns proxy = no

[GroupA]
        comment = this is GroupA
        path = /home/GroupA
        browseable = yes
        valid users = @GroupA
        guest ok = no
        writable = yes

 編輯完成后保存,驗證配置

testparm

出現以下內容

[root@localhost suozhiyuan]# testparm
Load smb config files from /etc/samba/smb.conf
Global parameter guest account found in service section!
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

# Global parameters
[global]
        dns proxy = No
        map to guest = Bad User
        netbios name = SAMBASERVER
        security = USER
        server string = Samba Server %v
        idmap config * : backend = tdb

[GroupA]
        comment = this is GroupA
        path = /home/GroupA
        read only = No
        valid users = @GroupA

到此,說明配置完畢

重啟Samba服務

/sbin/service smb restart

重啟成功打印

[root@localhost suozhiyuan]# /sbin/service smb restart
Redirecting to /bin/systemctl restart smb.service

windows下 win + R 打開運行,輸入服務器IP地址

Windows查看文件夾

 

 

 Linux打印查看文件夾

[root@localhost /]# cd home/GroupA/
[root@localhost GroupA]# mkdir Linux創建
[root@localhost GroupA]# ls -laF
總用量 0
drwx------.  4 A1   GroupA  46 1月  18 01:04 ./
drwxr-xr-x. 10 root root   114 1月  18 00:54 ../
drwxr-xr-x.  2 root root     6 1月  18 01:04 Linux創建/
drwxr-xr-x.  2 A1   GroupA   6 1月  18 01:03 Windows創建/

 

 

如果用多個用戶登錄過,會出現這個提示:不允許一個用戶使用一個以上用戶與服務器或共享資源的多重連接。中斷與此服務器或共享資源的所有連接,然后再試一次。

有三種解決辦法,可點擊前往查看

 提示:不允許一個用戶使用一個以上用戶與服務器或共享資源的多重連接。中斷與此服務器或共享資源的所有連接,然后再試一次。的解決辦法

 

2.5 配置一個高低權限的文件夾

創建2個用戶組 A B,每個組下有兩個用戶:A1,A2 | B1,B2

A組用戶權限高,可以訪問所有組的文件夾

B組用戶權限低,只可以訪問B組下每個用戶自己對應的文件夾

 

大同小異,關鍵在於 valid users 的配置


3. Windows無法打開文件——防火牆的處理

此處建議不關閉防火牆,而允許 Samba 穿越防火牆,以便外部用戶可以訪問 Samba 共享。

firewall-cmd --add-service=samba --zone=public --permanent
firewall-cmd --reload

操作成功提示:

[root@My-Linux-CentOS-8 samba]# firewall-cmd --add-service=samba --zone=public --permanent
success
[root@My-Linux-CentOS-8 samba]# firewall-cmd --reload
success

如果提示防火牆未開啟可通過以下命令開啟

開啟 firewalld 防火牆

systemctl start firewalld.service    # 啟用firewalld服務
 
systemctl enable firewalld.service   # 開機啟用firewalld服務

驗證防火牆開啟狀態

systemctl status firewalld.service  # 查看開啟狀態

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM