環境:Red Hat 6.1 伺服器。目標:提供共享目錄供 Windows 客戶端存取,權限模型——管理員讀寫、普通用戶唯讀。
yum install samba -y
rpm -qa | grep samba
# 預期輸出:samba, samba-common, samba-client, samba-winbind-clients
# 管理員用戶(讀寫權限)
useradd -d /data/share smbadmin
smbpasswd -a smbadmin
# 普通用戶(唯讀權限)
useradd smbguest
smbpasswd -a smbguest
# 建立共享目錄並設定基礎權限
mkdir -p /data/share
chown smbadmin:smbadmin /data/share
chmod 750 /data/share
service smb restart
service nmb restart
chkconfig smb on
chkconfig nmb on
setsebool -P samba_enable_home_dirs on
getsebool -a | grep samba
# 確認 samba_enable_home_dirs --> on
若共享目錄非家目錄,還需設定:setsebool -P samba_export_all_rw on 或為目錄打標籤 chcon -t samba_share_t /data/share。
/etc/samba/smb.conf[global]
workgroup = WORKGROUP
security = user # 採用用戶級安全性,較 share 更安全
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
map to guest = Bad User
log file = /var/log/samba/log.%m
max log size = 50
# 字符集設定
display charset = UTF-8
unix charset = UTF-8
dos charset = CP936
[share]
comment = Department Share
path = /data/share
public = no # 不允許匿名
writable = yes
printable = no
valid users = @smbgroup # 僅允許群組成員
write list = smbadmin # 僅管理員可寫
force group = smbgroup # 強制群組權限
create mask = 0660
directory mask = 0770
groupadd smbgroup
usermod -aG smbgroup smbadmin
usermod -aG smbgroup smbguest
# 重啟 smb 生效
service smb restart
# iptables 範例
iptables -A INPUT -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -p tcp --dport 445 -j ACCEPT
iptables -A INPUT -p udp --dport 137 -j ACCEPT
iptables -A INPUT -p udp --dport 138 -j ACCEPT
service iptables save
\\伺服器IPsmbadmin 登入 → 可讀寫smbguest 登入 → 唯讀write list 設定nmb 服務運行、防火牆、workgroup 一致unix charset = UTF-8、dos charset = CP936