起きてはいけないEACCES

起きてはいけないEACCES

私はLinuxボックスで私が本当に説明できない状況に直面しました。

背景情報:我々はアプリケーションにリクエストを渡すac / C ++モジュールを使用してApacheを実行しています。要求が送信されるローカルポートを指定する.portファイルを読み取り、それを実行します。

インストール後、Web インターフェイスを使用して接続できません。いくつかのトラブルシューティングの後、straceを取り出して、Apacheプロセスが.portファイルを読み取れないことがわかりました。

[pid  8105] stat("/tmp/somedir/application.port", 0x7ffff9694470) = -1 EACCES (Permission denied)

ファイルの権限を確認してください。

% ls -l /tmp/somedir/application.port
-rw-r--r--. 1 appuser staff    5 Oct 16 14:10 application.port

まあ、誰でも読むことができるはずですか?

Apacheプロセスがどのように実行されるかを確認します。

% ps -ef | grep 8105
appuser   8105  3357  0 15:14 ?        00:00:00 /usr/sbin/httpd

したがって、Apacheプロセスはファイルの所有者として実行されます。それも効果があるでしょうか?

最後に私はこうする:

% su - appuser
% stat /tmp/somedir/application.port
  File: `/tmp/somedir/application.port'
  Size: 5           Blocks: 8          IO Block: 4096   regular file
Device: 11h/17d Inode: 1400293     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1001/ appuser)   Gid: ( 1001/   staff)
Access: 2013-10-16 14:10:03.357679902 +0200
Modify: 2013-10-16 14:10:03.357679902 +0200
Change: 2013-10-16 14:10:03.357679902 +0200

それでは、「appuser」はファイルを所有してWebサーバーを実行しますが、Webサーバープロセス内でそのファイルをstat()する権限がありませんか?ここで何が起こっているのか知っている人はいますか?

また、これが私たちが行った最初のインストールではなく、他のインストールも期待どおりに機能したことに言及したいと思います。この特定のマシンのセットアップ中に手動でいくつかの調整が行われた可能性がありますが、どのようにしてこれが行われたかはまだわかりません。

プロセスを再開しても動作は変わりません。

機械はRHEL 6箱です。

ベストアンサー1

最後に、問題が実際にSELinuxに関連していることがわかりました。

SELinuxが何であるかについての簡単な概要と、いくつかの便利なコマンドが必要な人には、次のことをお勧めします。単純な必死者のためのSELinuxYouTubeのビデオ。これはトラブルシューティングの良い紹介です。

おすすめ記事