※ ChatGPTを利用し、要約された質問です(原文:CGIの実行権限(ディスク容量チェック)について)
CGIの実行権限(ディスク容量チェック)について
このQ&Aのポイント
Perl初心者のため、ユーザのホームディレクトリのディスク容量をWebでチェックするCGIを作成しています。
ユーザのホームディレクトリのパーミッションによっては、計算できない可能性があることがわかりました。
ログインしているユーザの権限でCGIを実行させる方法があれば教えてください。
Perl初心者です。現在、ユーザのホームディレクトリのディスク容量を
Webでチェックできるcgiを作成しています。
my (~,$home,~)= getpwnam($user);
でユーザのホームディレクトリを取得して、
use File::Find
で容量を計算するところまではなんとか動くようになったのですが、ユ
ーザのホームディレクトリのパーミッションによっては、計算できない
ことがわかりました。
ホームディレクトリのパーミッションが、dwrx--x--x(711)だと計算で
きないのです。dwrxr-xr-x(755)なら計算できます。ほとんどのユーザ
が711なので全く意味がありません。
調べてみると、作成したCGIの権限がnobodyであることがわかりました
がここで行き詰まってしまいました。
現在ログインしているユーザの権限でCGIを実行させる方法がありまし
たらお教えください。できれば、CGIの組み方で回避できれば嬉しいの
ですが、環境やパーミッションを変更しないといけないのでしょうか?
よろしくお願いします。
お礼
回答ありがとうございました。ApacheのsuEXECを導入して試してみようと思います。汚染された変数等、問題が次々と...初心者の私には何がなんだか..? 一歩前進することが出来ました。ありがとうございます。
補足
回答ありがとうございます。 >ところでなんで755とか705じゃいけないんですか? 複数のユーザが、Web上で各々のユーザIDを入力することでディスク容量をチェックできるようにしたいのです。他ユーザのパーミッションを勝手に変更することができないのです。 ユーザホームディレクトリは、SunOsのファイルサーバに存在していてそれをLinux上で動くこのCGIでさせようようとしています。 root権限をもっていますので、サーバの設定を変更することは可能です。回答の中でSetuidはセキュリティが低下するとありますが、これを(いまはそれが何かわかりません)使用すれば、ユーザ権限でCGIを動作できるのでしょうか?Setuidについて調べてみようと思います。