【Perl上級者コーナーPart01】at PHP
【Perl上級者コーナーPart01】 - 暇つぶし2ch448:nobodyさん
07/08/21 19:24:10
UNIXユーザーか仮想ユーザーか、自力でシミュレートして登録するか
外部コマンドを利用するか等で実現方法が変わる。

外部コマンド使う場合
・パイプ、system関数 or バッククォートで外部コマンドを実行
・uidをrootにしsetuidする
・強制的にテイントモードになるのでサニタイズする
ここら辺注意すれば比較的簡単に出来ると思う。

449:446
07/08/23 03:02:56 i/ueFIKi
>>448
ありがとうございます。
おかげさまで解決しました。
Insecure $ENV{PATH} while running setuid at ./hoge.cgi line xx.
というエラーが出て少し悩みましたが。


450:446
07/08/23 22:35:13 i/ueFIKi
すいません。もう一つ質問です。

setuidでroot権限で実行する方法なんですが、mod-perlだとroot権限になりませんね。
できればmod-perlで動かしたいんですが、方法はあるんでしょうか?



451:nobodyさん
07/08/24 06:17:27 ZilCg/Oy
これはまたひどい後出し

452:nobodyさん
07/08/24 13:37:27
>>450
mod_perlの動作原理をちょっと考えればわかることだが、不可能

453:nobodyさん
07/08/24 17:19:07
・BIGSECURITYHOLEオプションでapacheをrootで動作させる。
・外部コマンドを実行するプログラム(setuidされた)をmod_perlから呼び出す。
・sudoを使う
思いつくのはこんぐらいかな。

454:446
07/08/24 23:47:48 IBL+ZrlN
>>453
ありがとうございます。
apacheをrootで動かすのは怖くてできません><;

2つ目のプログラムを分けてmod-perlから呼び出すプログラムに数値を渡すにはファイル書き込みか何かで渡す他ないんですよね?
これならできそうです。

3つ目のsudoは
perlプログラム内(test.cgi)に以下の外部コマンド
`script /dev/null -q -c 'sudo -u root /home/vpopmail/bin/vadduser -r hoge\@hogehoge.com'`;

visudoにて以下を追加
apache ALL=(root) NOPASSWD: /var/www/test.cgi

で実行してみましたが、secureログには
sudo: pam_unix(sudo:auth): authentication failure;
と出ます。sudoがシンプルで良いと思っているのですが、認証失敗は何が原因でしょうか?


455:446
07/08/24 23:57:13 IBL+ZrlN
あ。test.cgi自体をsudoで動作させなきゃ意味ないですよね。
どうしたらtest.cgiをsudoで動作させられるんでしょう?><;



456:nobodyさん
07/08/25 02:55:37
それはperlと関係ない話だからなぁ
sudoでググれば普通にわかるべ

つーか、そもそもmod_perl使わなきゃいいだけの話じゃないのか?
そんな何回も実行するようなもんじゃないし、危ない橋を渡ることもあるまいに

457:446
07/08/25 03:35:05 YKfJDMUn
あ。解決しました。
visudoには
apache ALL=(root) NOPASSWD: /home/vpopmail/bin/vadduser
ですね。

教えてくださった方々ありがとうございました。


458:nobodyさん
07/08/25 07:04:35 uu0LXyl+
URLリンク(icomu.jp)

459:nobodyさん
07/08/25 08:17:45 XkW9fGs3
URLリンク(inoken.tv)

460:nobodyさん
07/10/08 21:00:42
さげさげ


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch