第14章 Samba
Samba は、SMB (Server Message Block) プロトコルおよび CIFS (Common Internet File System) プロトコルのオープンソース実装で、さまざまなオペレーティングシステムでクライアント間でファイルサービスおよび印刷サービスを提供します。[15]
Red Hat Enterprise Linux では、samba パッケージにより Samba サーバーが提供されます。以下のコマンドを実行して、samba パッケージがインストールされているかどうかを確認します。
~]$ rpm -q samba
package samba is not installed
インストールされておらず、Samba を使用する場合は、
yum
ユーティリティーを root ユーザーでインストールします。
~]# 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
です。コンテキストの 2 番目の部分smbd_t
はタイプです。タイプは、プロセスのドメインとファイルのタイプを定義します。この例では、smbd
プロセスがsmbd_t
ドメインで実行しています。
smbd
がファイルにアクセスし、共有できるように、ファイルに正しくラベルを付ける必要があります。たとえば、smbd
は、samba_share_t
タイプのラベルが付いたファイルの読み取りと書き込みが可能ですが、デフォルトでは、httpd_sys_content_t
タイプのラベルが付いたファイルにはアクセスできません。これは、Apache HTTP サーバーが使用することを目的としています。ブール値を有効にして、ホームディレクトリーや NFS ボリュームを Samba 経由でエクスポートできるようにしたり、Samba がドメインコントローラーとして機能できるようにする必要があります。