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>
- 次のコマンドを実行すると、
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
ファイルには、httpd_sys_content_t
のラベルが付けられています。デフォルトでは、Apache HTTP サーバーはこのタイプにアクセスできますが、Samba はアクセスできません。 - Apache HTTP サーバーを起動します。
~]# systemctl start httpd.service
- ユーザーが書き込みアクセス権を持つディレクトリーに移動し、次のコマンドを実行します。デフォルト設定が変更されない限り、このコマンドは成功します。
~]$ wget http://localhost/file1.html Resolving localhost... 127.0.0.1 Connecting to localhost|127.0.0.1|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 84 [text/html] Saving to: `file1.html.1' 100%[=======================>] 84 --.-K/s in 0s `file1.html.1' saved [84/84]
- root で
/etc/samba/smb.conf
を編集します。このファイルの下部に以下を追加し、Samba で/var/www/html/
ディレクトリーを共有します。[website] comment = Sharing a website path = /var/www/html/ public = no writable = no
/var/www/html/
ディレクトリーには、httpd_sys_content_t
タイプのラベルが付けられています。デフォルトでは、Samba は Linux の権限があっても、このタイプのラベルが付いたファイルおよびディレクトリーにはアクセスできません。Samba のアクセスを許可するには、samba_export_all_ro
ブール値を有効にします。~]# setsebool -P samba_export_all_ro on
システムを再起動しても変更を持続させない場合は、-P
オプションを使用しないでください。samba_export_all_ro
ブール値を有効にすると、Samba は任意のタイプにアクセスできるようになることに注意してください。- Samba サービスを再起動します。
~]# systemctl start smb.service