2

私は自分の Web サーバーのルートであり、Web サイトを維持するための perl スクリプトを作成しました。ブラウザから呼び出されるこのスクリプトは、メンテナンスのためにユーザー インターフェイスを表示します。ブラウザからこのスクリプトを開始できるようにするには、ユーザー名とパスワードを入力する必要があるため、このスクリプトを実行できるのは私だけです。

対応するボタンをクリックしたときに、このスクリプトがサーバー上のいくつかのファイルの名前を変更することを望みます。perl-script から shell-command を呼び出します`mv oldFilename newFilename`が、何も起こりません。Apache のエラー ログには、次のメッセージが表示されます。

[ timestring ] [error] [client nnnn ] mv: oldFilenamenewFilenameに移動できません: アクセス許可が拒否されました。referer: referrer

filenameの所有者は root で、パーミッションは 0644 に設定されています (全員が読み取り可能、root のみが書き込み可能)

この問題の最善の解決策は何ですか? ファイルのアクセス許可を 0666 に変更するよりも良い方法はありますか? パーミッションの変更は控えたい。私は、perl スクリプトがシェルに次のように言う解決策を好みます

4

3 に答える 3

4

これこそが、Unix グループが解決しようとしていた問題ではないでしょうか? ファイル権限を に0664、ディレクトリ権限を に設定0775し、ファイルとディレクトリを webserver ユーザーが属するグループに割り当てます。

于 2012-05-02T17:06:28.367 に答える
1

セキュリティを無視しないでください。sudoを使用します。

于 2012-05-02T17:15:57.813 に答える
0

私は、html ページと Java スクリプトを使用して Perl の Web サイトを管理しています。すべてのプログラム ファイルは、ルートの所有権で保護されています。

Web サイトでユーザー名とパスワードを使用してこのプログラムへのアクセスを制限した場合でも、root がプログラムを所有しchown root:root <full-path-to-your-program-name>、プログラム ファイルを保護する必要がありますchmod 755 <full-path-to-your-program-name>

于 2012-05-02T21:40:19.973 に答える