ディレクトリ構造内にSELinuxコンテキストを設定しようとしています。だからそれはこのようなものです:
_/var/www/sites
/www.example.com
/html
/logs
/www.example.org
/html
/logs
_
すべてのlogs
ディレクトリとhtml
ディレクトリに異なるコンテキストを設定したい。 chcon
を使用すると、次のことができます。
_Sudo chcon -Rt httpd_sys_rw_content_t /var/www/sites/*/html
Sudo chcon -Rt httpd_log_t /var/www/sites/*/logs
_
しかし、今、私はそれらを永続化し、_semanage fcontext
_でそれほど簡単ではないようにしたいと考えています。 /myweb(/.*)?
のような例を繰り返し提供するドキュメントに基づく正規表現の選択を使用しているようです。だから私はこれを試しました:
_Sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/sites/[^/]+/html(/.*)?"
_
ただし、変更は行われません。この後でrestorecon
を使用すると、何も変わっていません。 _[^/]+
_を使用しない場合、問題なく動作します。
_Sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/sites/www.example.com/html(/.*)?"
_
誰かが私を正しい方向に向けることができますか?これに関するドキュメントは、これまでに見つけたものから非常に限られています。パス内でワイルドカード選択を使用するにはどうすればよいですか?ありがとう。
semanage fcontext
コマンドを直接使用してこれが可能かどうかを知りたいのですが、find
を使用してこれを行う方法を考え出しました。
Sudo find /var/www/sites -type d -regex "/var/www/sites/[^/]+/html" -exec semanage fcontext -a -t httpd_sys_rw_content_t '{}(/.*)?' \;
おそらく、semanageが認めている正規表現の形式に関するちょっとしたドキュメンテーションが役立つかもしれませんが、試行錯誤によってのみ機能するいくつかのパターンを発見しました。
これらのパターンは、ワイルドカードを越えて彼の終わりまでの複数のパスを指定するのに役立ちました。
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/(public/media|httpdocs/wp-content)/uploads(/.*)?"
これは両方に一致しますpublic/media/uploads
およびhttpdocs/wp-content/uploads
と子供たち。
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/Host/httpdocs(/subdir)?/wp-content/uploads(/.*)?"
これは両方に一致しますhttpdocs/wp-content/...
およびhttpdocs/eng/wp-content/...
私はこの応答を、他の人が動作パターンに貢献することを期待しているwikiにしています。
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/sites/.*/html(/.*)?"
semanage fcontext -l | grep /var/www
を実行すると、(Centos 7ではデフォルトで)このフォーマットが使用されていることがわかります。