Show Table of Contents
このページには機械翻訳が使用されている場合があります (詳細はこちら)。
15.4. 設定例
SELinux でどのように Samba サーバーを補完するのか、Samba サーバーの全機能をどのように管理するのかなど、実践的な例を以下に示します。
15.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上記のパッケージがインストールされていない場合は、root でyum
ユーティリティーを使用して、これらをインストールします。~]#
yum install package-name
- root で
mkdir
を使用して、Samba 経由でファイルを共有するための最上位の新規ディレクトリーを作成します。~]#
mkdir /myshare
- root で
touch
ユーティリティーを使用して空のファイルを作成します。このファイルは後で Samba 共有が正しくマウントされたかを確認する際に使用します。~]#
touch /myshare/file1
- SELinux では、
/etc/samba/smb.conf
ファイルおよび Linux パーミッションが適切に設定されていれば、Samba はsamba_share_t
タイプのラベルが付いたファイルの読み取りおよび書き込みが可能になります。root で以下のコマンドを実行し、ファイルコンテキストの設定にラベルの変更を追加します。~]#
semanage fcontext -a -t samba_share_t "/myshare(/.*)?"
- root で
restorecon
ユーティリティーを使用してラベル変更を適用します。~]#
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 - root で
/etc/samba/smb.conf
ファイルを編集します。Samba で/myshare/
ディレクトリーを共有するために、以下をこのファイルの末尾に追加します。[myshare] comment = My share path = /myshare public = yes writable = no
- 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.上記のコマンドを実行する際に、システムに存在しないアカウントのユーザー名を指定すると、Cannot locate Unix account for 'username'!
エラーが発生します。 - Samba サービスを開始します。
~]#
systemctl start smb.service
- 以下のコマンドを実行し、利用可能な共有を表示します。username はステップ 7 で追加した Samba アカウントにします。パスワードの入力を求められたら、ステップ 7 で Samba アカウントに割り当てたパスワードを入力します (バージョン番号は使用しているバージョンによって異なります)。
~]$
smbclient -U username -L localhost
Enter username's password: Domain=[HOSTNAME] OS=[Unix] Server=[Samba 3.4.0-0.41.el6] Sharename Type Comment --------- ---- ------- myshare Disk My share IPC$ IPC IPC Service (Samba Server Version 3.4.0-0.41.el6) username Disk Home Directories Domain=[HOSTNAME] OS=[Unix] Server=[Samba 3.4.0-0.41.el6] Server Comment --------- ------- Workgroup Master --------- ------- - root で
mkdir
ユーティリティーを使って新規ディレクトリーを作成します。このディレクトリーは Samba 共有のmyshare
をマウントする際に使用します。~]#
mkdir /test/
- root で以下のコマンドを実行して、Samba 共有の
myshare
を/test/
にマウントします。username はステップ 7 のユーザー名にしてください。~]#
mount //localhost/myshare /test/ -o user=username
ステップ 7 で設定した username のパスワードを入力します。 - 以下のコマンドを実行して、ステップ 3 で作成した
file1
を表示します。~]$
ls /test/
file1
15.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 Server はこのタイプにアクセスできますが、Samba はアクセスできません。 - Apache HTTP Server を起動します。
~]#
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
このページには機械翻訳が使用されている場合があります (詳細はこちら)。