
|
[バックナンバーのトップへ] [Linux システム管理のトップへ] いますぐ実践! Linux システム管理 / Vol.136 / 読者数:1333名こんばんは、うすだです。
楽しかった黄金週間が、まもなく終わろうとしています。
いろいろ思うところはあると思いますが、個人的には、明日から社会復帰できるよう、
早めに就寝されることをお勧めします。 ところで、Windows XP の販売期間やサポート期間について、 いろいろと話題になっているようですね。(Yahoo の買収ほどじゃないですが…) 結局、OS の新機能はさほど必要とされておらず、セキュリティや速度、 信頼性などがそこそこ維持されるなら、XP でもぜんぜん問題ないよ、 とみんなが思っているところに、問題があるような気がします。 …いえ、XP でいいのだから、ぜんぜん問題ではないですね。 CPU などのハードが速くなり、インターネットもそこそこ使えて、 OS も安定してきた今、ひとびとの注目が OS より上の層に向かうことは、 ごく自然なことのように思います。 ですので、今後、MS がどのように方向転換していくのか、 現在の寡占的状況を維持できるのかなどを、注意深く観察したいなと思います。 身もふたもないことを書いたところで、今回も、はりきってまいります! 今回のお題 - パスワードを自動生成する前回、Mercurial というバージョン管理ツールを使って管理する方法を、 簡単にご紹介しました。
Vol.135 - Mercurial で設定ファイルを管理する
ですが、反響がほとんどなく、読者さんもあまり増えませんでした。 また、この時期、新入社員のかたが教育を終え、 配属されてシステム管理の見習いに任命されたとか、 異動先でシステム管理を任されてしまった、ということが、 各所で見受けられるように思われます。 これらを踏まえまして、またしても初心にかえり、 脱初心者を目指す貴兄向きの内容を、粛々とご紹介したいと思います。 というわけで、まず手始めに、ユーザ登録を取り上げたいと思います。
ユーザ登録といえば、useradd コマンドですが、
数十または数百のユーザを一括して登録するとなると、若干のひねりが必要です。 …とはいえ、複数ユーザの一括登録ネタは、初期のころにご紹介済です。
Vol.004 - たくさんのユーザを登録する 上記を見ていただければ、決まったパターンのユーザを大量生成することができます。 後は、各自読んでいただければと思います。 …いやいや、ですが、パスワードに関しては、 驚くほど簡潔に終わらせてしまっています。いくら社内限定とはいえ、 簡単に推測できるパスワードを使用するのは、 あまりお勧めできるものではないですよね。(われながら…) ですので、今回は、ややきちんとしたパスワードを自動生成して、 複数のユーザをじゃんじゃん登録したいと思います。 ありがたいことに、かゆいところに手が届く的ツールは、 たいていだれかが開発してくださっています。
パスワードを自動的に生成してくれるツールも、もちろん存在します。
Fedora や Vine などでは、expect パッケージに含まれます。
さて、mkpasswd(もしくは mkpasswd.pl)コマンドを実行しますと、 適切なパスワードを標準出力に出力してくださいます。 % mkpasswd zxv7@N8mJ
引数なしですと、上記のように、9文字のパスワードを出力します。 % mkpasswd -l 16 c[j5Fwcmsmaydl4A
また、使用するパスワードの文字種も指定できます。
% mkpasswd -C 3 -s 2
{_T3Ig1Iv
…という感じで、mkpasswd コマンドを実行しても、
ファイルが消えたりパスワードが変更されたりなどといったことはありません。 mkpasswd コマンドの使いかたがわかったところで、本題に入ります。
まず、ユーザを一括登録する際に使用する、
CSV ファイルを生成するためのスクリプトを、作成したいと思います。 ユーザ名,パスワード,UID,GID,ユーザ情報,ホームディレクトリ,シェル
ユーザ名は、ここでは user001, user002, ... といった、
連番的なものにしたいと思います。 すると、上記 CSV ファイルを生成するスクリプトは、以下の通りです。
#!/bin/sh
MKPASSWD="/usr/bin/mkpasswd -s 0 -l 8"
BASEUID=500
GID=500
[ $# -eq 1 ] && TOTAL=$1 || TOTAL=100
num=1
while [ $num -le $TOTAL ]; do
printf "user%03d,`$MKPASSWD`,%d,$GID,User %03d,/home/user%03d,/bin/bash\n" $num `expr $BASEUID + $num` $num $num
num=`expr $num + 1`
done
そのまま実行しますと、user001〜user100 の100人分を出力します。 これを mkpasswdcsv.sh というファイル名で保存し、実行しますと、以下のように、 CSV 形式の情報がどどどと吐き出されます。 % chmod +x mkpasswdcsv.sh % ./mkpasswdcsv.sh user001,5ia4fAQk,501,500,User 001,/home/user001,/bin/bash user002,qi8clZC5,502,500,User 002,/home/user002,/bin/bash ...中略... user100,0Vkyu1Ow,600,500,User 100,/home/user100,/bin/bash そして、上記 CSV ファイルをもとに、ユーザを一括登録するスクリプトは、 以下のようになります。
#!/usr/bin/perl
my @salt = ('.', '/', 0..9, 'A'..'Z', 'a'..'z');
my $snum = $#salt + 1;
srand(time ^ $$ ^ unpack "%L*", `ps auxww|gzip`);
while(<>) {
chop;
my @dat = split(/,/);
my $passwd =
crypt($dat[1], join('', @salt[rand $snum, rand $snum]));
`useradd -p \"$passwd\" -u $dat[2] -g $dat[3] -c \"$dat[4]\" -d $dat[5] -s $dat[6] $dat[0]\n`;
print "$dat[0] : " . ("ok", "NG")[$? ? 1:0] . "\n";
}
パスワードの暗号化のために crypt が必要でしたので、 Perl スクリプトに仕立て上げました。とはいえ、基本的には、 useradd コマンドに、各種情報を横流しするだけの、ごく単純な作りだと思います。 これを、useraddcsv.pl という名前で保存しましたら、root の権限で、 以下のように実行してください。 # ./mkpasswdcsv.sh > user001-100.csv # chmod +x useraddcsv.pl # ./useraddcsv.pl < user001-100.csv
すると、user001〜user100 が、めでたく生成されるはずです。 以上、mkpasswd コマンドを使ってパスワードを自動的に生成し、 複数のユーザを一括して登録する方法を、ご紹介しました。
上記は、あくまでもひとつの例です。 ですが、肝の部分はそのまま使えると思いますので、ぜひ、スクリプトを作成して、 極力自動化することを目指してくださいませ。 宿題の答え前回の宿題は、 Mercurial によるバージョン管理を、最初からあらためて始めたいとき には、どうすればよいでしょうか? でした。 管理対象のトップディレクトリ直下に、.hg という名前のディレクトリが作られて、 その下にじゃんじゃんと情報が記録されていきます。 ですので、いままでのことをなかったことにするには、 .hg 以下をすべて消し去ってしまえばよいです。 % rm -rf .hg あっけないですね。以上、現場からお送りしました。
さて、予定より早く試合が終わりましたので、当初ご紹介の予定だった、 Mercurial の続きの一部を、ここでご紹介しましょう。(なんじゃそりゃ)
分散バージョン管理ツールというくらいですので、
複数のマシン上で分散して管理することができます。 % hg clone ssh://マシン名/パス たとえば、zion という名のマシンの /etc/httpd 以下をお取り寄せするには、 以下のように実行します。 # hg clone ssh://zion//etc/httpd
zion 上に同名のアカウントがないとか、root で ssh ができないという場合は、
他のユーザの権限でお取り寄せしましょう。たとえば、
zion 上のユーザ usu の権限で行うには、以下のように実行します。 # hg clone ssh://usu@zion//etc/httpd すると、カレントディレクトリに、httpd/ 以下の複製が作成されます。
さて、双方で開発を行いますと、同期をとる必要があると思います。 # hg pull
ただし、これだけでは、.hg/ 以下の情報が反映されるだけです。 # hg update
逆に、コピー先のマシンで変更し、commit した内容を、コピー元に反映する場合は、 commit した後に hg push を実行します。 # hg push こちらも、コピー元の .hg/ 以下を変更するだけです。 コピー元の実際のファイルに変更を反映させるには、 コピー元のマシン上で hg update を実行してください。 zion# hg update
ちなみに、コピー元のありかは、hg path でわかります。 # hg path default = ssh://usu@zion//etc/httpd
反響はあまりありませんでしたが、 Mercurial がよいツールだということにかわりはないと思います。ですので、 もし万が一触る機会がありましたら、ぜひぜひ使ってみてください。(嘆願) 今回の宿題今回の宿題は、 複数のユーザを一括で削除するスクリプトを作成しましょう。 です。 たくさんのユーザを登録する機会があるとするならば、その逆も真なりということで、 一括して削除しなければならないシチュエーションもあるのではないかと思います。 ユーザ名を引数で指定してもいいですし、 本題と同じようなCSVファイルを使用してもいいと思います。 各自よいなと思った方法で、実現してみてくださいませ。 あとがき昨年の黄金週間は、栗日記のブログパーツを作ることだけを目標にして、 いちおうブログパーツを完成させることができました。
今年は、諸般の事情により、絵をいくつか描く必要があり、
これといった目標は立てませんでした。
せっかくの休みですから、お仕事などから開放されて、
リフレッシュすることも大事だよな、と思うことにしました。
さて、絵を描くノルマを達成するついでに、
以前から描こうと思っていた絵も作ってみました。
個人的に思い入れのあるワークステーションをメインに、描きたいマシンを、
縮尺はやや無視して(本当は気づいたらおかしくなっていただけですけど…)、
もりもりと描いてみました。
今回も、ここまで読んでいただき、ありがとうございました。
「いますぐ実践! Linux システム管理」の解除は、以下からできます。
バックナンバーは、こちらにほぼ全部そろっています。
「栗日記」− 黄金週間中も、もりもり栗の絵を描いていましたよ。 |
▼ トップ ▼ プロフィール ▼ リンク
▼ 作ってみました
▼ せんでん
▼ 最近読んだ本 [X]
「粟津潔 デザインする言葉」 粟津潔「Binary Hacks」 高林 哲,鵜飼 文敏,佐藤 祐介,浜地 慎一郎,首藤 一幸 「Make: Volume01」 オライリー・ジャパン 「セーラが町にやってきた」 清野 由実 「手紙屋」 喜多川 泰 「Linuxカーネル2.6解読室」 高橋 浩和,小田 逸郎,山幡 為佐久 「人蕩し術」 無能 唱元 「子育てハッピーアドバイス2」 明橋 大二, 太田 知子 「ラッセル幸福論」 B. Russell 「それでも人生にイエスと言う」 Viktor Emil Frankl 「子育てハッピーアドバイス」 明橋 大二, 太田 知子 「考具」 加藤 昌治 「北欧デザイン<3>」 渡部 千春 「北斎の謎を解く」 諏訪 春雄 「体感美術館」 平野 暁臣 「チベット永遠の書」 Theodore Illion 「リナックスの革命」 Pekka Himanen 「人月の神話」 Frederick Phillips,Jr. Brooks 「ヤバい経済学」 Steven D. Levitt, Stephen J. Dubner 「小布施ッション<2001-2002>」 セーラ・マリ カミングス 「アンパンマン伝説」 やなせ たかし 「夢をかなえるゾウ」 水野 敬也 「ゲーム開発者のためのAI入門」 David M. Bourg, Glenn Seemann 「北欧デザイン<2>」 渡部 千春 「北欧デザイン<1>」 渡部 千春 「ヒューマン2.0」 渡辺 千賀 「中国・ロシア同盟がアメリカを滅ぼす日」 北野 幸伯 「超ロング・セラー 絶滅寸前商品」 湯浅 豊彦 「The BUG(ザ・バグ)」 すずき ひろのぶ,かとう みつあき 「デザインのデザイン」 原 研哉 「マキアヴェッリ語録」 塩野 七生 「ハンバーガーを待つ3分間の値段」 斎藤 由多加 「星の旅人-スペイン「奥の細道」-」 黛 まどか 「食品の裏側」 安部 司 「On Lisp」 Paul Graham 「ぼくが医者をやめた理由 つづき」 永井 明 「あなたならどうする?」 Jack Nikolaschka 「セキュアプログラミング−失敗から学ぶ設計・実装・運用・管理」 Mark G. Graff, Kenneth R. van Wyk 「「左利き」は天才?−利き手をめぐる脳と進化の謎」 David Wolman 「自分の中に毒を持て」 岡本 太郎 「アトピーの薬を減らす本」 田中 貴子 「岡本太郎「明日の神話」修復960日間の記録」 吉村 絵美留 「X51.ORG THE ODYSSEY」 佐藤 健寿 「アレルギーっ子の暮らし応援BOOK」 佐藤 のり子 「沖縄文化論」 岡本 太郎 「「伝説の社員」になれ!」 土井 英司 「コンピュータの構成と設計(上)」 Patterson & Hennessy 「カラスのジョンソン」 明川 哲也 「ドリルを売るには穴を売れ」 佐藤 義典 「頭がよくなる照明術」 結城 未来 「クロフォードのインタラクティブデザイン論」 Chris Crawford 「いじめの根を絶ち子どもを守るガイド」 Barbara Coloroso 「非常識のすすめ―逆発想の仏教論」 ひろさちや 「Linuxアドバンストネットワーク構築ガイド - HAサーバ構築編」 デージーネット 「イノベーションの達人!」 Tom Kelly, Jonathan Littman 「クリエーター50人が語る創造の原点」 小原 啓渡 「欺術 - 史上最強のハッカーが明かす禁断の技法」 Kevin Mitnick 「楽しい気象観察図鑑」 武田 康男 「入門 Ajax」 高橋 登史朗 「リリカルな自画像」 岡本 太郎 「やぎの目ゴールデンベスト」 林 雄司 「初めてのPython 第2版」 Mark Lutz,David Ascher 「鼻兎」 小林 賢太郎 「なぜ、これがアートなの?」 Amelia Arenas 「芸術起業論」 村上 隆 「まほう色の瞳」 Enrique Barrios 「ラーメンズつくるひとデコ」 ラーメンズ 「R25 つきぬけた男たち」 R25編集部 「美の呪力」 岡本 太郎 「しろのあお」 上大岡 トメ 「ザ・ゴール」 Eliyahu M. Goldratt 「ハッカーと画家」 Paul Graham 「岡本太郎に乾杯」 岡本 敏子 「Fedore Core Expert」 Software Design 「誰も知らない男」 ブルース・バートン 「子どもが育つ魔法の言葉」 ドロシー・ロー・ノルト 「国家の罠」 佐藤 優 「夜回り先生」 水谷 修 「やぎの目絵日記」 林 雄司 「7つの習慣」 スティーブン・R. コヴィー 「まろ、ん?−大掴源氏物語」 小泉 吉宏 「ザ・サーチ グーグルが世界を変えた」 ジョン・バッテル 「ポストモダン・マーケティング」 スティーブン ブラウン 「機動戦士ガンダムさん」 大和田 秀樹 「小エロのひみつ - Webやぎの目研究発表」 林 雄司 「これ、誰がデザインしたの?」 渡部千春 「60分間・企業ダントツ化プロジェクト」 神田 昌典 「ガルシアへの手紙」 エルバート ハバード 「人生は素晴らしいものだ」 オグ・マンディーノ 「ザ・マインドマップ」 トニー・ブザン,バリー・ブザン 「ワインバーグのシステム思考法」 G.M.ワインバーグ 「渋谷ではたらく社長の告白」 藤田 晋 「渋井真帆の日経新聞読みこなし隊」 渋井 真帆 「コラム息切れ」 小野 法師丸 「早朝起業」 松山 真之介 「変な人が書いた驚くほどツイてる話」 斎藤 一人 「35歳から仕事で大切にしたいこと」 村井 勉 「金融広告を読め」 吉本 佳生 「発想する会社!」 トム・ケリー,ジョナサン・リットマン 「エハイク」 吉田 戦車 「人生の旋律」 神田 昌典 「仕事の思想」 田坂 広志 「CPUの創りかた」 渡波 郁 「非常識な成功法則」 神田 昌典 …これ以前は記録してません…
▼ 気に入ってる本
| ||||||||||||||||||||||||||||||||||||||||