[Armadillo:07289] Re: Armadillo-420でのパスワード変更

Masahiro Iino email@hidden
2011年 5月 27日 (金) 13:46:16 JST


飯野です。

ご返答、ありがとうございます。
また、色々な方からのご助言ありがとうございます。

user/busybox/libbb/messages.cの
#define SHADOW_FILE        "/etc/shadow"
を
#define SHADOW_FILE        "/etc/config/shadow"
に変更して動かしてみました。
rootでは、passwd変更が上手く行くようになりました。
/etc/config/shadowが変更され、shadow-も/etc/configの下に出来ています。
しかし、一般ユーザーでは、最初のOld password:入力時点で、
Incorrect password.となって弾かれます。
デバッグ文を入れたりして実験しました所、どうやら、
passwd_main内のgetspnumでnullが返ってきてしまう為、pwd_to_spwdを
呼び出し、/etc/passwdでshadowである事を定義しているxがそのままパスワード
として扱われ、その為に、入力パスワードと不一致だと言っているようです。

もしかしてと思い、デフォルトのイメージにて、guestでログインして、
パスワード変更を試みましたが、同じ様に失敗します。
rootであればOKです。
rootであればOKな理由は、旧パスワードを尋ねないからです。
つまりgetspnumが元凶なようですが、今はgetspnumのソースはどこだ?
と探している所です。

何か情報あればご助言下さい。

(2011/05/26 19:24), Takenoshita Koyo wrote:
> 竹之下です。
> 
>> コマンドにてパスワードを変更すると、リンクが消され、/etc/shadowに
>> 実体が新たに作られてしまいます。
> これは、一度/etc/shadow-というファイルを更新して、
> それを/etc/shadowにrename()するという処理をしているから
> のようです。
> atmark-dist/user/busybox/loginutils/passwd.c::update_passwd() 参照
> 
> 対処法としては、
> 1. update_passwd() を変更して、リネームしないようにする
> 2. /etc/shadowの代わりに、常に/etc/config/shadowを使うようにする
> といった方法が思いつきます。
> 
> 後者は、
> user/busybox/libbb/messages.c
>> #define SHADOW_FILE        "/etc/shadow"
> という行を書き換えて、ビルドしなおしてあげれば良いのではないかと思います。
> 
> ただ、busybox全体でこの定義を流用しているので、busyboxの他の
> コマンドも/etc/config/shadowを参照しにいくようになる気がします。
> この影響がどこまで及ぶかは、分かりません。
> 
> Masahiro Iino さんは書きました:
>> 飯野と申します。
>>
>> Armadillo-420にてパスワードを変更出来る様にしたいと思い、
>> /etc/config/shadowに実体を置き、/etcからリンクを貼りました。
>> これでもパスワード認証は問題なく出来るのですが、passwd
>> コマンドにてパスワードを変更すると、リンクが消され、/etc/shadowに
>> 実体が新たに作られてしまいます。
>> これだと、flatfsdで保存しても保存されないのですが、何か良い方法は
>> ありませんでしょうか?
>> #勿論、出来た/etc/shadowを/etc/configにコピーすればいいのはわかって
>> #いますが、ユーザにそれをやれというのも酷な気がするので・・・
>>
>> ご教授頂けると幸いです。
>> _______________________________________________
>> armadillo mailing list
>> email@hidden
>> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>>
> 



armadillo メーリングリストの案内