Fedora7で知ったこと
今日はFedora7でいろいろ発見があったので、メモ
■ログイン時の初期化スクリプトについて
Fedora7 on coLinuxで、ログインするたびに、
$SHELL -c "echo > /dev/tcp/10.0.2.2/7000" 2>>/dev/null
と謎のエラーが出ていた理由が分った。
■ユーザを一括大量登録する方法
# newusers userlist.txt
■ログインパスワードの算出方法
crypt(3)関数を用いているらしいのだが、その仕様について
■newusersコマンド
newusersコマンドを用いると、/etc/passwdライクなテキストファイルを引数で与える
ことで、ユーザを一気に登録することができる。ただし、グループは作成しておくこと。
作成される各ユーザのホームディレクトリが空であること。に注意。
/etc/passwdライクなテキストファイルについての解説は後で書く。
なお、newusersコマンドはfedora-usermgmt-shadow-utils.noarchパッケージに含ま
れていた。
■bashの初期化スクリプトの動作
ログインシェルをbashにしてある場合、ログイン時には初期化処理が以下のように走る。
/etc/profile
→/etc/profile.d/*.sh
~/.bash_profile
→~/.bashrc
→/etc/bashrc
矢印は、スクリプトがスクリプトを呼ぶのを表現している。
ただし、非ログイン時(su - lucy(?))には、~/.bashrc以降が呼ばれる。
http://www.stackasterisk.jp/tech/engineer/lpic03_01.jsp
■Fedora 7 on coLinuxでログイン時に出力される謎のエラー
謎のエラーは、/etc/profile.d/espeaker.shが出力していた。ので、このファイルを
リネームし、espeaker.sh_MOVEDなどとすると、/etc/profileから起動されず、
エラーは出力されなくなった。
■/etc/shadowに保存されるユーザパスワードのハッシュ値
これは、crypt(3)関数によって生成されるのだが、入力された平文パスワードの他に、
引数saltによってばらつきがもたらされる。そのため、同じパスワードを入力しても
違うハッシュ値が生成される。
crypt(3)関数はmanによると
$ man crypt
CRYPT(3) Library functions CRYPT(3)NAME
crypt - password and data encryptionSYNOPSIS
#define _XOPEN_SOURCE
#include <unistd.h>char *crypt(const char *key, const char *salt);
■もともとの仕様
・keyが指し示すアドレスから、下位7bitずつ8character分合計56bitをキーとして用いる。
・saltが指し示すアドレスから、[a-zA-Z0-9./]の文字セット2character分、をsaltと
して、すなわち64x64=4096通り分アルゴリズムをばらつかせるために用いる。
・cryptは、固定文字列(通常はall-zeros)を56bitのキーを使って繰り返し暗号化し、
結果を13文字のpritable ASCII charactersとして、crypt(3)内のstaticな変数に
格納し、そこへのポインタを返す。なお13文字中の最初の2文字はsaltを表している。
■GNU拡張(passwdコマンドではこれが使われる模様)
glibc2バージョンでは、以下の拡張が行われている。
・saltの指し示す最初の3文字が"$1$"で始まり、それ以降最大8文字が続き、"$"で終わる場合は、DESではなく、MD5に基づいたアルゴリズムを用いる。
・この場合、staticな領域に書き込まれるのは"$1$<salt>$<encoded>"である。
<salt>は最大8文字、<encoded>は最大22文字である。<salt>も<encoded>も
[a-zA-Z0-9./]の文字セットからなる。
・keyは8byteでは無く、もっと用いられる。
・また、
Programs using this function must be linked with -lcrypt.
とのこと。
| 固定リンク
この記事へのコメントは終了しました。


コメント