• ベストアンサー

perl から unix コマンドを入力する方法

perl から unix コマンドを入力するには、どのようにしたらよいのでしょうか。 具体的には、フォームから受け取った文字列を、useradd に渡して、ユーザーの追加をしたいのです。 perlスクリプトの所有者はrootで、属性はsetuid(4755)にしています。

質問者が選んだベストアンサー

  • ベストアンサー
  • hohihohi
  • ベストアンサー率34% (23/66)
回答No.2

コマンドが command、フォームから受け取った文字列が $argumentであれば、 system("command $argument"); で ok です。

その他の回答 (3)

  • tullio
  • ベストアンサー率20% (11/53)
回答No.4

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

ss963
質問者

お礼

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

回答No.3

回答は marino_cx さんのとおりでいいと思いますが、setuid した スクリプトで外部コマンドを呼び出したりする際には、セキュリティ ホールに十分に気をつけてください。 ちょっとしたミスで root でないユーザが root 権限を容易に取得 できてしまいます。 もっともこういった危険を減らすために、通常の perl は、setuid されている場合に、外部から指定された文字列をそういった危険性 のある操作には与えられないようにしています。これを無理に解除 する方法もありますが、あまりしない方がいいとは思います。

  • marimo_cx
  • ベストアンサー率25% (873/3452)
回答No.1

コマンドを実行するだけなら $return = `command`; < バッククオート演算子 か、 system("command"); のことでしょうか? ただ、cgiでsetuid使うのって良いのかしらん?と思わなくも無いですが・・・ ユーザー作り置きしておいてエイリアス振っていくとかというのとか色々やり方はありますが。 あんまり変らないか・・・ あ、フォームといってもcgiとはおっしゃっていないですね。^^;

関連するQ&A

専門家に質問してみよう