萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux Samba 檔案共享服務部署完整教學

SMB/CIFS 協定讓 Linux 與 Windows 互通檔案。本文示範 Ubuntu/Debian 環境下 Samba 獨立伺服器部署、共享目錄配置、使用者認證與防火牆規則。

安裝套件


apt update && apt install -y samba smbclient cifs-utils
# samba: 伺服器端 (smbd, nmbd)
# smbclient: 客戶端測試工具
# cifs-utils: 掛載遠端 SMB 共享

建立共享目錄與權限


mkdir -p /srv/samba/share
chown nobody:nogroup /srv/samba/share
chmod 2770 /srv/samba/share   # SGID: 新檔繼承群組
setfacl -m g:smbusers:rwx /srv/samba/share
setfacl -d -m g:smbusers:rwx /srv/samba/share  # 預設 ACL
groupadd smbusers

配置 /etc/samba/smb.conf


[global]
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)
   netbios name = UBUNTU-SRV
   security = user
   map to guest = Bad User
   obey pam restrictions = yes
   pam password change = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   unix password sync = yes
   syslog = 0
   log file = /var/log/samba/log.%m
   max log size = 1000
   logging = file
   panic action = /usr/share/samba/panic-action %d
   server role = standalone server
   usershare allow guests = yes
   # 效能調優
   socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
   aio read size = 16384
   aio write size = 16384

[share]
   path = /srv/samba/share
   comment = Shared Directory
   browseable = yes
   read only = no
   guest ok = no
   valid users = @smbusers
   force group = smbusers
   create mask = 0660
   directory mask = 2770
   vfs objects = acl_xattr
   map acl inherit = yes

建立 Samba 使用者與密碼


# 系統使用者需先存在
useradd -M -s /usr/sbin/nologin -G smbusers alice
# 設定 Samba 密碼 (獨立於系統密碼)
smbpasswd -a alice
# 啟用帳號
smbpasswd -e alice

# 列出 Samba 使用者
pdbedit -L -v

啟動與驗證


# 語法檢查
testparm

# 啟動服務
systemctl enable --now smbd nmbd

# 本機測試
smbclient -L localhost -U alice
# 輸入密碼後應列出 share

# 掛載測試
mount -t cifs //localhost/share /mnt -o username=alice,vers=3.0

Windows 客戶端存取

  • 檔案總管輸入:\\UBUNTU-SRV\share 或 \\192.168.1.x\share
  • 輸入 Samba 使用者帳密 (非系統帳密)
  • 對應網路磁碟機:右鍵「網路」→ 對應網路磁碟機

防火牆規則


# ufw
ufw allow from 192.168.1.0/24 to any port 139,445 proto tcp
ufw allow from 192.168.1.0/24 to any port 137,138 proto udp

# firewalld
firewall-cmd --permanent --add-service=samba
firewall-cmd --permanent --add-service=samba-client
firewall-cmd --reload

進階功能

  • 回收站:vfs objects = recycle + recycle:repository = .recycle/%U
  • 審計日誌:vfs objects = full_audit + full_audit:prefix = %u|%I|%m|%S
  • Time Machine 備份:fruit:time machine = yes (macOS)
  • DFS 複寫:搭配 CTDB 建立高可用叢集

常見問題排查

錯誤原因解決
NT_STATUS_LOGON_FAILURESamba 密碼未設定/錯誤smbpasswd -a user
NT_STATUS_ACCESS_DENIED檔案系統權限/ACL 不符檢查 chmod/chown/setfacl、valid users
瀏覽不到共享nmbd 未啟動/工作群組不符systemctl start nmbd、workgroup 一致
大檔傳輸中斷SMB 簽名/加密效能client signing = no, server signing = no (非敏感環境)

規範化部署:系統用戶 + smbusers 群組 + ACL + SGID 目錄 + smbpasswd 獨立認證 + 防火牆限制網段,構建安全易管的跨平台檔案共享服務。

copyright © 萬盛學電腦網 all rights reserved