- ベストアンサー
100個のアカウントを一挙につくりすべてのメールを1つのアカウントに転送させたい方法
- CentOS4のレンタルサーバ(VPS)上で、100個のアカウントを一括で作成し、すべてのメールを1つのアカウントに転送させたい方法を教えてください。
- PHPやシェルスクリプトを使用して、100個のアカウントを作成し、それぞれのメールをエイリアスで1つのアカウントに転送する方法を教えてください。
- adduserコマンドやwebminを使用せずに、100個のアカウントを作成し、メールをすべて1つのアカウントに転送する解決策を教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
ANo.6 のスクリプトは newusers で作成した各ホームディレクトリに /etc/skel のファイルをコピーするものです。 ユーザを削除する必要はありません。 ログイン権限を与えていなければ(/sbin/nologin)ANo.6 のスクリプトは不用です。 (因にホームディレクトリも削除する場合は userdel -r ユーザ名、 スクリプトで一気に削除も可) スクリプト中の "ファイル" はnewusers で使用したファイル名(グループIDを省略していないこと)に置き換える。 スクリプトファイルを作成、実行権を与えて(chmod u+x スクリプトファイル)実行(./スクリプトファイル) コマンドから実行したければ 2行目以降を改行を ; に置き換えて一行で入力 ls に -a オプションをつければ(ls -a /etc/skel)何がコピーされるかわかるので一個ずつコピーしても良い。 確認は ls -l /home/ユーザ名/.[a-z,A-Z] で . から始まる隠しファイルの存在とパーミッション を見る(ls -al /home/ユーザ名 でも良い)。 以上 root 権限で行なう。 # [技術者向] ではここまで説明する必要はないと思うのだが...
その他の回答 (6)
- umota
- ベストアンサー率46% (150/324)
ANo.5 のリンク先のスクリプトは変ですね。 こちらをどうぞ ( ` は [Shift]+[@] です) #!/bin/sh for user in `cut -d: -f1 ファイル` do cp /etc/skel/.[a-z,A-Z]* /home/$user chown -R $user /home/$user chgrp -R `cat ファイル|grep $user|cut -d: -f4` /home/$user done
お礼
再度ご回答ありがとうございます。 なお、newusersで100個アカウントを設定してしまったので、 これをいったん削除して、お教えいただいたスクリプトを実行すべきかと思うのですが、どうしたらよいでしょうか? userdelしまくれば問題ないでしょうか? お忙しい中恐縮ですが、 以上よろしくお願い申し上げます。
- umota
- ベストアンサー率46% (150/324)
newusers では ホームディレクトリに /etc/skel 以下のファイルがコピーされません。 ここに 模範Q&A がありました。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2848&forum=10&2
- umota
- ベストアンサー率46% (150/324)
newusers を使うとパスワード付きのユーザをまとめて登録できますよ。
お礼
ご回答ありがとうございました。成功しました。 なお、お聞きしたいのですが、 これは、adduserコマンドや、Webminから追加した状態と、全く同じなのでしょうか? 調べてたら、どこかのページで、若干違う(自分の勘違いかも)と書いてあったものでした。 お手すきでしたら、お教え願えれば幸いです。 以上、よろしくお願い申し上げます。
#2です。 > 一応、確認させていただきたいのですが、手順としては、 > <?php > (1)なんかしらロックファイルを作る > (2)新しい/etc/aliasesを別名(/etc/aliases_next とかで)でつくる > (3)mv /etc/aliases_next /etc/aliases > (4)newaliases コマンドを実行(system("newaliases");) > (5)ロックファイルを消す > ?> phpで、~/aliases あたりにファイルを作っておいて、 rootになったあとにシェルで、 # cat aliases >> /etc/aliases # newaliases の方がいいと思います。 phpでファイル作成の部分が必ず一発で出来るとは思わないですし、 aliasesファイルは追記という形にした方が無難です。 すでに設定が入っている場合があるので。 ついでですが、 > system("adduser dummyuser -p dummypass"); adduserに-pをつけないでおくとログインできないアカウントが出来ませんか? 転送させるだけのアカウントならば、ログインする必要すらないと思うのですが。
お礼
再度ご回答ありがとうございます。 なるほど、おっしゃる通りですね。そのようにしてみたいと思います。 >> system("adduser dummyuser -p dummypass"); >adduserに-pをつけないでおくとログインできないアカウントが出来ませんか? >転送させるだけのアカウントならば、ログインする必要すらないと思うのですが。 あ・・・!確かに。金の卵ですね。 ただ、#1さんへのお礼に書いたような悩みがあるので、 後学のために、SSHログイン可能なケースも知りたく思っています。 お手すきでらっしゃいましたら、お助け願いたいと思います。 以上、よろしくお願い申し上げます。
/etc/aliasesを利用して別名をつける方が早いと思います。 PHPとかでもファイル作成できるのではないでしょうか? 詳しくは man aliases で。
お礼
ありがとうございます。 てっきり、 /etc/aliases の中身って、複雑だと思ったのですが、単純だったのですね。 一応、確認させていただきたいのですが、手順としては、 <?php (1)なんかしらロックファイルを作る (2)新しい/etc/aliasesを別名(/etc/aliases_next とかで)でつくる (3)mv /etc/aliases_next /etc/aliases (4)newaliases コマンドを実行(system("newaliases");) (5)ロックファイルを消す ?> といったかたちで大丈夫でしょうか? 以上、よろしくお願い申し上げます。
- shimix
- ベストアンサー率54% (865/1590)
phpが使えるのであれば、アカウントなどをテキストファイルにしておいてphpから(file()で読み込んでおいて)system()やexec()で実行すればいいのでは? #phpからの実行権限があるかどうかわかりませんが(汗
お礼
ご回答ありがとうござます。 なるほどですね。ありがとうございます。 ・・・で・・・ひとつ問題が・・・。 system("adduser dummyuser -p dummypass"); のようにできるように思えたのですが(実際ユーザは追加されました) dummypassの部分は、パスワード「dummypass」にしたいのですが、できません。 調べたところ、cryptだかmcryptだかを使わないとだめなようですが、その方法がわかりません。(暗号化についてかなり詳しくないので) phpで、 <?php $encoded_dummypass = crypt("dummypass"); system("adduser dummyuser -p $encoded_dummypass"); ?> とやったものの、やはり、パスワードは「dummypass」となりませんでした。 どのようにすればできるのでしょうか? あるいは、 -- コンソールで $ adduser dummyuser -p hogehoge (hogehogeの部分は、とりあえずランダムな文字列で一時しのぎ。パスワードが空の状態はまずいので) $ passwd dummyuser Changing password for user dummyuser. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. とやるのと同じように、 PHPでもインタラクティブ的に(とはいえ自動で)実現可能なのでしょうか? 以上、よろしくお願いします。 p.s. >#phpからの実行権限があるかどうかわかりませんが(汗 rootで、phpファイルをたたけば、実行できました。
お礼
詳しいご開設ありがとうございます。 大変参考になりました。 いろいろ試してみたいと想います。 本当にありがとうございました。