web-dev-qa-db-ja.com

あるディレクトリからSELinuxコンテキストをコピーして別のディレクトリに適用する方法は?

あるディレクトリからSELinuxコンテキストをコピーして別のディレクトリに適用するにはどうすればよいですか?

使用シナリオの例は、次のように、デフォルトの/ homeパスの外に新しいローカルユーザーを作成する場合です。

$ Sudo useradd -d /websites Tim

これにより、Timのホームディレクトリ/websitesが作成され、Timに正しい権限と所有権が設定されますが、そのSELinuxコンテキストは、次のように他のユーザーとは異なります。

# ls -dZ /websites
drwx------. Tim Tim system_u:object_r:etc_runtime_t:s0 /websites

私がやりたいことは、他のユーザーの/ homeディレクトリからSELinuxコンテキストをコピーし、それをTimの/websitesディレクトリに適用することです。

他のユーザーのSELinuxコンテキストは次のとおりです。

# ls -Z /home/
drwx------. Ben  Ben  unconfined_u:object_r:user_home_dir_t:s0 Ben
drwx------. Bob  Bob  unconfined_u:object_r:user_home_dir_t:s0 Bob
drwx------. lexy lexy unconfined_u:object_r:user_home_dir_t:s0 lexy
6
Alxs

これは単に-aおよび-eフラグは次のとおりです。

semanage fcontext -a -e /home/Ben '/websites(/.*)?' 

-a : 追加、

-e:同等


その後、次のようにrestoreconを実行する必要があります。

restorecon -vvRF /websites

新しいファイルコンテキストが適用されます。

-v:ファイルラベルの変更を表示、

-R:再帰的、

-F:コンテキストを強制的にリセットします


SELinuxファイルのコンテキストを次のように変更することもできます。

semanage fcontext -a -t httpd_sys_content_t '/website(/.*)?'

これに関係なく、新しいファイルコンテキストが割り当てられます。

-a : 追加、

-t:タイプ

8