第4章 Samba
Samba の web サイトより抜粋:
原文: "Samba is an Open Source/Free Software suite that has, since 1992, provided file and print services to all manner of SMB/CIFS clients, including the numerous versions of Microsoft Windows operating systems. Samba is freely available under the GNU General Public License.". (訳文: Samba とは、 1992 年に設立され、 Microsoft Windows オペレーティングシステムの各種バージョンをはじめ、 あらゆる SMB/CIFS クライアントにファイルやプリンタなどのサービスを提供している Open Source/Free Software スィートです。 Samba は GNU General Public License に基づき自由に入手が可能です。)[6]
Red Hat Enterprise Linux では、 Samba サーバーは samba パッケージにより提供されます。
rpm -q samba
を実行して samba パッケージがインストールされているか確認します。Samba を使用する予定にも関わらず、このパッケージがインストールされていない場合は、root ユーザーになり次のコマンドを実行してパッケージのインストールを行ないます。
yum install samba
4.1. Samba と SELinux
SELinux を有効にすると、 Samba サーバー (
smbd
) はデフォルトで制限のあるサービスとして実行されます。 制限のあるサービスはそのサービス自体のドメイン内で実行され、 他の制限のあるサービスとは分離されます。 次の例では、 サービス自体のドメイン内で実行している smbd
プロセスを示しています。 samba パッケージがインストールされていることを前提としています。
getenforce
を実行して、 SELinux が enforcing モードで実行していることを確認します。$ getenforce Enforcing
SELinux が enforcing モードで実行されている場合は、getenforce
コマンドによりEnforcing
が返されます。- root ユーザーで
service smbd start
を実行してsmbd
を起動します。service smb start Starting SMB services: [ OK ]
ps -eZ | grep smb
実行してsmbd
プロセスを表示させます。$ ps -eZ | grep smb unconfined_u:system_r:smbd_t:s0 16420 ? 00:00:00 smbd unconfined_u:system_r:smbd_t:s0 16422 ? 00:00:00 smbd
smbd
プロセスに関連する SELinux コンテキストはunconfined_u:system_r:smbd_t:s0
です。 このコンテキストの最後から 2 番目の部分、smbd_t
がタイプになります。 プロセスのドメインやファイルのタイプを定義するのがタイプです。 この例の場合、smbd
プロセスは smbd_t ドメイン内で実行しています。
smbd
によるファイルのアクセスおよび共有を許可するため、適切なラベルを付ける必要があります。たとえば、smbd
では samba_share_t
タイプのラベルが付いたファイルの読み込みと書き込みを行なうことができますが、デフォルトでは httpd_sys_content_t
タイプのラベルが付いたファイルにはアクセスできません。このタイプは Apache HTTP Server での使用を目的としているためです。Samba によるホームディレクトリや NFS ファイルシステムのエクスポートを許可する、また Samba にドメインコントローラとしての動作を許可するなど、特定の動作を許可する場合は Boolean をオンにする必要があります。