- PR -

newusersコマンドでのユーザ一括登録でパスワードが9文字移行無効になる

1
投稿者投稿内容
Kyalo
会議室デビュー日: 2005/05/20
投稿数: 6
投稿日時: 2005-05-20 10:08
こんにちは。

newusersコマンドを使用してユーザの一括登録を行っています。
しかし、登録後ログインをする際に9文字目移行のパスワードが無効になって
いる事が分かりました。パスワードの8文字目までを正確に入れれば、
9文字目移行は何を入れても入れてしまうのです。

実際に使用しているファイルは下記の様な形です。
#cat users.txt
user001:mypasswd001::::/home/user001:/bin/bash
user002:mypasswd002::::/home/user002:/bin/bash
・・・
・・・

ユーザ登録後、
# passwd ユーザ名
を使用し、パスワードを変更すると9文字目移行も効いてきます。

OSはRedHat9を使用しています。
何故、バッチ処理を行ったときのみ9文字目移行のパスワードが無効になるのかが
分からなくて困っています。
ご存知の方はいらっしゃいませんか?
よろしくお願いいたします。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-05-20 10:47
こんにちは。
引用:
しかし、登録後ログインをする際に9文字目移行のパスワードが無効になって
いる事が分かりました。パスワードの8文字目までを正確に入れれば、
9文字目移行は何を入れても入れてしまうのです。


これは、パスワードが DES を使用した暗号化がされるからでしょうね。
この場合は、パスワードの有効長は 8文字になります。
※ 長いパスワードに対応しているのは md5を使用した暗号化
※ /etc/shadow を見れば、パスワード部分の形式が明らかに違うのが分かります
crypt(3)が参考になるでしょうか。

newusers の仕様の問題と考えられるので、良い対処は無さそうに思います。
別途パスワード変更のスクリプトを作るくらいでしょうか?
Kyalo
会議室デビュー日: 2005/05/20
投稿数: 6
投稿日時: 2005-05-20 15:57
ありがとうございます。

/etc/shadowを確認してみました。
コマンドで追加したユーザとバッチ処理で登録したユーザでは、
パスワードの形式が違っていました。
バッチ処理を行うと、md5ではなくDESで登録されてしまうんですね・・・。

パスワード変更のスクリプトで対応したいと思います。
ありがとうございました。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2005-05-21 00:11
こんばんは。
ちょっとパスワード変更のスクリプトが思いついたので載せてみます。

# while IFS=':' read U P D; do echo "$P" | passwd --stdin "$U"; done < users.txt

※ users.txt は、最初の Kyaloさんの書き込みと同じく、newusers(8)で使用する形式とします。

スクリプトというよりはワンライナーですね。
なお、動作を保証している訳ではありませんので、もし万が一本番で使用されるような方がいらしたら、事前に検証するように注意してください。

以上、ご参考まで。

[ メッセージ編集済み 編集者: angel 編集日時 2005-05-21 01:08 ]
1

スキルアップ/キャリアアップ(JOB@IT)