6.4 samba #
6.4.1 简介 #
Samba 是一个开源软件套件,用于在 Linux 和 UNIX 系统上实现文件和打印机共享。它允许 Linux/UNIX 系统与 Windows 操作系统之间进行文件和资源共享,使得 Linux/UNIX 系统可以像 Windows 一样访问和使用网络共享资源。
Samba 提供了 SMB/CIFS(Server Message Block/Common Internet File System)协议的实现,这是 Windows 操作系统中用于文件和打印机共享的标准协议。通过 Samba,Linux/UNIX 系统可以作为 SMB/CIFS 服务器或客户端,与 Windows 系统进行通信。
以下是 Samba 的一些主要特点和用途:
-
文件共享:Samba 允许在 Linux/UNIX 系统上共享文件和目录,并通过 SMB/CIFS 协议使其对 Windows 用户可见。这意味着 Windows 用户可以通过网络访问和操作 Linux/UNIX 系统上的共享文件。
-
打印机共享:Samba 还支持共享打印机,使得 Windows 用户可以通过网络连接和使用 Linux/UNIX 系统上的打印机。
-
用户认证和权限控制:Samba 提供了用户认证和权限控制功能,可以限制对共享资源的访问权限,确保只有经过授权的用户可以访问和修改共享文件。
-
集成到 Windows 域:Samba 可以作为 Windows 域控制器的替代品,提供类似于 Windows Active Directory 的用户管理和身份验证功能。
-
文件和打印机名称解析:Samba 支持 NetBIOS 名称解析,使得 Linux/UNIX 系统上的共享资源可以使用易记的名称进行访问,而不仅仅是 IP 地址。
6.4.2 使用 #
- 安装 Samba:首先,需要在 Linux/UNIX 系统上安装 Samba 软件包。具体安装方法取决于使用的发行版,可以使用包管理器进行安装,如 apt、yum 或 zypper。
yum install samba -y
- 配置 Samba:Samba 的主要配置文件是 smb.conf,它位于 /etc/samba/ 目录下。可以使用文本编辑器打开该文件,并根据的需求进行配置。在配置文件中,可以定义共享目录、访问权限、用户认证方式等。比如新建一个 share 共享目录,可以在 smb.conf 中新增如下配置:
[ share ]
comment=my share
path=/data/share
read only=NO
-
创建共享目录:在配置文件中定义共享目录后,需要确保这些目录在系统上存在并具有适当的权限。可以使用命令行或文件管理器创建和设置共享目录。
-
启动 Samba 服务:配置完成后,需要启动 Samba 服务。在大多数 Linux 发行版中,可以使用以下命令启动 Samba 服务:
sudo systemctl start|stop smb
这将启动 SMB 服务器和 NetBIOS 名称解析服务。
- 访问共享资源:现在可以从 Windows 系统或其他支持 SMB/CIFS 协议的设备上访问 Linux/UNIX 系统上的共享资源。在 Windows 资源管理器中,可以使用 <Samba服务器IP地址> 或 <Samba服务器主机名> 来访问共享文件夹。如果设置了用户认证,需要提供有效的用户名和密码进行登录。
- Linux 客户端
mount -t cifs -o username=user1 //127.0.0.1/user1 /mnt
- Windows 客户端
- 资源管理器访问共享
- 映射网络驱动器
用户设置 #
-
smbpasswd 命令
- -a 添加用户,需要有一个系统的同名用户
- -x 删除用户
-
pdbedit
- -L 查看用户
6.4.3 演示 #
在 smb.conf 中新增 share 共享目录:
[ share ]
comment=my share
path=/data/share
read only=NO
新增系统用户和 samba 同名用户:
在 share 的 path 目录里有个 sam.txt 文件:
启动 samba 服务:
systemctl start smb
尝试用另一台机器连接 samba 服务,如果在 mount cifs 时遇到了类似这样的错误:
mount: //192.168.16.54/user1 写保护,将以只读方式挂载
mount: 无法以只读方式挂载 //192.168.16.54/user1
可以在这台机器上执行以下命令再次尝试:
yum install -y cifs-utils
现在去挂载 samba 服务:
可以看到 192.168.16.54 上的 samba 服务上的 share 已经被成功挂载了,目录也实现了映射。
当使用完成后可以使用 umount 卸载: