Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第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 がインストールされていることを前提としています。
  1. getenforce コマンドを実行して、SELinux が Enforcing モードで実行されていることを確認します。
    ~]$ getenforce
    Enforcing
    
    SELinux が Enforcing モードで実行されていると、このコマンドは Enforcing を返します。
  2. 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
    
  3. 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 がドメインコントローラーとして機能できるようにする必要があります。


[15] 詳細は、System Administrator's GuideSamba のセクションを参照してください。