FreeBSD 11をNISサーバーに、Ubuntu 16.04をNISクライアントするための設定 - 1だけで終わりかと思ったら、まだありました。
http://www.sakashita-net.jp/2018/01/freebsd-11nisubuntu-1604nis-1.html
Ubuntu 16.04ではシェルは/binにあります。FreeBSD 11は追加のシェル、たとえばbashやzshは/usr/local/binにあります。この状況でNISでユーザーを共有しようとすると、シェルの場所を統一する必要があります。変更が少ないことを優先して、FreeBSD 11で、これらのシェルについて/binから/usr/loca/binへシンボリックリンクを作ることにしました。
$ cd /binそしてNISサーバーでのシェルの記述をすべて/binに変更しました
$ ls -l *sh
lrwxr-xr-x 1 root wheel 19 1月 11 2017 bash -> /usr/local/bin/bash
-r-xr-xr-x 2 root wheel 423784 1月 16 12:24 csh
-r-xr-xr-x 1 root wheel 161936 1月 16 12:24 sh
-r-xr-xr-x 2 root wheel 423784 1月 16 12:24 tcsh
lrwxr-xr-x 1 root wheel 18 1月 11 2017 zsh -> /usr/local/bin/zsh
$
$ ypcat passwdすると、このユーザーでpasswdコマンドでパスワード変更ができなくなりました。
…
user1:x:2002:2002:USER1:/home/user1:/bin/bash
…
$
$ passwdエラーメッセージは以下のようになっています。
Changing local password for user1
Old Password:
New Password:
Retype New Password:
passwd: pam_chauthtok(): error in service module
$
$ sudo cat /var/log/message/bin/bashが/etc/shellsに入っていないのでエラーになっているようです。こんなところで、/etc/shellsが関係するとは思いませんでした。さっそく/etc/shellsに追加しました。
…
Jan 6 12:44:13 host rpc.yppasswdd[108]: /bin/bash is not a valid shell
Jan 6 12:44:13 host rpc.yppasswdd[108]: rejecting change attempt: bad arguments
Jan 6 12:44:13 host rpc.yppasswdd[108]: client address: 172.27.40.1 username: ss
Jan 6 12:44:13 host yppasswd: in pam_sm_chauthtok(): yppasswd_remote(): NIS password update failed: kona: RPC: Server can't decode arguments
…
$
$ cat /etc/shellsこれについて調べてみると以下に記述がありました。
# $FreeBSD: releng/11.1/etc/shells 59717 2000-04-27 21:58:46Z ache $
#
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/sh
/bin/csh
/bin/tcsh
/usr/local/bin/zsh
/usr/local/bin/rzsh
/usr/local/libexec/git-core/git-shell
/usr/local/bin/bash
/usr/local/bin/rbash
/bin/bash
/bin/zsh
$
RPC.YPPASSWDD私が見た範囲ではFreeBSDのmanには記述がないように思えます。
https://linuxjm.osdn.jp/html/ypserv/man8/rpc.yppasswdd.8.html
…
-e [chsh|chfn]
デフォルトでは、 rpc.yppasswdd は passwd エントリにおけるシェルや GECOS フィールドのユーザーによる変更を許さない。 -e オプションを用いると、これらのそれぞれを有効にできる。 ypchsh(1) のサポートを有効にした場合には、ユーザーが選択できるシェルをすべて /etc/shells に記述する必要があることに注意すること。
…