質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

2312閲覧

CGI経由でユーザー新規作成するには

1nakaji

総合スコア187

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

1グッド

0クリップ

投稿2016/10/17 00:12

CGI経由でユーザー新規作成をしたいです。
コマンドラインなら以下。

useradd test

これをCGI経由でするとなるとApacheにsudoの権限を
持たせるしかないのでしょうか?

ユーザー新規作成自体は
不特定多数の人にやってもらうアクションですが、
セキュリティ的には危険すぎるのはと思い、
これはあまりやりたくありません。

かといって人数が増えると手動追加にも
限界があるのではと思いまして。

何かいい方法があれば教えてください。
よろしくお願いいたします。

YuzuRyo61👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

sudoersは使えませんか?

# visudo 以下を追加 apache ALL=(ALL) NOPASSWD: /usr/sbin/useradd

これで、apacheユーザーに/usr/sbin/useraddをsudoコマンド(パスワードなし)で実行させることが出来ます。

投稿2016/10/17 00:25

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1nakaji

2016/10/17 00:28

ありがとうございます。 こういう方法って一般公開するWEBサーバーでも よく行われるんでしょうか? apacheユーザーにsudoコマンド(パスワードなし)の 権限ってかなり危険な気がしてしまうのですが・・・。 考えすぎなんでしょうか。 セキュリティ的には確かにそうだが、 実際のサーバー運用などではやむおえず apacheにsudo権限を持たせているところも多いなど。 その辺りの情報も何か持っていれば教えてください。
moonphase

2016/10/17 00:36

オンライン入力したものでuseraddする(つまりroot権限が必要)なのは要件であれば、その方法しかないと思います。 /usr/sbin/useraddコマンドだけにsudo権限であればそれほど危険とは思えません。もちろんそこに到達するまでの画面に、善意ある人だけが遷移できる仕組みを作りましょう。CAPTCHAを入れたり、課金するのであればカード与信が通った人のみ作成可能にする等。 オンラインでなく、後日まとめて登録でもよければ、オンライン入力されたものをCSV等にしておき、オペレーターによる内容確認後、一括でユーザーを作成できるnewusersを手動で実行してください。
1nakaji

2016/10/17 00:52

なるほど、そういうこともあるということですね。 この質問の発端はレンタルサーバーとかのサービスも 自動でユーザー作成とかしていると思うのですが、 どうやっているんだろうと思いまして。 もちろんユーザー登録から3営業日以内に レンタルサーバーが使えるようになるという場合は、 手動でやっているのかもしれませんが、 登録直後に使えるようになるものも多いので。
1nakaji

2016/10/17 01:43

あ、すいません。試してみたんですがダメでした。permissionがないと怒られました「apache ALL=(ALL) NOPASSWD: ALL」とか試しにやってみましたがダメそうです。
moonphase

2016/10/17 01:48

useraddではなく/usr/sbin/useraddとしていますか?
1nakaji

2016/10/17 01:50

「/usr/sbin/useradd」にしてます。ブラウザからCGI経由でなく、perlのcgiファイルをrootで実行すると上手く作成できていたのでプログラムは問題ないはずです。パーミッション見直してみます。
moonphase

2016/10/17 02:09

試してみましたがあっさりできました。 #!/usr/bin/perl print "Content-type: text/html \n\n"; print "Hello\n"; $result = `/usr/bin/sudo /usr/sbin/useradd test`;
1nakaji

2016/10/17 03:07

何度もありがとうございます。あれから色々いじってましたら上手く動きました。結局上手くいかなかった原因はわからずでしたが、教えていただいた方法で解決したのでよかったです。とても勉強になりました。
guest

0

インターネットにサーバをさらす場合は、自作CGIで実現するのはリスクを伴うかと思います
ので、webminを利用するというのはいかがでしょうか?

http://jp.webmin.com/

投稿2016/10/17 09:48

nagaetty

総合スコア1106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1nakaji

2016/10/17 10:29

知らない情報でした。ありがとうございます。参考になりました。こちらって不特定多数の人がユーザー登録でも使えるんですか?
nagaetty

2016/10/17 10:55

ユーザの追加のみが、できる機能だけを特定のwebmin用のユーザを作成すればできます。 linuxのアカウント作成を公開するのは、危険な行為なので一般的なサービスではあります。webminであればsslで通信は暗号化されます。
1nakaji

2016/10/17 11:05

なるほど。wbmin経由でユーザー追加のみできるユーザーを使って、ユーザー登録をするという感じでしょうか。それも良さそうですね。一度試してみます。
1nakaji

2016/10/17 17:04 編集

webminをインンストールして少し触ってみました。これってあくまでブラウザ経由で設定していく感じでしょうか。 不特定多数の人にユーザー作成させる場合にはhttps://xxx.xxx.xxx.xxx:10000/にアクセスしてもらって、ユーザー作成専用のユーザーでログインしてもらう感じでしょうか。 ちょっとまだつかめていないんですが、CGI経由でユーザー作成ができる感じではないんですね。もう少し調べてみますが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問