Chapter 3. Samba
Samba is an open-source implementation of the Server Message Block (SMB) and Common Internet File System (CIFS) protocols that provides file and print services between clients across various operating systems.
In Red Hat Enterprise Linux, the samba package provides the Samba server. Run the
rpm -q samba command to see if the samba package is installed. If it is not installed and you want to use Samba, run the following command as the root user to install it:
yum install samba
3.1. Samba and SELinux
When SELinux is enabled, the Samba server (
smbd) runs confined by default. Confined services run in their own domains, and are separated from other confined services. The following example demonstrates the
smbd process running in its own domain. This example assumes the samba package is installed:
- Run the
getenforcecommand to confirm SELinux is running in enforcing mode:
Enforcingwhen SELinux is running in enforcing mode.
- Run the
service smbd startcommand as the root user to start
service smb startStarting SMB services: [ OK ]
- Run the
ps -eZ | grep smbcommand to view the
ps -eZ | grep smbunconfined_u:system_r:smbd_t:s0 16420 ? 00:00:00 smbd unconfined_u:system_r:smbd_t:s0 16422 ? 00:00:00 smbdThe SELinux context associated with the
unconfined_u:system_r:smbd_t:s0. The second last part of the context,
smbd_t, is the type. A type defines a domain for processes and a type for files. In this case, the
smbdprocesses are running in the smbd_t domain.
Files must be labeled correctly to allow
smbd to access and share them. For example,
smbd can read and write to files labeled with the
samba_share_t type, but by default, cannot access files labeled with the
httpd_sys_content_t type, which is intended for use by the Apache HTTP Server. Booleans must be enabled to allow certain behavior, such as allowing home directories and NFS volumes to be exported through Samba, as well as to allow Samba to act as a domain controller.