Samba是一个免费/开放源代码和常用的软件,用于在同一网络上的Unix系统(包括Linux和Windows主机)之间共享文件和打印服务。
在本指南中,我们将介绍如何在Ubuntu系统和Windows机器之间设置Samba4进行基本文件共享。 我们将介绍两种可能的情况: 匿名(不安全)以及安全文件共享 。
请注意,从4.0版开始,Samba可以用作Active Directory(AD)域控制器(DC) 。 我们组织了一个特别的系列来设置Samba4 Active Directory域控制器,其中包括Ubuntu,CentOS和Windows下的关键主题。
在Ubuntu中安装和配置Samba
Samba服务器可以从默认的Ubuntu存储库中使用apt包管理器工具进行安装 ,如图所示。
$ sudo apt install samba samba-common python-dnspython
一旦samba服务器安装,现在它的时间配置samba服务器为: 不安全的匿名和安全的文件共享 。
为此,我们需要编辑主Samba配置文件/etc/samba/smb.conf (其中说明各种配置指令)。
首先备份原始samba配置文件,如下所示。
$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.orig
之后,我们将继续为samba配置匿名和安全的文件共享服务,如下所述。
重要提示 :在进一步移动之前,请确保Windows机器与Ubuntu服务器上配置的工作组相同。
检查Windows Machine WorkGroup设置
登录您的Windows机器,右键单击“ 本PC ”或“ 我的电脑 ” → 属性 → 高级系统设置 → 计算机名称以验证工作组。
检查Windows WorkGroup
或者,打开命令提示符并通过运行下面的命令查看它,并查找“ 工作站域 ”。
>net config workstation
验证Windows WorkGroup
一旦你知道你的Windows工作组的时间来推进并配置samba服务器进行文件共享。
匿名Samba文件共享
首先通过创建一个共享的samba目录来存储文件。
$ sudo mkdir -p /srv/samba/anonymous_shares
然后在目录上设置适当的权限。
$ sudo chmod -R 0775 /srv/samba/anonymous_shares $ sudo chown -R nobody:nogroup /srv/samba/anonymous_shares
现在打开配置文件。
$ sudo vi /etc/samba/smb.conf OR $ sudo nano /etc/samba/smb.conf
接下来编辑或修改指令设置,如下所述。
global] workgroup = WORKGROUP netbios name = ubuntu security = user [Anonymous] comment = Anonymous File Server Share path = /srv/samba/anonymous_shares browsable =yes writable = yes guest ok = yes read only = no force user = nobody
现在通过运行下面的命令验证当前samba设置。
$ testparm
Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) WARNING: The "syslog" option is deprecated Processing section "[printers]" Processing section "[print$]" Processing section "[Shares]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] netbios name = UBUNTU server string = %h server (Samba, Ubuntu) server role = standalone server map to guest = Bad User obey pam restrictions = Yes pam password change = Yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . unix password sync = Yes syslog = 0 log file = /var/log/samba/log.%m max log size = 1000 dns proxy = No usershare allow guests = Yes panic action = /usr/share/samba/panic-action %d idmap config * : backend = tdb [printers] comment = All Printers path = /var/spool/samba create mask = 0700 printable = Yes [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = No [Anonymous] comment = Anonymous File Server Share path = /srv/samba/anonymous_shares force user = nobody read only = No guest ok = Yes
然后重新启动Samba服务以实现上述更改。
$ sudo systemctl restart smbd [Systemd] $ sudo service smbd restart [Sys V]
测试匿名Samba文件共享
转到Windows机器,并从Windows资源管理器窗口打开“ 网络 ”。 点击Ubuntu主机( youcl为我们的案例),或者尝试使用其IP地址访问samba服务器。
\\192.168.43.168
注意 :使用ifconfig命令获取Ubuntu服务器的IP地址。
连接到Samba Share
然后打开匿名目录,并尝试在其中添加文件以与其他用户共享。
将文件添加到Samba Share
安全Samba文件共享
要对samba共享进行密码保护,您需要创建一个组“smbgrp”并为每个用户设置一个密码。 在这个例子中,我使用aaronkilik作为“ youcl ”的用户和密码。
$ sudo addgroup smbgrp $ sudo usermod aaronkilik -aG smbgrp $ sudo smbpasswd -a aaronkilik
注意 :samba安全模式: security = user要求客户端输入用户名和密码以连接到共享。
Samba用户帐户与系统帐户分开,但是您也可以选择安装libpam-winbind软件包,该软件包用于将系统用户和密码与samba用户数据库进行同步。
$ sudo apt install libpam-winbind
然后创建保存共享文件的安全目录。
$ sudo mkdir -p /srv/samba/secure_shares
接下来,在目录上设置适当的权限。
$ sudo chmod -R 0770 /srv/samba/secure_shares $ sudo chown -R root:smbgrp /srv/samba/secure_shares
现在打开配置文件。
$ sudo vi /etc/samba/smb.conf OR $ sudo nano /etc/samba/smb.conf
接下来编辑或修改指令设置,如下所述。
[Secure] comment = Secure File Server Share path = /srv/samba/secure_shares valid users = @smbgrp guest ok = no writable = yes browsable = yes
就像以前一样,运行此命令查看您当前的samba设置。
$ testparm
Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) WARNING: The "syslog" option is deprecated Processing section "[printers]" Processing section "[print$]" Processing section "[Shares]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions # Global parameters [global] netbios name = UBUNTU server string = %h server (Samba, Ubuntu) server role = standalone server map to guest = Bad User obey pam restrictions = Yes pam password change = Yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . unix password sync = Yes syslog = 0 log file = /var/log/samba/log.%m max log size = 1000 dns proxy = No usershare allow guests = Yes panic action = /usr/share/samba/panic-action %d idmap config * : backend = tdb [printers] comment = All Printers path = /var/spool/samba create mask = 0700 printable = Yes [print$] comment = Printer Drivers path = /var/lib/samba/printers browseable = No [Anonymous] comment = Anonymous File Server Share path = /srv/samba/anonymous_shares force user = nobody read only = No guest ok = Yes [Secure] comment = Secure File Server Share path = /srv/samba/secure_shares valid users = @smbgrp read only = No
完成上述配置后,重新启动Samba服务以应用更改。
$ sudo systemctl restart smbd [Systemd] $ sudo service smbd restart [Sys V]
测试安全的Samba文件共享
如前所述,在Windows机器中,并从Windows资源管理器窗口打开“ 网络 ”。 点击Ubuntu主机( youcl为我们的案例)。 您可能会收到以下错误,如果不进行下一步。
连接到安全Samba共享
尝试使用其IP地址访问服务器,例如\\192.168.43.168
这样。 然后输入用户aaronkilik的凭据(用户名和密码),然后单击确定 。
Samba共享用户登录
您现在将查看所有共享目录,单击安全打开它。
Samba安全共享
您可以将网络上的其他许可用户安全地与这个目录一起分享一些文件。
在Samba Share上添加文件
在Ubuntu的UFW防火墙中启用Samba
如果您的系统启用/启用了UFW防火墙,则必须添加规则以允许Samba通过防火墙。
为了测试这个,我们使用了192.168.43.0网络方案。 运行以下命令,指定您的网络地址。
$ sudo ufw allow proto udp to any port 137 from 192.168.43.0/24 $ sudo ufw allow proto udp to any port 138 from 192.168.43.0/24 $ sudo ufw allow proto tcp to any port 139 from 192.168.43.0/24 $ sudo ufw allow proto tcp to any port 445 from 192.168.43.0/24
您还可以在网络上查看有关Samba文件共享的有用文章。
- 设置Samba4 Active Directory域控制器 - 第1部分至第14部分
- 如何在Linux中挂载/卸载本地和网络(Samba和NFS)文件系统
- 使用ACL(访问控制列表)和安装Samba / NFS共享
- 如何在Linux系统中修复SambaCry漏洞(CVE-2017-7494)
就这样! 在本指南中,我们向您展示了如何设置Samba4以在Ubuntu和Windows机器之间进行匿名和安全的文件共享。 使用下面的反馈表单与我们分享任何想法。