前言
Samba是在Linux系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。 SMB(Server Messages Block, 信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它爲局域網內的不同計算機之間提供文件及打印機等資源的共享服務。SMB協議是客戶機/服務器型協議,客戶機通過該協議可以訪問服務器上的共享文件系統,打印機及其他資源。
安裝Samba
[root@localhost ~]# yum install -y samba samba-client samba-common
備份Samba配置文件
[root@localhost ~]# cp -a /etc/samba/smb.conf /etc/samba/smb.conf.bak
添加用戶
[root@localhost ~]# useradd smb
設置用戶密碼
[root@localhost ~]# passwd smb
設置Samba密碼
[root@localhost ~]# smbpasswd -a smb
New SMB password:
Retype new SMB password:
Added user smb.
smbpasswd 命令是用於維護 Samba 服務器的用戶帳號的,具體如下:
// 添加 Samba 用戶帳號
# smbpasswd -a sambauser
// 禁用 Samba 用戶帳號
# smbpasswd -d sambauser
// 啓用 Samba 用戶帳號
# smbpasswd -e sambauser
// 刪除 Samba 用戶帳號
# smbpasswd -x sambauser
設置Samba目錄權限
[root@localhost ~]# chmod -R 0755 /opt/smb/
設置Samba目錄宿主
[root@localhost ~]# chown -R smb:smb /opt/smb/
配置smb.conf文件
[root@localhost ~]# vi /etc/samba/smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = SAMBA #samba的工作組,設置成 Windows 的工作組
security = user #安全選項,可以是 share|user|server|domain,安全級別遞增
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes] #共享默認會將用戶的主目錄共享,這是不安全的,可以將其註釋
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers] #打印機共享
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = root
create mask = 0664
directory mask = 0775
[rootdir] #自定義的共享文件夾
comment = SambaRoot
path = /home/samba/ #共享的路徑
read only = No
[root@localhost opt]# testparm
啓動Samba服務並添加到自啓動列表
[root@localhost ~]# systemctl start smb
[root@localhost ~]# systemctl enable smb
打開Samba防火牆端口
# Samba需要開放下面五個端口:UDP 137、UDP 138、TCP 139、TCP 445、TCP 901
[root@localhost ~]# firewall-cmd --permanent --add-port=137/udp
[root@localhost ~]# firewall-cmd --permanent --add-port=138/udp
[root@localhost ~]# firewall-cmd --permanent --add-port=139/tcp
[root@localhost ~]# firewall-cmd --permanent --add-port=445/tcp
[root@localhost ~]# firewall-cmd --permanent --add-port=901/tcp
如果 Windows 下訪問 Linux 下共享目錄,提示沒有權限:
確保 Linux 下防火牆關閉或者是開放共享目錄權限;
確保 Samba 服務器配置文件 smb.conf 設置沒有問題;
確保 setlinux 關閉 , 可以用 setenforce 0 命令執行,默認 SELinux 禁止網絡上對 Samba 服務器上的共享目錄進行寫操作。