ubuntu26.04でnis
ubuntu 26.04 LTS(desktop)にnis-serverを入れてみます.
root@ubuntu26:~# cat /etc/os-release
PRETTY_NAME="Ubuntu 26.04 LTS"
:
root@ubuntu26:~#パッケージのインストール.
root@ubuntu26:~# apt update
root@ubuntu26:~# apt install ypserv (libnsl2 libnss-nis make nscd rpcbind yp-tools ypbind-mtが同時に入ります)nisドメイン名は、RHEL系なら「echo "NISDOMAIN=sybyl" >> /etc/sysconfig/network」で定義されますが、
ubuntuではypservの起動スクリプト中に「/etc/defaultdomain」を参照してnisドメインを定義していますので
root@ubuntu26:~# echo sybyl > /etc/defaultdomain
root@ubuntu26:~#とします。これでnisドメインの定義は完了.
次にnisクライアントへ提供するマップを定義します. ここでは passwd, group, netgrp, auto.master, auto.home の5種を提供します
それ以外にも提供できますが、使わないマップを提供しても意味がない
「/var/yp/Makefile」を修正します.
|
配布するnisマップのうち、auto.masterとauto.homeは元のファイルがないので空ファイルを用意します.
root@ubuntu26:~# touch /etc/auto.master /etc/auto.homeっでnisマスターを構築する
root@ubuntu26:~# nisdomainname sybyl
root@ubuntu26:~# systemctl enable ypserv --now
root@ubuntu26:~# /usr/lib/yp/ypinit -m
At this point, we have to construct a list of the hosts which will run NIS
servers. ubuntu26 is in the list of NIS server hosts. Please continue to add
the names for the other hosts, one per line. When you are done with the
list, type a <control D>.
next host to add: ubuntu26
next host to add:
The current list of NIS servers looks like this:
ubuntu26
Is this correct? [y/n: y]
We need a few minutes to build the databases...
Building /var/yp/sybyl/ypservers...
Running /var/yp/Makefile...
gmake[1]: Entering directory '/var/yp/sybyl'
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating hosts.byname...
Updating hosts.byaddr...
Updating netgroup...
Updating netgroup.byhost...
Updating netgroup.byuser...
Updating auto.master...
Updating auto.home...
Updating shadow.byname...
gmake[1]: Leaving directory '/var/yp/sybyl'
ubuntu26 has been set up as a NIS master server.
Now you can run ypinit -s ubuntu26 on all slave server.
root@ubuntu26:~#これでnisマスターが動きました
次に関連で yppasswd を有効にします。「yppasswdd.service」を見ると
root@ubuntu26:~# systemctl cat yppasswdd.service
# /usr/lib/systemd/system/yppasswdd.service
[Unit]
Description=NIS Users Passwords Change Server
Requires=rpcbind.service
Wants=network-online.target
After=network-online.target rpcbind.service
[Service]
Type=forking
PIDFile=/run/yppasswdd.pid
Environment=YPPASSWDDARGS= YPCHANGEOK=chsh YPPWDDIR=/etc
EnvironmentFile=-/etc/default/nis
ExecStartPre=/bin/domainname -F /etc/defaultdomain
ExecStart=/usr/sbin/rpc.yppasswdd -D $YPPWDDIR -e $YPCHANGEOK $YPPASSWDDARGS
[Install]
WantedBy=multi-user.target
root@ubuntu26:~#と「/etc/default/nis」の設定次第みたい。またこのファイル「/etc/default/nis」は ypserv.service と ypxfrd.service への設定ファイルでもあるようでその設定も加えた
「systemctl cat ypserv.service」「systemctl cat ypxfrd.service」
root@ubuntu26:~# vi /etc/default/nis
YPCHANGEOK="chsh -e chfn"
YPPWDDIR=/etc
YPPASSWDDARGS="--port 834"
YPSERVARGS="-p 838"
YPXFRDARGS="-p 966"
root@ubuntu26:~#この上で
root@ubuntu26:~# systemctl enable yppasswdd.service --now
root@ubuntu26:~# systemctl enable ypxfrd.service --now
root@ubuntu26:~# systemctl restart ypserv.service
root@ubuntu26:~# lsof -i -P | grep yp
rpc.ypxfr 5878 root 5u IPv4 30683 0t0 UDP *:966
rpc.ypxfr 5878 root 6u IPv4 35346 0t0 TCP *:966 (LISTEN)
rpc.ypxfr 5878 root 7u IPv6 35352 0t0 UDP *:966
rpc.ypxfr 5878 root 8u IPv6 35358 0t0 TCP *:966 (LISTEN)
rpc.yppas 6807 root 5u IPv4 37932 0t0 UDP *:834
rpc.yppas 6807 root 6u IPv4 37937 0t0 TCP *:834 (LISTEN)
rpc.yppas 6807 root 7u IPv6 36808 0t0 UDP *:834
rpc.yppas 6807 root 8u IPv6 36813 0t0 TCP *:834 (LISTEN)
ypserv 7230 root 5u IPv4 39207 0t0 UDP *:838
ypserv 7230 root 6u IPv4 39216 0t0 TCP *:838 (LISTEN)
ypserv 7230 root 7u IPv6 39225 0t0 UDP *:838
ypserv 7230 root 8u IPv6 39232 0t0 TCP *:838 (LISTEN)
root@ubuntu26:~#以上でnisマスターの設定は完了.
「apt install nis」でもいいみたいだけど、必要なパッケージだけ入れたいので
root@ubuntu22:~# apt update
root@ubuntu22:~# apt install ypbind-mt (同時にlibnss-nis nscd yp-toolsがインストールされる)nisマスターのように実際に稼働するスクリプトを見てみると
root@ubuntu24:~# systemctl cat ypbind.service
# /usr/lib/systemd/system/ypbind.service
[Unit]
Description=NIS Binding Service
Requires=rpcbind.service
Wants=network-online.target
After=network-online.target rpcbind.service
Before=systemd-user-sessions.service
Before=nss-user-lookup.target
[Service]
Type=forking
PIDFile=/run/ypbind.pid
Environment=YPBINDARGS=
EnvironmentFile=-/etc/default/nis
ExecStartPre=/bin/domainname -F /etc/defaultdomain
ExecStart=/usr/sbin/ypbind $YPBINDARGS
[Install]
WantedBy=multi-user.target
root@ubuntu24:~#こちらもnisdomainは「/etc/defaultdomain」で定めるみたい. 「/etc/yp.conf」にniddomainとypservのip/host名を入れればokっと思ったのだが違うみたい.
どうも「/etc/yp.conf」にはypservの宛先を入れるのみの様子
っで構築
root@ubuntu22:~# echo sybyl > /etc/defaultdomain
root@ubuntu22:~# echo "ypserver ubuntu26" > /etc/yp.conf
root@ubuntu22:~# systemctl enable ypbind --now
(確認)
root@ubuntu24:~# ypwhich
ubuntu26
root@ubuntu24:~# ypwhich -m
auto.home ubuntu26
passwd.byname ubuntu26
group.bygid ubuntu26
netgroup.byuser ubuntu26
ypservers ubuntu26
passwd.byuid ubuntu26
group.byname ubuntu26
auto.master ubuntu26
netgroup.byhost ubuntu26
shadow.byname ubuntu26
netgroup ubuntu26
hosts.byname ubuntu26
hosts.byaddr ubuntu26
root@ubuntu24:~#nis情報をnis masterから取得出来ているみたい.
っでnis情報をこのマシンのアカウント系で使えるように「/etc/nsswitch.conf」を修正します
root@ubuntu22:~# vi /etc/nsswitch.conf
:
passwd: files systemd nis
group: files systemd nis
shadow: files nis
automount: nis
:
root@ubuntu22:~#
}}
一応これで完成ですが、挙動が怪しい場合は IPAddressDeny を無効にします
root@ubuntu22:~# sed -i "s/IPAddressDeny=any/#IPAddressDeny=any/" /lib/systemd/system/systemd-logind.service
root@ubuntu22:~# systemctl daemon-reload
root@ubuntu22:~# systemctl restart systemd-logind.servicevi /etc/autofs.conf
master_map_name = auto.home
timeout = 300
map_type = nis
vi /etc/nsswitch.conf
automount: nisnisクライアントのsudoをnisマスターで管理したい.
nisに乗るようにgroupIDを1000番以上に変更して、nis groupマップにsudoエントリーを乗せる.
各nisクライアントから sudo group を削除する
これで行けるみたい
(nis server)
root@slurm:~# lsof |grep sudo
root@slurm:~# groupmod -g 5000 sudo
root@slurm:~# cd /var/yp
root@slurm:/var/yp# make
(nis client)
root@ubuntu22:~# ypcat group
illya:x:1000:
sudo:x:5000:illya
nogroup:x:65534:
root@ubuntu22:~# cp /etc/group /etc/group.orig
root@ubuntu22:~#
root@ubuntu22:~# delgroup sudo
Removing group `sudo' ...
Done.
root@ubuntu22:~#留意点: nscdがnis情報をキャッシュするのでこれが動いていると変更情報の反映が遅れる.