なんかいろいろこんぴゅーたかんけいのなぐりがき

なんか勉強しているこんぴゅーた関係のことのメモやそれ以外のことを書こうかなあ...

logs

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Ubuntuにユーザーを大量に登録するときにしたことのメモ

 先日からUbuntu(バージョンは忘れたが7か8くらい)にユーザを大量(言っても10人くらいだが)しようと試行錯誤していて、今日やっとできた。
 もちろん1人ずつ予め備わっているGUIの設定メニューを使用して登録すればいい話なのだが、人数が多いため、これを自動的に行いたかった。

今回はこれを代わりにコマンドでおこなったわけで、
具体的には以下のコマンドを使った。

useradd
mkdir
chpasswd
usermod
chmod
chown

以下手順
まずは useradd ユーザ名
で新規ユーザの追加
そしてmkdirで/home/ユーザ名 なるディレクトリを作成
その次はusermod -G グループ名1,グループ名2… ユーザー名 という風にしてユーザの所属グループの追加
追加するべきグループは、見本として、一回GUIで新規ユーザを作ってそのユーザ名で id ユーザ名 を実行してそこに表示されるグループIDを登録すればいい

順番が前後するが(前後してても結果は変わらないはず)先にmkdirで作ったホームディレクトリの所有者を変更する。変更しないとmkdirしたユーザの所有となってしまう。
まずは所持グループを
chown -R :グループ名(ユーザ名と同じ) /home/ユーザ名
次に所持ユーザを変更する
chown -R ユーザ名 /home/ユーザ名
ちなみに-Rは指定ディレクトリ以下に対しても再帰的に同様の設定をするというオプション。多分必要ないが念のため

次にこれは任意ではあるがユーザが管理者以外の人間に自分のホームディレクトリを見られることを希望しない場合は
chmod 700 /home/ユーザ名
でパーミッションを変更する

最後にchpasswdコマンドを使ってパスワードを登録(あるいは変更)する。(この方法を見つけるのに苦労した、useraddとかでもパスワードが登録できるはずだが、スクリプトで自動化するのが難しかった、というかできなかった)
これを使う前にユーザ名と登録したいパスワードを記入したファイルを容易する。書式はこんなかんじ

user1:pass1
user2:pass2

みたいな感じでつくって保存すればいい。空白行があるともしかしたらエラーがでるかもしれないので空白行はなくすこと、特に最終行に注意。

ファイルを書き終えたら、 chpasswd < 書いたファイル名 でパスワードを変更。

以上の方法でコマンドだけでユーザ登録できるわけだが、これでは結局パスワードの登録以外は1人ずつしなければいけないので例のごとくpythonで書いてみる。


#coding:utf-8
import os

r = open("userlist","r")
GIDS = "4,20,21,24,25,26,29,30,44,46,104"
users = []
for line in r:
users.append(line[:line.index(":")])
for user in users:
os.system("useradd " + user)
os.system("usermod -G " + GIDS+" "+user)
os.system("mkdir /home/" + user)
os.system("chown -R :" + user + " /home/" + user)
os.system("chown -R " + user + " /home/" + user)
os.system("chmod 700 /home/" + user)

os.system("chpasswd < userlist")



実行するときは sudo を忘れずに!!
同じディレクトリにuserlistという名前の先のchpasswdと同様の形式のファイルを用意すればあとは自動てきにやってくれる。
これをするために結構ググったのだけれど、ここまで詳しく、しかもpythonでかかれていたものはなかった。

実際にこれを使うときにはスクリプト中のGIDSを適切なものに書き換えて使ってください。あと、このスクリプトでエラーがでるなら多分文字コードか改行の形式だと思うからチェックしてみてください。
スポンサーサイト

トラックバックURL

http://ilovevim.blog42.fc2.com/tb.php/119-1f2f04c1

この記事へのトラックバック

この記事へのコメント

コメント投稿フォーム

Paging Navigation

Navigations, etc.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。