安装samba

要安装 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 用户

要为现有系统用户创建 samba 条目,请使用 pdbedit 命令:

$ pdbedit -a onitroad

新用户将在 Samba 默认用户数据库中创建,该数据库是

/var/lib/samba/private/passdb.tdb

文件。

创建 Samba 用户后,我们可以将共享仅提供给经过身份验证的用户,例如用户 onitroad。

该用户可以使用 smbclient 访问他在 Samba 服务器上的资源,如下所示:

$ smbclient -U onitroad -L //192.168.1.3

我们可以使用 smbpasswd 命令更改 SMB 密码,如下所示:

$ smbpasswd onitroad

挂载 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=onitroad,password=mypassword //192.168.1.2/My_Folder

要卸载 SMB 共享文件夹,请使用如下卸载命令:

$ umount /mnt/smb

在基于 Debian 的发行版上,我们可能需要安装 cifsutils 包才能使用它:

$ apt-get -y install cifs-utils
使用 Samba 的 Linux 文件服务器

Linux 文件服务器是功能强大的服务器之一,可与基于 Windows 的 PC 和其他操作系统共享文件和打印机。
在我们讨论使用 Samba 作为文件服务器之前,让我们先讨论一些基础知识。

访问 Samba 共享文件

现在我们需要访问我们共享的内容。
我们可以使用 smbclient 实用程序来访问 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 和 mput 命令传输文件。

如果我们使用的是 iptables 防火墙,请不要忘记允许端口 137,139 和 445.

Linux/Samba/Windows 关系

要了解Linux/Samba/Windows 的关系,我们需要了解操作系统、用户和网络的关系。

Linux登录系统不同于Windows登录系统。

因此,维护不同平台之间的登录是系统管理员的工作。

有几种解决方案可以做到这一点:

  • Linux可插拔认证模块(PAMs):有两个用户列表,一个本地列表,一个在域控制器(DC)上,用户只需要在Windows系统上维护自己的密码。
  • Samba 作为 DC:你在 Linux 系统上维护用户名和密码,用户可以使用 Samba 登录 Windows 机器
  • 自定义脚本:我们可以创建用于维护登录名和密码的脚本;这可以使用像 Python 这样的跨平台脚本语言来完成。

由几个组件和守护进程组成的 samba 服务器;三个主要的守护进程是 smbd 、 nmbd 和 winbindd 。

  • smbd 守护进程是共享文件和打印机的主要服务。该守护进程使用端口 139 或者 445 来侦听请求。
  • nmbd 守护进程处理 NetBIOS 名称服务请求。这个守护进程使用端口 137 来监听请求。
  • winbindd 从 Windows 获取用户和组信息。

使用 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 实用程序检查配置。

samba文件共享

当然,我们可以使用基于 Web 的或者 GUI 实用程序来管理 Linux 文件服务器。
但是,从背后了解 GUI 或者 Web 工具正在做什么是很有用的。

现在我们将共享一个名为 myfolder 的文件夹:

$ chmod -R 755 myfolder

打开 Samba 配置文件

/etc/samba/smb.conf

并在最后添加以下几行:

[onitroad]
path=/home/onitroad/Desktop/myfolder
public=yes
writable=no
guest ok=yes

第一行是客户端看到的 Samba 服务器名称。

第二行是要共享的文件夹的路径。

第三行表示所有用户(如访客帐户和其他用户)都可以使用共享。
如果设置为 no,这将只允许经过身份验证和允许的用户。

第四行表示我们不能在共享文件夹中创建或者修改存储的文件。

我们可以使用 testparm 命令检查 SMB 配置错误:

$ testparm

现在重启 SMB 服务:

$ systemctl restart smb
日期:2020-07-15 11:16:43 来源:oir作者:oir