アプリ版:「スタンプのみでお礼する」機能のリリースについて

perl から unix コマンドを入力するには、どのようにしたらよいのでしょうか。

具体的には、フォームから受け取った文字列を、useradd に渡して、ユーザーの追加をしたいのです。

perlスクリプトの所有者はrootで、属性はsetuid(4755)にしています。

A 回答 (4件)

コマンドが command、フォームから受け取った文字列が $argumentであれば、



system("command $argument");

で ok です。
    • good
    • 0

perl自体にルート権限を与えてしまうのは確かに怖いですね.せめて,sudoなどをかますと良いです.sudo2は細かい設定が出来て

,Webでユーザ情報変更とかに安心して使えます.
    • good
    • 0
この回答へのお礼

早速、sudoを調べてみました。
確かに、これの方がいいみたいです。

お礼日時:2000/12/26 19:39

回答は marino_cx さんのとおりでいいと思いますが、setuid した


スクリプトで外部コマンドを呼び出したりする際には、セキュリティ
ホールに十分に気をつけてください。
ちょっとしたミスで root でないユーザが root 権限を容易に取得
できてしまいます。

もっともこういった危険を減らすために、通常の perl は、setuid
されている場合に、外部から指定された文字列をそういった危険性
のある操作には与えられないようにしています。これを無理に解除
する方法もありますが、あまりしない方がいいとは思います。
    • good
    • 0

コマンドを実行するだけなら



$return = `command`; < バッククオート演算子

か、

system("command");

のことでしょうか?
ただ、cgiでsetuid使うのって良いのかしらん?と思わなくも無いですが・・・
ユーザー作り置きしておいてエイリアス振っていくとかというのとか色々やり方はありますが。
あんまり変らないか・・・
あ、フォームといってもcgiとはおっしゃっていないですね。^^;
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!