Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Samba 服務器搭建全攻略:Linux-Windows 文件共享、匿名/用戶認證、客戶端掛載

編輯:Linux 教學

Samba 實現 Linux 與 Windows 互訪文件共享。本文基於 RHEL 5.1 / Samba 3.0 實戰,覆蓋安裝、核心配置 smb.conf、匿名與認證共享、Linux/Windows 客戶端訪問、掛載技巧。

一、 核心概念

  • SMB/CIFS:Server Message Block / Common Internet File System,微軟網絡文件共享協議。
  • NetBIOS:命名解析服務,將主機名映射 IP,由 nmbd 提供。
  • 兩大進程:smbd (文件/打印共享,端口 139/445)、nmbd (名稱解析,端口 137/138 UDP)。

二、 安裝與服務管理


# 檢查安裝
rpm -q samba

# 安裝 (光盤/yum)
yum install samba samba-client samba-common -y

# 服務控制
/etc/init.d/smb start|stop|restart|status
# 或 systemctl (CentOS 7+)
systemctl enable --now smb nmb

# 端口驗證
netstat -tulpn | grep -E '139|445|137|138'

三、 核心配置文件 /etc/samba/smb.conf

1. 全局段 [global]


[global]
    workgroup = IXDBA.NET           # 工作組/域名
    netbios name = ixdba            # 網絡鄰居顯示名稱
    server string = My Linux Samba  # 註釋
    log file = /var/log/samba/%m.log # 按客戶端分日志
    security = share                # 認證模式: share(匿名) / user(用戶級) / domain / ads
    # security = user               # 生產推薦
    passdb backend = tdbsam         # 用戶數據庫後端
    load printers = no              # 禁用打印共享
    printing = bsd

2. 共享段定義


# 匿名只讀共享
[public]
    path = /samba/public
    browseable = yes
    read only = yes
    guest ok = yes

# 匿名讀寫共享 (需目錄權限 777 或 nobody)
[upload]
    path = /samba/upload
    browseable = yes
    writable = yes
    guest ok = yes
    create mask = 0664
    directory mask = 0775

# 用戶認證共享 (security = user 時)
[private]
    path = /samba/private
    browseable = yes
    writable = yes
    valid users = alice, bob
    write list = alice
    create mask = 0660
    directory mask = 0770

四、 目錄準備與權限


mkdir -p /samba/public /samba/upload /samba/private
# 匿名目錄授權 nobody
chown -R nobody:nobody /samba/public /samba/upload
chmod 777 /samba/upload
# 認證目錄授權具體用戶
useradd -s /sbin/nologin alice
useradd -s /sbin/nologin bob
chown -R alice:alice /samba/private
chmod 770 /samba/private
# 設置 Samba 密碼 (與系統用戶分離)
smbpasswd -a alice
smbpasswd -a bob

五、 客戶端訪問

1. Windows 客戶端

  • 運行/資源管理器地址欄:\\192.168.60.231 或 \\ixdba (NetBIOS 名)。
  • 映射網絡驅動器:右鍵「此電腦」→ 映射網絡驅動器 → 輸入路徑、勾選「使用其他憑證」。

2. Linux 客戶端 (smbclient)


# 查看共享列表
smbclient -L //192.168.60.231 -U alice

# 交互式訪問 (類 FTP)
smbclient //192.168.60.231/private -U alice
smb: \> ls
smb: \> get file.txt
smb: \> put local.txt
smb: \> quit

# 命令行直接下載
smbclient //192.168.60.231/private -U alice -c "get file.txt"

3. Linux 掛載 CIFS (現代方式)


# 匿名掛載
mount -t cifs //192.168.60.231/public /mnt/samba -o guest

# 用戶掛載
mount -t cifs //192.168.60.231/private /mnt/samba -o username=alice,password=****,uid=1000,gid=1000

# 掛載選項詳解
# uid/gid: 指定本地用戶擁有權
# file_mode/dir_mode: 權限掩碼
# vers=3.0: 指定 SMB 協議版本 (1.0/2.0/3.0/3.1.1)
# sec=ntlmssp: 安全協商
# 寫入 /etc/fstab
//192.168.60.231/private /mnt/samba cifs credentials=/root/.smbcred,uid=1000,gid=1000,vers=3.0 0 0
# /root/.smbcred 內容:
# username=alice
# password=****

4. 歷史 smbfs (RHEL 5 及之前)


mount -t smbfs //192.168.60.231/public /mnt/samba -o username=alice
# RHEL 5+ 棄用 smbfs,統一使用 cifs

六、 常見問題排查

現象原因解決
Windows 看不到共享nmbd 未啟動 / 防火牆阻攔 UDP 137/138啟動 nmb、放行端口
權限被拒Linux 文件權限與 Samba 權限不匹配檢查 chown/chmod、create mask、valid users
中文亂碼字符集不一致smb.conf 加 unix charset = UTF-8 dos charset = CP936
連接數耗盡max connections 限制調大或優化客戶端連接復用

七、 安全加固建議

  1. 生產環境**強制 security = user**,禁用 share 模式。
  2. 限制監聽接口:interfaces = lo eth0 bind interfaces only = yes。
  3. 啟用 SMB 簽名/加密:server signing = mandatory smb encrypt = required (需 SMB 3.0+)。
  4. 定期審計 /var/log/samba/ 日志。
  5. 禁用 SMBv1:min protocol = SMB2。
Copyright © Windows教程網 All Rights Reserved