SELinuxの場合のチュートリアルアプローチは次のとおりです。
SELinuxがアクティブかどうかを確認します。
$ sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: enforcing
Mode from config file: enforcing
Policy version: 24
Policy from config file: targeted
その場合、いくつかの比較チェックが役立つ場合があります。たとえば、サーバーにはデフォルトのDocumentRootがありますが、の/var/www/html
ような別の場所に配置する必要があります/path/to/document/root
。
SELinuxがリソースを積極的にいじっていない場合ls -dZ
、ディレクトリには次のようなものが表示されます。
$ ls -dZ /path/to/document/root
? /path/to/document/root/
一方、SELinuxコンテキストが適用される場合、ls -dZ
次のようになります。
$ ls -dZ /path/to/document/root
drwxrws--x+ cfgadm cfgadmin system_u:object_r:file_t:s0 /path/to/document/root
作業中のDocumentRootと比較すると、次のようになります。
$ ls -dZ /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
_r
と_t
に関連する-r
(--role
と-t
(--type
引数)chcon
ここでは、カットダウンのmanページです。:
NAME
chcon - change file security context
SYNOPSIS
chcon [OPTION]... CONTEXT FILE...
chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE...
chcon [OPTION]... --reference=RFILE FILE...
DESCRIPTION
Change the security context of each FILE to CONTEXT. With --reference,
change the security context of each FILE to that of RFILE.
--reference=RFILE
use RFILE's security context rather than specifying a CONTEXT value
-R, --recursive
operate on files and directories recursively
最初は、次のように見えるかもしれませんが、うまくいかないかもしれません。
$ sudo chcon -R -t httpd_sys_content_t /path/to/document/root
それでもWebサーバーがDocumentRootを表示できない場合は、コンテキストがルートまでさかのぼって重要であることに注意してください。
$ sudo chcon -R -t httpd_sys_content_t /path/to/document
$ sudo chcon -R -t httpd_sys_content_t /path/to
$ sudo chcon -R -t httpd_sys_content_t /path
この時点で、Webサーバーはディレクトリを見ることができます。
はい、今夜は苦労しました。
注:chconの使用には、概念的にRedHatのドキュメント(5.6.1。一時的な変更:chcon)ごとに次のような欠点があります。
The chcon command changes the SELinux context for files. However, changes
made with the chcon command do not survive a file system relabel, or the
execution of the restorecon command.
semanageとrestoreconを使用して、より永続的な変更を加えます。簡単な例:
$ sudo semanage fcontext --add -t httpd_sys_content_t -s system_u \
"/path/to/document/root(/.*)?"
$ sudo restorecon -FR /path/to/document/root
restoreconに関しては、コンテキスト全体(つまり、ユーザーとタイプ)に影響を与えるために-Fが必要であることに注意してください。また、-Rは再帰的に変更を行うことを意味します。引数-vまたは-pは、詳細形式または簡潔形式で進行状況を表示できます。-FRnvを使用して、実際に変更を加えずに何が起こるかを確認します。
一度semanageは、このように使用され、のようなコマンドを使用してローカルセキュリティ変更を表示することが可能です。
$ sudo semanage export
semanageエクスポートの出力を保存してsemanageインポートで使用すると、さまざまなシステムに一連の変更を簡単に適用できます。
注:この回答は、サイトの最も基本的なタイプコンテキストを提供します。セキュリティはさらに細かくすることができます。たとえば、次のようなコマンドを使用して、Webサーバーページに適用できるタイプのリストを参照してください。
$ seinfo -t | grep http
注:semanageやseinfoなどのユーティリティは、デフォルトではインストールされない場合があります。少なくとも一部のディストリビューションでは、必要なパッケージの名前は次のようになります。
policycoreutils-python
setools-console
DocumentRoot
かどうかを確認します。これにより、Webサーバーが見ているものについての洞察が得られる場合があります。パスに沿って他のディレクトリを確認することもできますが、それが本当に/var/www/
それらの下にある場合は問題になりません