0

複数のサーバーで「webmin」という名前のオープン ソースの Perl パッケージを使用しています。内部はほとんどが Perl です。

新しい 64 ビット サーバーで奇妙な動作を見つけました。ファイルが空で作成されていました。

アプリケーションがルートとして実行されているため、 Perl の組み込み関数の「許可が拒否されました」というエラーが発生するのopen は非常に珍しいことです。$< 変数と $> 変数を perl に出力させましたが、どちらも私がユーザー 0 であると主張しています。

このバグは、ディレクトリが誰でも実行可能なディレクトリ ( chmod o-x $DIR) ではないディレクトリ内のファイルに影響を与えるようです ... これは webmin の奥深くでのみ発生するため、単独では再現できません。

これは、誰にとっても遠く離れた場所でもなじみがあるように聞こえますか?

4

4 に答える 4

2

「PermissionDenied」エラーまで追跡しました [....] *[w] *アプリケーションがrootとして実行されているため、これは非常に珍しいことです。

root失敗したときのように実行していますopen()か?

webminのドキュメントは、他のユーザーと同じように任意のコマンドを実行する機能を誇っています。ソースコードをすばやくgrepすると、switch_to_unix_user()...という名前の関数のインスタンスがいくつか表示されます。

于 2009-08-21T03:03:18.027 に答える
2

ディレクトリの ACL ?

SELinux がオンになっていますか?

実行ビットを持たないディレクトリで「許可が拒否されました」というエラーが発生するという事実は驚くべきことではありません.ディレクトリでは、実行ビットはディレクトリの内容へのアクセスを制御します-問題は、なぜ実行ビットが設定していません。

プロセスに umask 設定が適用されているかどうかを確認します。

于 2009-08-21T02:57:17.257 に答える
1

Unixパーミッションでは、ディレクトリ内のすべてにアクセスするには、ディレクトリに対する実行パーミッションが必要です(ディレクトリを一覧表示するための読み取りパーミッションは必要ありません。コンテンツにアクセスするには、実行パーミッションのみが必要です)。そのため、「その他」と見なされるユーザーの下で何かがファイルにアクセスしていて、アクセス許可がありません

于 2009-08-21T05:43:19.460 に答える