Linux 文件服务器是功能强大的服务器之一,可帮助您与基于 Windows 的 PC 和其他操作系统共享文件和打印机。在我们讨论使用 Samba 作为文件服务器之前,我们先讨论一些基础知识。
Linux/Samba/Windows 关系
要了解 Linux/Samba/Windows 的关系,您需要了解操作系统、用户和网络的关系。
Linux登录系统与Windows登录系统不同。
因此,维护不同平台之间的登录是系统管理员的工作。
有几种解决方案可以做到这一点:
-
Linux 可插拔身份验证模块 (PAMs):有两个用户列表,一个本地列表,一个域控制器(DC)上的列表,用户仅需要在Windows系统上维护密码。
-
Samba 作为 DC:您在Linux系统上维护用户名和密码,用户可以使用Samba登录Windows机器
-
自定义脚本:您可以创建用于维护登录名和密码的脚本;这可以使用跨平台脚本语言(如 Python)来完成。
samba服务器由几个组件和守护进程组成;三个主要守护进程是smbd, nmbd, and winbindd.
- The smbd 守护进程是共享文件和打印机的主要服务。该守护进程使用端口139 or 445监听请求。
- The nmbd 守护进程处理 NetBIOS 名称服务请求。该守护进程使用端口137监听请求。
- The 温宾德从 Windows 获取用户和组信息。
安装桑巴
要安装Linux文件服务器,您需要安装三个软件包。
对于基于 Red Hat 的发行版,您可以像这样安装它们:
$ dnf -y install samba
此软件包安装 SMB 服务器。
$ dnf -y install samba-common-tools
该包包含服务器和客户端所需的文件。
$ dnf -y install samba-client
对于基于 Debian 的发行版,您可以像这样安装它们:
$ apt-get -y install samba
$ apt-get -y install samba-common-tools
$ apt-get -y install samba-client
然后您可以启动 samba 服务并在启动时启用它:
$ systemctl start smb
$ systemctl enable smb
Samba 文件共享
当然,您可以使用基于 Web 或 GUI 实用程序来管理 Linux 文件服务器。然而,了解 GUI 或 Web 工具在背后正在做什么是很有用的。
现在我们将共享一个名为 myfolder 的文件夹:
$ chmod -R 755 myfolder
打开Samba配置文件
/etc/samba/smb.conf
并在末尾添加以下行:
[likegeeks]
path=/home/likegeeks/Desktop/myfolder
public=yes
writable=no
guest ok=yes
第一行是客户端看到的 Samba 服务器名称。
第二行是将共享的文件夹的路径。
第三行表示共享将可供所有用户(例如访客帐户和其他用户)使用。如果设置为 no,则仅允许经过身份验证和许可的用户。
第四行表示您无法创建或修改共享文件夹上存储的文件。
您可以使用 testparm 命令检查 SMB 配置错误:
$ testparm
现在重新启动 SMB 服务:
$ systemctl restart smb
访问 Samba 共享文件
现在我们需要访问我们共享的内容。我们可以使用中小企业客户访问 Windows 共享文件的实用程序。
我们可以这样列出共享文件:
$ smbclient -L localhost -U%
这里的 -U% 选项可以避免询问密码。
如您所见,我们的共享文件夹在列表中。
您只需在 Windows 资源管理器中输入 IP 地址即可从 Windows 访问此共享文件夹。
\\192.168.1.3\
您可以使用 smbclient 工具列出特定目录,如下所示:
$ smbclient -U% //192.168.1.2/My_Folder
连接后,您可以使用 Linux 命令列出文件并在文件之间移动。
您可以使用以下方式传输文件get, put, mget, and mput 命令。
如果您正在使用iptables防火墙,不要忘记允许端口 137,139 和 445。
安装 Samba 共享
大多数 Linux 内核都支持 SMB 文件系统。
要挂载 Samba 共享,首先创建挂载点:
$ mkdir /mnt/smb
然后我们挂载SMB共享文件夹:
$ mount -t cifs -o guest //192.168.1.2/My_Folder /mnt/smb
如果共享文件夹受密码保护,则输入用户名和密码:
$ mount -t cifs username=likegeeks,password=mypassword //192.168.1.2/My_Folder
要卸载 SMB 共享文件夹,请使用如下卸载命令:
$ umount /mnt/smb
在基于 Debian 的发行版上,您可能需要安装 cifsutils 软件包才能使用它:
$ apt-get -y install cifs-utils
创建 Samba 用户
要为现有系统用户创建 samba 条目,请使用 pdbedit 命令:
$ pdbedit -a likegeeks
新用户将在 Samba 默认用户数据库中创建,该数据库为
/var/lib/samba/private/passdb.tdb
file.
创建 Samba 用户后,我们可以将共享仅提供给经过身份验证的用户(例如 likegeeks 用户)。
该用户可以使用 smbclient 访问 Samba 服务器上的资源,如下所示:
$ smbclient -U likegeeks -L //192.168.1.3
您可以使用 smbpasswd 命令更改 SMB 密码,如下所示:
$ smbpasswd likegeeks
使用 Windows 服务器验证用户身份
您可以使用 winbindd 守护程序从本机 Windows 服务器解析用户帐户信息。
首先,安装 winbind 软件包。
$ dnf -y install samba-winbind
然后像这样启动服务:
$ systemctl start winbind
之后,在此文件中添加以下选项:
/etc/samba/smb.conf
workgroup = windows-domain
password server = 192.1638.1.5
realm = windows-domain.com
kerberos method = secrets and keytab
winbind use default domain = yes
winbind enum users = yes
winbind enum groups = yes
winbind refresh tickets = yes
winbind normalize names = yes
winbind nss info = rfc2307
domain master = no
local master = no
然后编辑 /etc/nsswitch.conf 文件并修改以下行:
passwd: files winbind
shadow: files winbind
group: files winbind
然后编辑 /etc/resolv.conf 文件并更改主 DNS 服务器:
Search windows-domain.com
nameserver 192.168.1.5
现在使用 net 命令从 Windows 域加入 Linux Samba 服务器:
$ net join -w WINDOWS-DOMAIN -s ' win-server' -U Administrator%password
您可以使用 wbinfo 命令列出 Windows 域中的用户
$ wbinfo -u
对于任何问题诊断,您可以检查下面的 samba 日志文件
/var/log/samba/
目录,修改 samba 配置文件后还可以使用 testparm 实用程序检查您的配置。