[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:09453] Re: NIS cannot login (client Debian 2.0, serverFreeBSD 2.2.6)
渡邉@会津大%NIS設定の悪夢が覚めない です。
1998年10月22日(木) 20時41分37秒頃に、
nakano@xxxxxxxxxxxxxxxxさんが書かれた "[debian-users:09257] Re: NIS cannot login (client Debian 2.0, serverFreeBSD 2.2.6)"
というメールからの引用です。
フォロー有り難うございます。
>> NISを利用してクライアントからのloginができず困っています。
>> 以下に状態などを書きますと…
>>
>> NISサーバ
>> - FreeBSD 2.2.6
>> - shadow passwd使用、 DES install済。
>[]
>> NISクライアント
>> - Debian GNU/Linux 2.0
>> - shadow passwd使用せず。
nakanoさん> クライアントから ypcat passwd したとき、パスワードフィールドは * に
nakanoさん>なっているのではないかと想像します。 これではマッチしませんよね ;-)
確かにその通りでした。
最後に載せるプログラムを実行した結果は以下のようになりました。
○FreeBSDのclient,serverマシンから
rootで実行 -> password.: [encoded password]
一般userで実行 -> password.: [*]
○Linuxのclientマシンから実行
rootで実行 -> password.: [*]
一般userで実行 -> password.: [*]
nakanoさん>おそらく NIS クライアントも shadow にしないといけないと思います。
『Linux Shadow Password HOWTO』
2.1 Shadowパスワードを使わない方が良い場合
にあたるようなのでshadowにはしていません。
#でも どうしてなのか理由が書いてない…。
nakanoさん> で、確か FreeBSD と linux では shadow に対応するマップ名が違う...
(省略)
自分で調べた結果、見に行くmap名はこうなっているようです。
○FreeBSD master.passwd.by{name,uid} <- encodeされたpasswordが入ってる
passwd.by{name,uid} <- passwordが[*]になっている
○Linux passwd.by{name,uid}
Linuxからloginする時にpasswd.by{name,uid}にencodeされた passwordが
入っていないから認証に失敗するのだという考えています。
nakanoさん># サーバを非 shadow 化するのが一番楽だとは思いますが...
同じく非shadowにするのが早いと思ったのですが、
「セキュリティーレベルが下がるので他の方法でなんとかしてくれ」
と言われて困っています。
client側で見にいくmap名を変える設定fileなどは存在するのでしょうか?
それともどこかの関数をいじらないと変更できないのでしょうか?
---------------------------------------------------------------------------
#include<stdio.h>
#include<pwd.h>
#include<sys/types.h>
int main(int argc, char *argv[])
{
struct passwd *pwd;
if(argc != 2)
{
fprintf(stderr,"Usage: getwpnam username\n");
exit(1);
}
pwd=getpwnam(argv[1]);
if(pwd != NULL)
{
printf("name.....: [%s]\n",pwd->pw_name);
printf("password.: [%s]\n",pwd->pw_passwd);
printf("usr id...: [%d]\n",pwd->pw_uid);
printf("group id.: [%d]\n",pwd->pw_gid);
printf("gecos....: [%s]\n",pwd->pw_gecos);
printf("directory: [%s]\n",pwd->pw_dir);
printf("shell....: [%s]\n",pwd->pw_shell);
}
else
{
fprintf(stderr,"Use \"%s\" not found!\n",argv[1]);
}
exit(0);
}