第 14 章 Samba
Samba 是服务器消息块(SMB)和通用 Internet 文件系统(CIFS)协议的开源实施,跨各种操作系统在客户端之间提供文件和打印服务。[15]
在 Red Hat Enterprise Linux 中,samba 软件包提供 Samba 服务器。输入以下命令查看是否安装了 samba 软件包:
~]$ rpm -q samba
package samba is not installed
如果没有安装它,且您想要使用 Samba,以 root 用户身份使用
yum
工具来安装它:
~]# yum install samba
14.1. Samba 和 SELinux
启用 SELinux 时,Samba 服务器(
smbd
)默认运行限制。受限制的服务在自己的域中运行,与其他受限服务分离。以下示例演示了在其自己的域中运行的 smbd
进程。本例假设安装了 samba 软件包:
- 运行 getenforce 命令,确认 SELinux 是否在 enforcing 模式下运行:
~]$ getenforce Enforcing
当 SELinux 处于 enforcing 模式时,命令会返回Enforcing
。 - 以 root 用户身份输入以下命令以启动
smbd
:~]# systemctl start smb.service
确认 服务正在运行。输出中应包括以下信息(只有时间戳有所不同):~]# systemctl status smb.service smb.service - Samba SMB Daemon Loaded: loaded (/usr/lib/systemd/system/smb.service; disabled) Active: active (running) since Mon 2013-08-05 12:17:26 CEST; 2h 22min ago
- 要查看
smbd
进程,请执行以下命令:~]$ ps -eZ | grep smb system_u:system_r:smbd_t:s0 9653 ? 00:00:00 smbd system_u:system_r:smbd_t:s0 9654? 00:00:00 smbd
与smbd
进程关联的 SELinux 上下文为system_u:system_r:smbd_t:s0
。上下文的第二个最后一个部分smbd_t
是类型。类型定义进程的域以及文件的类型。在这种情况下,smbd
进程在smbd_t
域中运行。
文件必须正确标记,以允许
smbd
访问和共享它们。例如,smbd
可以读取和写入使用 samba_share_t
类型标记的文件,但默认情况下,无法访问使用 httpd_sys_content_t
类型标记的文件,该类型旨在由 Apache HTTP 服务器使用。必须启用布尔值以允许某些行为,例如允许通过 Samba 导出主目录和 NFS 卷,以及允许 Samba 充当域控制器。