Linux:sambaへのユーザ登録
勤務校でサーバを必要とする部屋は,パソコン教室です.パソコン教室には,施工業者様謹製のWindows2000サーバがあります.Activedirectoryも稼働していますが,生徒用IDが個々に割り当てられているわけではなく(ということはPCごとなんですが),しかも認証時に処理が固まることは授業毎に必ずあります.これは授業時間のロスを意味します. それでなくともこのサーバは施工業者様がお建てになったものですのでそれを勝手にいじるのも気がすすみません.
さらに,異動するときに元通りにする自信も知識も時間もありません
必要にかられてあわてて施工業者様謹製のサーバをいじって壊しても洒落になりません.というわけで,Winサーバは現状のまま働いていただくことにして,認証付きのファイルサーバは自分で構築することにいたしました.頼れるのはネットのありがたいノウハウでしょうか.私のLinuxの知識など,日曜大工程度にもなりませんのでいい加減なもんです.
もしもActivedirectoryに生徒個々のIDが登録されている場合は,sambaの認証はドメインでできますが,勤務校では生徒個々のIDはWindowsサーバに登録されていません.そこで,Activedirectoryに生徒のIDを登録するかどうか,ということを検討するのですが,
- 認証はsambaサーバにアクセスしたときに実施するようにすれば,パスワードを忘れた生徒もsambaが使えないだけなので,ダメージは少ない
- パスワードを忘れた生徒への対応に授業時間が取られるが,ファイルサーバへの認証は後回しにしても何とかなるといえばなるだろう
という考えで,とりあえず認証はファイルサーバにアクセスしたときはじめて必要になればよろしい,ということにしました.ということで,作業は次の通り.
自分をsambaに登録するのは簡単にできた.
#groupadd staff
#useradd -g staff 自分のID
#smbpasswd -a 自分のID
ついでなので後々必要になるから,
#groupadd student
も作ってしまう.しかし,これからおびただしい数のIDを登録するには骨が折れますなぁ.まぁ,同じ作業をただ繰り返すだからシェルスクリプトを作成してしまえば一括でできるかなー.
実は生徒用ユーザを登録するシェルスクリプトは,とってもありがたいサイトにありますので,それを使うための準備から.準備の作業は以下の2つ.
- 生徒用パスワードを必要分作る
- ID登録データをファイルにまとめる
生徒用パスワードは,mkpasswdコマンドを使えば便利.そういえばこのコマンド,Vine3.2ではデフォルトで存在しなかったなぁ.ということで,
#apt-get install expect
して調達. そして,
#!/bin/bash
counter=0
while [ $counter -lt $1 ];
do
mkpasswd -l 8
let counter=counter+1
done
みたいな簡単なスクリプト(ファイル名を”stu_pw.sh”とすると)で,
# ./stu_pw.sh 欲しい数 > 保存しておきたいファイル名
てなことをしてまんまと調達.
ID登録データを作る.フォーマットは,
生徒ID:パスワード:グループ名
これが1行に盛り込むべき情報.生徒IDは,「登録年+登録年現在の学年クラス出席番号」 とかにすればサクサク作れますな.はじめが数字だとカッコワルイとかいうときは,適当に学校の頭文字とか(大泉だったらO ・・・あ,ゼロと勘違いされますかそうですか・・・)つければいいよねー.
私は後でIDとパスワードを各生徒に渡すべく差し込み印刷する関係で,Excelで作っちゃいましたけれども(データのやりとりはクローズドなネットワークでやれば別に問題ないし,使用済みで必要がなくなったファイルでパスワードが入ってるものは 削除してしまえばいい),WindowsとLinuxは改行コードが違うので,
#nkf -Lu Winで作ったファイル > 新しいファイル名(“stu.dat”と呼ぶことにする)
する.もちろん,Winで作ったファイルはここで削除.
あとは下記に示すユーザ登録スクリプト(“stu_id_add.sh”と呼ぶことにする)を走らせる.
#!/bin/bash
awk ‘BEGIN {FS=”:”}{printf(“%s %s %s\n”,$1,$2,$3)}’|while read id pw gr
do
useradd -g ${gr} -s /sbin/nologin ${id}
printf “${pw}\n${pw}\n”|smbpasswd -sa ${id}
done
ありがたいサイトとどこが違うかってnologinのところと,Linux側パスワードの設定をしないところ.面倒なことは避けたいのと,別にLinuxにログインしてもらって操作してもらう授業は考えてないため.
# stu_id_add.sh < stu.dat >logfile
プロンプトが止まってlogfileの中身見て特に問題なさそうだったら登録作業終了.登録用データファイルを全部削除する.ユーザの削除の方法とシェルスクリプトについては, とってもありがたいサイトに書いてある通り.
IDごとのディスク容量制限はquotaでかけます.それについては別の記事にまとめます.