Apacheで所有権や書き込み権限があるにも関わらずPermissions deniedが出る場合
Apacheで所有権や書き込み権限があるにも関わらずPermissions deniedが出る場合は、SELinuxが有効になっていて制限がかかっていることが考えられます。
[参考記事] SELinuxを無効にする方法
[参考記事] SELinuxのpermissiveとdisableの違い
chconの使用方法
所有権やパーミッションの確認
所有権の変更
パーミッションの変更
Apacheの実行ユーザー・グループの設定
Apacheの設定ファイル一覧
Apacheの設定値一覧
SELinuxが有効になっているかを確認するには、getenforce コマンドです。
$ getenforce Enforcing
有効になっている場合は Enforcing、無効になっている場合は PermissiveまたはDisabled です。
Enforcingと返されていたら、SELinuxを無効にするとPermissions deniedが解消されます。
[参考記事] SELinuxを無効にする方法
ただこれではセキュリティレベルを下げてしまうことになります。
SELinuxを有効にした状態で、Apacheによる書き込み権限を付与するには chconコマンドでhttpd_sys_rw_content_tを付与します。
# chcon -R -t httpd_sys_rw_content_t /var/www/tmp または # chcon -R --type=httpd_sys_rw_content_t /var/www/tmp
これ以外にSELinuxはApacheのネットワーク接続の動作を制限しています。
現在の設定を確認するには
# getsebool httpd_can_network_connect httpd_can_network_connect --> off
ネットワーク接続を可能(ON)にするには
# setsebool -P httpd_can_network_connect on
chconの使用方法
$ chcon --help 使用法: chcon [OPTION]... CONTEXT FILE... または: chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE... または: chcon [OPTION]... --reference=RFILE FILE... 各 FILE の SELinux セキュリティコンテキストを CONTEXT に変更します。 --reference がある場合、各 FILE のセキュリティコンテキストを RFILE のものに 変更します。 Mandatory arguments to long options are mandatory for short options too. --dereference シンボリック自体の代わりに、シンボリックリンクを辿っ た先に適用する (この動作が既定)、 -h, --no-dereference 参照先のファイルの代わりにシンボリックリンクに適用する -u, --user=USER set user USER in the target security context -r, --role=ROLE set role ROLE in the target security context -t, --type=TYPE set type TYPE in the target security context -l, --range=RANGE set range RANGE in the target security context --no-preserve-root '/' を特別扱いしない (既定) --preserve-root '/' に対する再帰的な操作を失敗させる --reference=RFILE CONTEXT 値を指定するのに代わって RFILE の セキュリティコンテキストを使用する -R, --recursive ファイルとディレクトリを再帰的に操作する -v, --verbose 各ファイルを処理した時の診断を出力する 以下のオプションは -R オプションと併せて指定されたときにどのように階層を 横断するかの動作を変更します。2個以上指定されたときは最後のオプションの み有効になります。 -H コマンドライン引数がディレクトリに対するシンボ リックリンクの場合に、リンクを辿る -L ディレクトリに対するシンボリックリンクに遭遇し た時には全て辿る -P シンボリックリンクを辿らない (デフォルト) --help この使い方を表示して終了する --version バージョン情報を表示して終了する GNU coreutils online help: <https://www.gnu.org/software/coreutils/> Report chcon translation bugs to <https://translationproject.org/team/> Full documentation at: <https://www.gnu.org/software/coreutils/chcon> or available locally via: info '(coreutils) chcon invocation'
所有権やパーミッションの確認
所有権やパーミッション(書き込み権限)を確認するには ls -al
$ ls -al 【確認するパス】 例 $ ls -al /var/www 合計 3 drwxr-xr-x. 5 root root 46 11月 12 2021 . drwxr-xr-x. 22 root root 4096 7月 7 03:29 .. drwxr-xr-x. 2 root root 6 11月 12 2021 cgi-bin drwxr-xr-x. 2 root root 24 11月 12 2021 html
所有権の変更
所有権を変更するには chown
$ chown 【ユーザー名】:【グループ名】 【変更するパス】 例 $ chown apache:apache /var/www/tmp
下層のパスも含めて再帰的に所有権を変更するには chown に -R オプションを付けます
$ chown -R 【ユーザー名】:【グループ名】 【変更するパス】 例 $ chown -R apache:apache /var/www/tmp
パーミッションの変更
パーミッションを変更するには chmod
$ chmod 【パーミッション】 【変更するパス】 例 $ chmod 0777 /var/www/tmp
下層のパスも含めて再帰的にパーミッションを変更するには chmod に -R オプションを付けます
$ chmod -R 【パーミッション】 【変更するパス】 例 $ chmod -R 0777 /var/www/tmp
Apacheの実行ユーザー・グループの設定
Apacheの実行ユーザー・グループの設定はhttpd.confのUser・Groupです。
/etc/httpd/conf/httpd.conf
# # If you wish httpd to run as a different user or group, you must run # httpd as root initially and it will switch. # # User/Group: The name (or #number) of the user/group to run httpd as. # It is usually good practice to create a dedicated user and group for # running httpd, as with most system services. # User apache Group apache
Apacheの設定ファイル一覧
Apacheの設定ファイルの一覧を確認するには
httpd -t -D DUMP_CONFIG 2>/dev/null | grep '# In' | awk '{print $4}' $ httpd -t -D DUMP_CONFIG 2>/dev/null | grep '# In' | awk '{print $4}' /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/autoindex.conf /etc/httpd/conf.d/userdir.conf /etc/httpd/conf.d/welcome.conf
Apacheの設定値一覧
Apacheの設定値の一覧を確認するには
httpd -t -D DUMP_CONFIG 2>/dev/null | grep -v '#' $ httpd -t -D DUMP_CONFIG 2>/dev/null | grep -v '#' Listen 80 User apache Group apache ServerAdmin root@localhost <Directory /> AllowOverride none Require all denied </Directory> DocumentRoot "/var/www/html"
関連記事
- SELinuxのpermissiveとdisableの違い
- SELinuxを無効にする方法
- SELinuxの管理で使用するsemanageコマンドをインストールする方法
- 画面のバックライトを消す方法(モニタ電源を消す) vbetool
- SELinuxが有効になっているサーバではvsftpdのデータ転送が使用できない
- yumを自動で更新チェックする、自動で更新する
- PHP
- Ruby
- Linux [Red Hat/CentOSなど]
- CakePHP4
- CakePHP
- Logitec HDDケース(HDD4台用) ガチャベイ LHR-4BNHEU3 LGB-4BNHEU3
- IPアドレスを変更する方法
- 『このインターネットのサイトを開くことができません。』と出て、ファイルをダウンロードできない
- Deprecatedエラーを消す方法 (php.iniや.htaccess)
- 複雑なExcelファイルをプログラムで作成する方法
- PHPでのfacebookアプリの認証処理(APIを使うユーザー認証)
- Cactiのインストール RRDToolを利用したサーバ監視ツール
- TOPページはIndexControllerではない Cannot redeclare config()
- ダブルクオート/シングルクオート/ヒアドキュメント、echo/printの速度比較
- 携帯電話端末の判別ライブラリ Net_UserAgent_Mobile
- Joomla(ジュームラ)
- memcachedを使用する(memcache-client)
- 『id』以外のプライマリキーのカラム名を使用する方法
- MySQLで文字化けを防ぐ方法
- str関数、preg関数、ereg関数の速度比較
- Rubyとは
- cron実行時の標準出力のメールを飛ばさない方法(cron実行時に毎回メールを飛ばさない)
- 1枚のNIC(ネットワークカード)に複数のIPアドレスを設定する方法(Linux)
- GoogleChromeでSSL接続を強制される設定(HSTS)のキャッシュを消す方法
- VGA端末の画像表示対応
- wgetが遅い場合の対処法
- OpenSSL
- 暗号化・複合化を行う ブロック暗号
- LinuxサーバでWindowsのファイルシステムNTFSを読み込む方法
スポンサーリンク