网站搜索

如何在 CentOS 7 上安装 Samba4 以实现 Windows 上的文件共享


在上一篇文章中,我们展示了如何在 Ubuntu 上安装 Samba4 以在 Ubuntu 系统和 Windows 计算机之间进行基本文件共享。我们研究了配置匿名(不安全)以及安全文件共享。

在这里,我们将描述如何在 CentOS 7(也适用于RHEL 7)上安装和配置 Samba4,以实现其他 Linux 系统和 Windows 计算机之间的基本文件共享。

重要:从版本 4.0 开始,Samba 可以作为 Active Directory (AD) 域控制器 (DC) 运行。我们建议您阅读有关设置 Samba4 Active Directory 域控制器的特别系列,其中包括 Ubuntu、CentOS 和 Windows 的关键主题。

在 CentOS 7 中安装 Samba4

1. 首先使用 yum 软件包管理器工具从默认 CentOS 存储库安装 Samba4 和所需的软件包,如图所示。

yum install samba samba-client samba-common

2. 安装 samba 软件包后,使用以下命令允许 samba 服务通过系统防火墙。

firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --reload

检查 Windows 计算机工作组设置

3. 在继续配置 samba 之前,请确保 Windows 计算机位于要在 CentOS 服务器上配置的同一工作组中。

有两种可能的方法来查看 Windows 计算机工作组设置:

  • 右键单击“此电脑”或“我的电脑”→ 属性高级系统设置计算机名称

  • 或者,打开cmd提示符并运行以下命令,然后在输出中查找“工作站域”,如下所示。
>net config workstation

在 CentOS 7 上配置 Samba4

4. 主要的 samba 配置文件是 /etc/samba/smb.conf,原始文件带有预配置设置,解释了各种配置指令以指导您。

但是,在配置 samba 之前,我建议您像这样备份默认文件。

cp /etc/samba/smb.conf /etc/samba/smb.conf.orig

然后,继续为匿名安全文件共享服务配置 samba,如下所述。

Samba4 匿名文件共享

5.首先在服务器上创建用于存储文件的共享目录,并对该目录设置适当的权限。

mkdir -p /srv/samba/anonymous
chmod -R 0775 /srv/samba/anonymous
chown -R nobody:nobody /srv/samba/anonymous

此外,您还需要更改 samba 共享目录的 SELinux 安全上下文,如下所示。

chcon -t samba_share_t /srv/samba/anonymous

6. 接下来,打开 samba 配置文件进行编辑,您可以在其中修改/添加以下部分以及相应的指令。

vi /etc/samba/smb.conf
[global]
	workgroup = WORKGROUP
	netbios name = centos
	security = user
[Anonymous]
	comment = Anonymous File Server Share
	path = /srv/samba/anonymous
	browsable =yes
	writable = yes
	guest ok = yes
	read only = no
	force user = nobody

7. 现在通过运行以下命令验证当前的 samba 设置。

testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Anonymous]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

Global parameters
[global]
	netbios name = centos
	printcap name = cups
	security = USER
	idmap config * : backend = tdb
	cups options = raw
[homes]
	comment = Home Directories
	browseable = No
	inherit acls = Yes
	read only = No
	valid users = %S %D%w%S
[printers]
	comment = All Printers
	path = /var/tmp
	browseable = No
	printable = Yes
	create mask = 0600
[print$]
	comment = Printer Drivers
	path = /var/lib/samba/drivers
	create mask = 0664
	directory mask = 0775
	write list = root
[Anonymous]
 	comment = Anonymous File Server Share
	path = /srv/samba/anonymous
	force user = nobody
	guest ok = Yes
	read only = No

8. 最后,启动并启用 samba 服务以在下次启动时自动启动,并应用上述更改以使之生效。

systemctl enable smb.service
systemctl enable nmb.service
systemctl start smb.service
systemctl start nmb.service

测试匿名 Samba 文件共享

9. 现在,在 Windows 计算机上,从 Windows 资源管理器窗口中打开“网络”,然后单击 CentOS 主机,或者尝试使用 IP 地址访问服务器(使用 ifconfig 命令获取 IP 地址)。

e.g. \2.168.43.168.

10. 接下来,打开匿名目录并尝试在其中添加文件以与其他用户共享。

设置 Samba4 安全文件共享

11. 首先创建一个 samba 系统组,然后向该组添加用户并为每个用户设置密码,如下所示。

groupadd smbgrp
usermod tecmint -aG smbgrp
smbpasswd -a tecmint

12. 然后创建一个保存共享文件的安全目录,并使用 samba 的 SELinux 安全上下文对该目录设置适当的权限。

mkdir -p /srv/samba/secure
chmod -R 0770 /srv/samba/secure
chown -R root:smbgrp /srv/samba/secure
chcon -t samba_share_t /srv/samba/secure

13. 接下来打开配置文件进行编辑,并使用相应的指令修改/添加以下部分。

vi /etc/samba/smb.conf
[Secure]
	comment = Secure File Server Share
	path =  /srv/samba/secure
	valid users = @smbgrp
	guest ok = no
	writable = yes
	browsable = yes

14. 再次通过运行以下命令验证 samba 配置设置。

testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Anonymous]"
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

Global parameters
[global]
	netbios name = centos
	printcap name = cups
	security = USER
	idmap config * : backend = tdb
	cups options = raw
[homes]
	comment = Home Directories
	browseable = No
	inherit acls = Yes
	read only = No
	valid users = %S %D%w%S
[printers]
	comment = All Printers
	path = /var/tmp
	browseable = No
	printable = Yes
	create mask = 0600
[print$]
	comment = Printer Drivers
	path = /var/lib/samba/drivers
	create mask = 0664
	directory mask = 0775
	write list = root
[Anonymous]
 	comment = Anonymous File Server Share
	path = /srv/samba/anonymous
	force user = nobody
	guest ok = Yes
	read only = No
[Secure]
	comment = Secure File Server Share
	path = /srv/samba/secure
	read only = No
	valid users = @smbgrp

15. 重新启动 Samba 服务以应用更改。

systemctl restart smb.service
systemctl restart nmb.service

测试安全 Samba 文件共享

16.转到Windows机器,从Windows资源管理器窗口打开“网络”,然后单击CentOS主机,否则尝试访问服务器使用其 IP 地址。

e.g. \2.168.43.168.

系统会要求您提供用户名和密码来登录 CentOS 服务器。输入凭据后,单击确定

17. 成功登录后,您将看到所有 samba 共享目录。现在,通过将某些文件放入安全目录中,可以与网络上其他允许的用户安全地共享这些文件。

您还可以查看这些有关网络上 Samba 文件共享的有用文章。

  1. 如何在 Linux 中挂载/卸载本地和网络(Samba 和 NFS)文件系统
  2. 使用 ACL(访问控制列表)和挂载 Samba/NFS 共享
  3. 如何修复 Linux 系统中的 SambaCry 漏洞 (CVE-2017-7494)

在本指南中,我们向您展示了如何设置 Samba4 以在 CentOS 和其他 Linux 系统以及 Windows 计算机之间进行匿名且安全的文件共享。通过下面的评论部分与我们分享任何想法。