SELinuxは初めてです。 debianから来ました。 httpd
にディレクトリへのアクセス権を付与したい。
SELinux Alert Browserは以下を提案します:
# grep httpd /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp
このコマンドがどのように機能するか理解できませんでした。どこにもディレクトリパスを指定していません。どのようにhttpdを許可するディレクトリを知るのですか?
以前は、grepを使用して出力またはファイルからテキストを抽出していました。しかし、ここではプロセスでgrepが使用されています。わかりませんでした。
また、実際の解決策は何ですか。 httpdにディレクトリへの書き込みアクセスを許可する場合
ディレクトリのコンテキストを永続的に変更する方法は次のとおりです。
# install semanage if you don't already have it:
yum install policycoreutils-python
# give the directory a new default context. The part at the end is a regex.
semanage fcontext -a -t httpd_sys_rw_content_t "/path/to/directory(/.*)?"
# apply the default context to the directory
restorecon -R /path/to/directory
Httpdのさまざまなコンテキストに関するその他のドキュメントを次に示します。
SELinuxは、ディスク上のディレクトリ構造に追加できる拡張属性を利用します。これらがメタデータとして考えてください。アクセス制御リスト(ACL)は別のものです。
ディレクトリに追加する必要がある拡張属性はコンテキストと呼ばれ、SELinuxはトラフィック警官のように機能し、特定のコンテキストを持つ実行可能ファイルがこれらのコンテキストに基づいてファイルシステムにアクセスできるようにします。 -Z
スイッチをls
に切り替えると、ディレクトリで利用可能なものを確認できます。
$ Sudo ls -Z /var/www
drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html
ここで、これらのディレクトリがhttpd_sys_script_exec_t:s0
dirでコンテキストcgi-bin
を持っていることがわかります。およびhtml
dir。 httpd_sys_content_t:s0
があります。
これらは、chcon
コマンドを使用して追加できます。
$ Sudo chcon -t httpd_sys_content_t public_html
あなたが求めているコマンドは単にモジュールをロードするだけですmypoll.pp
何かへのパーミッションを付与するとは思わない、おそらくaudit.log
にあなたのコマンドで見逃しているより多くのメッセージがあるでしょう、これにより、アクセスを許可するために何をする必要があるかが詳しく説明されます。
少し時間をかけてSELinuxに慣れることをお勧めします。最初は混乱しますが、少し時間を費やした後は、通常は簡単です。開始するには、以下のリソースをご覧ください。