14.4. 設定例
以下の例は、SELinux が Samba サーバーを補完する方法と、Samba サーバーの完全な機能を維持する方法の実例を紹介します。
14.4.1. 作成したディレクトリーの共有 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、新しいディレクトリーを作成し、Samba でそのディレクトリーを共有します。
- samba パッケージ、samba-common パッケージ、および samba-client パッケージがインストールされていることを確認します。
rpm -q samba samba-common samba-client package samba is not installed package samba-common is not installed package samba-client is not installed
~]$ rpm -q samba samba-common samba-client package samba is not installed package samba-common is not installed package samba-client is not installedCopy to Clipboard Copied! Toggle word wrap Toggle overflow これらのパッケージがいずれもインストールされていない場合は、root でyumユーティリティーを使用してパッケージをインストールします。yum install package-name
~]# yum install package-nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow mkdirユーティリティーを root で使用し、Samba でファイルを共有するための新しいトップレベルディレクトリーを作成します。mkdir /myshare
~]# mkdir /myshareCopy to Clipboard Copied! Toggle word wrap Toggle overflow touchユーティリティーの root を使用して、空のファイルを作成します。このファイルは、後で Samba 共有が正しくマウントされたことを確認するために使用されます。touch /myshare/file1
~]# touch /myshare/file1Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/samba/smb.confファイルおよび Linux のパーミッションが設定されていれば、samba_share_tタイプでラベル付けされたファイルの読み取りと書き込みが可能になります。root で以下のコマンドを入力し、ラベルの変更を file-context 設定に追加します。semanage fcontext -a -t samba_share_t "/myshare(/.*)?"
~]# semanage fcontext -a -t samba_share_t "/myshare(/.*)?"Copy to Clipboard Copied! Toggle word wrap Toggle overflow restoreconユーティリティーを root で使用し、ラベルの変更を適用します。restorecon -R -v /myshare restorecon reset /myshare context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0 restorecon reset /myshare/file1 context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
~]# restorecon -R -v /myshare restorecon reset /myshare context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0 restorecon reset /myshare/file1 context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow - root で
/etc/samba/smb.confを編集します。このファイルの下部に以下を追加し、Samba で/myshare/ディレクトリーを共有します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Samba ファイルシステムをマウントするには、Samba アカウントが必要です。root で次のコマンドを入力して、Samba アカウントを作成します。username は、既存の Linux ユーザーです。たとえば、smbpasswd -a testuser は、Linux
testuserユーザーの Samba アカウントを作成します。smbpasswd -a testuser New SMB password: Enter a password Retype new SMB password: Enter the same password again Added user testuser.
~]# smbpasswd -a testuser New SMB password: Enter a password Retype new SMB password: Enter the same password again Added user testuser.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記のコマンドを入力し、システムに存在しないアカウントのユーザー名を指定すると、Cannot locate Unix account for 'username'!エラーが発生します。 - Samba サービスを再起動します。
systemctl start smb.service
~]# systemctl start smb.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 利用可能な共有をリスト表示するには、次のコマンドを入力します。username は、手順 7 で追加した Samba アカウントです。パスワードを求められたら、手順 7 で Samba アカウントに割り当てたパスワードを入力します (バージョン番号は異なる場合があります)。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdirユーティリティーを root で実行して、新しいディレクトリーを作成します。このディレクトリーは、myshareの Samba 共有をマウントするために使用されます。mkdir /test/
~]# mkdir /test/Copy to Clipboard Copied! Toggle word wrap Toggle overflow - root で次のコマンドを入力して、
myshareの Samba 共有を/test/にマウントし、username を、手順 7 のユーザー名に置き換えます。mount //localhost/myshare /test/ -o user=username
~]# mount //localhost/myshare /test/ -o user=usernameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 手順 7 で設定した username のパスワードを入力します。 - 手順 3 で作成した
file1を表示する場合は、以下を実行します。ls /test/ file1
~]$ ls /test/ file1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.4.2. Web サイトの共有 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
/var/www/html/ ディレクトリー内の Web サイトを共有する場合など、samba_share_t タイプでファイルにラベルを付けることはできません。このような場合は、samba_export_all_ro ブール値を使用して (現在のラベルに関係なく) 任意のファイルまたはディレクトリーを共有して読み取り専用権限を許可するかsamba_export_all_rw ブール値を使用して (現在のラベルに関係なく) 任意のファイルまたはディレクトリーを共有して読み取りおよび書き込み権限を許可します。
以下の例では、
/var/www/html/ で Web サイトのファイルを作成し、Samba でそのファイルを共有することで、読み取り権限と書き込み権限を付与します。この例では、httpd パッケージ、samba パッケージ、samba-common パッケージ、samba-client パッケージ、および wget パッケージがインストールされていることを前提としています。
- root で、
/var/www/html/file1.htmlファイルを作成します。以下の内容をこのファイルにコピーして貼り付けます。<html> <h2>File being shared through the Apache HTTP Server and Samba.</h2> </html>
<html> <h2>File being shared through the Apache HTTP Server and Samba.</h2> </html>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 次のコマンドを実行すると、
file1.htmlの SELinux コンテキストが表示されます。ls -Z /var/www/html/file1.html -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file1.html
~]$ ls -Z /var/www/html/file1.html -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file1.htmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルには、httpd_sys_content_tのラベルが付けられています。デフォルトでは、Apache HTTP サーバーはこのタイプにアクセスできますが、Samba はアクセスできません。 - Apache HTTP サーバーを起動します。
systemctl start httpd.service
~]# systemctl start httpd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ユーザーが書き込みアクセス権を持つディレクトリーに移動し、次のコマンドを実行します。デフォルト設定が変更されない限り、このコマンドは成功します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - root で
/etc/samba/smb.confを編集します。このファイルの下部に以下を追加し、Samba で/var/www/html/ディレクトリーを共有します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow /var/www/html/ディレクトリーには、httpd_sys_content_tタイプのラベルが付けられています。デフォルトでは、Samba は Linux の権限があっても、このタイプのラベルが付いたファイルおよびディレクトリーにはアクセスできません。Samba のアクセスを許可するには、samba_export_all_roブール値を有効にします。setsebool -P samba_export_all_ro on
~]# setsebool -P samba_export_all_ro onCopy to Clipboard Copied! Toggle word wrap Toggle overflow システムを再起動しても変更を持続させない場合は、-Pオプションを使用しないでください。samba_export_all_roブール値を有効にすると、Samba は任意のタイプにアクセスできるようになることに注意してください。- Samba サービスを再起動します。
systemctl start smb.service
~]# systemctl start smb.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow