💾 Samba
Linux 與 Windows 網路檔案共享
Samba 實作 SMB/CIFS 協定,讓 Linux 伺服器能提供 Windows 可讀寫的網路共享資料夾,也可作 Active Directory 域成員,適合混合作業系統環境。
安裝
$ sudo apt update && sudo apt install -y samba samba-common-bin
sudo systemctl enable --now smbd nmbd$ # 備份預設設定
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak設定共享(/etc/samba/smb.conf)
[global]
workgroup = WORKGROUP
server string = Linux File Server
security = user
map to guest = bad user # 未知使用者當作訪客
smb encrypt = required # 強制加密(Windows 10+ 支援)
# 效能調整
socket options = TCP_NODELAY SO_RCVBUF=131072 SO_SNDBUF=131072
# ─── 公開共享(不需密碼) ───────────────
[public]
comment = 公開資料夾
path = /srv/samba/public
browseable = yes
read only = yes
guest ok = yes
# ─── 需要密碼的私有共享 ─────────────────
[files]
comment = 私有共享
path = /srv/samba/files
browseable = yes
read only = no
valid users = alice bob # 只允許這些 Samba 使用者存取
create mask = 0664
directory mask = 0775$ # 建立共享目錄
sudo mkdir -p /srv/samba/{public,files}
sudo chmod 0775 /srv/samba/public /srv/samba/files
sudo chown -R nobody:nogroup /srv/samba/public
# 測試設定語法
testparm
sudo systemctl restart smbd nmbd使用者管理
$ # Samba 使用者需先存在於系統使用者中
sudo useradd -M -s /usr/sbin/nologin alice
# 新增 Samba 密碼(獨立於系統密碼)
sudo smbpasswd -a alice
# 啟用/停用 Samba 使用者
sudo smbpasswd -e alice # 啟用
sudo smbpasswd -d alice # 停用
# 列出所有 Samba 使用者
sudo pdbedit -L從 Windows 連線
在 Windows 檔案總管網址列輸入:
\\192.168.1.100\files
# 或使用主機名稱
\\linux-server\files也可以設定為網路磁碟機(右鍵「本電腦」→「連線網路磁碟機」)。
$ # Linux 客戶端掛載 Samba 共享
sudo apt install -y cifs-utils
sudo mount -t cifs //server-ip/files /mnt/samba \
-o username=alice,password=密碼,uid=$(id -u),gid=$(id -g)常用操作
| 操作 | 指令 |
|---|---|
| 測試設定語法 | testparm |
| 查看連線中的使用者 | sudo smbstatus |
| 列出共享清單 | smbclient -L //localhost -U alice |
| 查看日誌 | sudo tail -f /var/log/samba/log.smbd |
| 防火牆開放 | sudo ufw allow samba |