私は自分の Web サーバーのルートであり、Web サイトを維持するための perl スクリプトを作成しました。ブラウザから呼び出されるこのスクリプトは、メンテナンスのためにユーザー インターフェイスを表示します。ブラウザからこのスクリプトを開始できるようにするには、ユーザー名とパスワードを入力する必要があるため、このスクリプトを実行できるのは私だけです。
対応するボタンをクリックしたときに、このスクリプトがサーバー上のいくつかのファイルの名前を変更することを望みます。perl-script から shell-command を呼び出します`mv oldFilename newFilename`
が、何も起こりません。Apache のエラー ログには、次のメッセージが表示されます。
[ timestring ] [error] [client nnnn ] mv: oldFilenameをnewFilenameに移動できません: アクセス許可が拒否されました。referer: referrer
filenameの所有者は root で、パーミッションは 0644 に設定されています (全員が読み取り可能、root のみが書き込み可能)
この問題の最善の解決策は何ですか? ファイルのアクセス許可を 0666 に変更するよりも良い方法はありますか? パーミッションの変更は控えたい。私は、perl スクリプトがシェルに次のように言う解決策を好みます。