实验 8:Samba¶
目标¶
完成本实验后,您将能够
- 安装和配置 Samba
- 使用 Samba 在 Linux 系统之间共享文件和目录
- 使用常见的 Samba 工具
预计完成本实验所需时间:40 分钟
介绍¶
Samba 允许在 Unix/Linux 和 Windows 系统之间共享文件和打印服务。
Samba 是一个开源的“通用互联网文件系统”(CIFS)实现。CIFS 也被称为服务器消息块 (SMB)、LAN 管理器或 NetBIOS 协议。Samba 服务器包含两个主要守护进程 - smbd 和 nmbd。
smbd:此守护进程为 SMB 客户端(如运行各种 Microsoft 操作系统的机器)提供文件和打印服务。
nmbd:此守护进程提供 NETBIOS 名称服务和浏览支持。
本实验中的练习重点介绍如何在 Rocky Linux 服务器上将 Samba 设置为服务器和客户端。
练习 1¶
安装 Samba 并配置基本共享目录¶
安装 Samba 服务器应用程序¶
- 使用 dnf 工具在您的服务器上安装 Samba 服务器和客户端软件包。键入
sudo dnf install -y samba
配置 Samba¶
在 /tmp 文件夹下创建一个名为 samba-share 的目录以供共享。键入
mkdir /tmp/samba-share
让我们创建一个基本的 Samba 配置来共享 /tmp/samba-share 文件夹。通过在 Samba 配置文件中创建一个新的共享定义来实现这一点
sudo tee -a /etc/samba/smb.conf << 'EOF' [Shared] path = /tmp/samba-share browsable = yes writable = yes EOF
启动并启用 Samba 服务¶
启动并启用 Samba 服务
sudo systemctl start smb nmb sudo systemctl enable smb nmb
验证 Samba 服务使用的守护进程是否正在运行
sudo systemctl status smb nmb
练习 2¶
Samba 用户¶
管理 Samba 服务器的一个重要且常见的管理任务是为需要访问共享资源的用户创建用户和密码。
本练习演示如何创建 Samba 用户并为用户设置访问凭据。
创建 Samba 用户和 Samba 密码¶
首先,创建一个名为 sambarockstar 的常规系统用户。键入
sudo useradd sambarockstar
验证用户是否已正确创建。键入
id sambarockstar
将新的 sambarockstar 系统用户添加到 Samba 用户数据库中,并同时为 Samba 用户设置密码
出现提示时,输入选择的密码,并在每次输入后按 ENTER。sudo smbpasswd -a sambarockstar
重新启动 Samba 服务
sudo systemctl restart smb nmb
练习 3¶
访问 Samba 共享(本地测试)¶
在本练习中,我们将尝试从同一系统访问新的 Samba 共享。这意味着我们将使用同一主机作为服务器和客户端。
安装 Samba 客户端工具¶
通过运行以下命令安装客户端实用程序
sudo dnf -y install cifs-utils
创建 Samba 挂载点¶
创建挂载点
mkdir ~/samba-client
在本地挂载 SMB 文件系统¶
在本地挂载 Samba 共享
sudo mount -t cifs //localhost/Shared ~/samba-client -o user=sambarockstar
使用
mount
命令列出所有已挂载的 CIFS 类型文件系统。键入输出mount -t cifs
//localhost/Shared on ~/samba-client type cifs (rw,relatime,vers=3.1.1,cache=strict,username=sambarockstar.... ...<SNIP>...
同样,使用
df
命令验证已挂载的共享是否可用。键入df -t cifs
输出
Filesystem 1K-blocks Used Available Use% Mounted on //localhost/Shared 73364480 17524224 55840256 24% ~/samba-client
接下来,列出已挂载共享的内容。键入
ls ~/samba-client
在共享中创建一个测试文件
touch ~/samba-client/testfile.txt
练习 4¶
修改共享权限¶
调整共享权限¶
使“Shared” samba 共享定义为只读。这可以通过将 smb.con 配置文件中的 writable 参数的值从 yes 更改为 no 来完成。让我们使用
sed
单行器来完成此操作,方法是运行sudo sed -i'' -E \ '/\[Shared\]/,+3 s/writable =.*$/writable = no/' /etc/samba/smb.conf
重新启动 Samba 服务
sudo systemctl restart smb nmb
现在,通过尝试在已挂载的共享上创建文件来测试写入共享
touch ~/samba-client/testfile2.txt
练习 5¶
使用 Samba 为特定用户组¶
本练习将引导您通过用户的本地组成员身份限制对 Samba 共享的访问。这提供了一种方便的机制,可以让共享资源仅对特定用户组可用。
要为 Samba 用户创建一个新组¶
- 使用 groupadd 实用程序创建一个名为 rockstars 的新系统组。在本例中,我们将使用此组来容纳可以访问给定资源的系统用户。输入
sudo groupadd rockstars
- 将现有系统/Samba 用户添加到该组。输入
sudo usermod -aG rockstars sambarockstar
要在 Samba 配置中配置有效用户¶
- 使用 sed 实用程序将新的有效用户参数添加到 Samba 配置文件中的共享定义中。输入
sudo sed -i '/\[Shared\]/a valid users = @sambagroup' /etc/samba/smb.conf
- 重新启动 Samba 服务
sudo systemctl restart smb nmb
- 现在使用 sambarockstar 测试对共享的访问,并验证访问权限。
练习 6¶
本练习模拟了一个现实场景,您将担任客户端系统的管理员,然后测试访问远程系统(服务器 HQ)上的 Samba 服务,您对此没有管理访问权限或特权。作为一名学生,您将在您的机器(服务器 XY)上设置一个 Samba 客户端来访问在另一台机器(服务器 HQ)上托管的 Samba 服务。这反映了标准的工作场所设置。
假设
- 您没有服务器 HQ 的 root 权限。
- 服务器 HQ 上的 Samba 共享已经设置好,可以访问。
要在服务器 XY 上设置 Samba 客户端¶
将您的机器(服务器 XY)配置为 Samba 客户端,以访问单独主机(服务器 HQ)上的共享目录。
确保您的本地系统上安装了必要的 Samba 客户端实用程序。如有必要,通过运行以下命令安装它们
sudo dnf install samba-client cifs-utils -y
在服务器 XY 上创建一个挂载点
mkdir ~/serverHQ-share
要从服务器 HQ 挂载 Samba 共享¶
您将需要服务器 HQ 的 IP 地址或主机名、共享名称以及您的 Samba 凭据。
将 serverHQ、sharedFolder 和 yourUsername 替换为实际值。
```bash
sudo mount -t cifs //serverHQ/sharedFolder ~/serverHQ-share -o user=yourUsername
```
要验证并访问挂载的共享¶
检查服务器 HQ 上的共享目录是否已成功挂载到您的机器上
ls ~/serverHQ-share
尝试访问和修改挂载的共享中的文件。例如,要创建一个新文件
touch ~/serverHQ-share/newfile.txt
要卸载远程共享¶
完成后,卸载共享
```bash
sudo umount ~/serverHQ-share
```
作者:Wale Soyinka
贡献者:Ganna Zhyrnova