ubuntu22.04でnis

nisマスターの構築

ubuntu 22.04.3 LTS(desktop)にnis-serverを入れてみます.

root@slurm:~# cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
 :
root@slurm:~#

パッケージのインストール.

root@slurm:~# apt update
root@slurm:~# apt install ypserv   (libnss-nis, nscd, rpcbind, ypbind-mt, yp-toolsが同時に入ります)

nisドメイン名は、RHEL系なら「echo "NISDOMAIN=sybyl" >> /etc/sysconfig/network」で定義されますが、
ubuntuは「/etc/sysctl.conf」の中で定義され、nisdomainnameとするとこの値が表示される.

root@slurm:~# vi /etc/sysctl.conf
 :
kernel.domainname = sybyl
 :
root@slurm:~# reboot
 :
root@slurm:~# nisdomainname
sybyl
root@slurm:~#

っが、ypservの起動スクリプトを読むと「/etc/sysctl.conf」は考慮されず「/etc/defalutdomain」でnisドメインを決めています. なんで?

ここでは「/etc/sysctl.conf」にも「/etc/defalutdomain」にもnisdomainを定義して構築を進めます

root@slurm:~# echo "sybyl" > /etc/defalutdomain

nisサーバから提供するnisマップは passwd, group, netgrp, auto.master, auto.home の5種.
なので「/var/yp/Makefile」を修正します.

--- /var/yp/Makefile.orig       2021-01-23 23:43:43.000000000 +0900
+++ /var/yp/Makefile    2023-12-05 23:07:16.423292319 +0900
@@ -107,7 +107,7 @@
 # If you don't want some of these maps built, feel free to comment
 # them out from this list.
 
-ALL =   passwd group hosts rpc services netid protocols netgrp
+ALL =   passwd group hosts netgrp auto.master auto.home
 #ALL += publickey mail ethers bootparams printcap
 #ALL += amd.home auto.master auto.home auto.local
 #ALL += timezone locale networks netmasks

配布するnisマップのうち、auto.masterとauto.homeは元のファイルがないので空ファイルを用意します.

root@slurm:~# touch /etc/auto.master /etc/auto.home

っでnisマスターを構築する

root@slurm:~# /usr/lib/yp/ypinit -m
 
At this point, we have to construct a list of the hosts which will run NIS
servers.  slurm 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:  slurm
        next host to add:
The current list of NIS servers looks like this:
 
slurm
 
Is this correct?  [y/n: y]  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...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating passwd.byuid...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating group.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating group.bygid...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating hosts.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating hosts.byaddr...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating netgroup...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating netgroup.byhost...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating netgroup.byuser...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating auto.master...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating auto.home...
failed to send 'clear' to local ypserv: RPC: Program not registeredUpdating shadow.byname...
failed to send 'clear' to local ypserv: RPC: Program not registeredgmake[1]: Leaving directory '/var/yp/sybyl'
 
slurm has been set up as a NIS master server.
 
Now you can run ypinit -s slurm on all slave server.
root@slurm:~#

ここでnisサーバとなる起動スクリプト「/lib/systemd/system/ypserv.service」を確認します.

root@slurm:~# cat /lib/systemd/system/ypserv.service
[Unit]
Description=NIS/YP (Network Information Service) Server
Requires=rpcbind.service
After=network.target rpcbind.service
Before=ypbind.service
 
[Service]
Type=forking
PIDFile=/run/ypserv.pid
Environment=YPSERVARGS=
EnvironmentFile=-/etc/default/nis
ExecStartPre=/bin/domainname -F /etc/defaultdomain
ExecStart=/usr/sbin/ypserv $YPSERVARGS
 
[Install]
WantedBy=multi-user.target
root@slurm:~#

「/etc/default/nis」がRHEL系でのsysconfigなファイルになりそう
YPSERVARGSでypservのport番号とかできそう. 別にfirewallは使わないけど使用するポートを固定にしておきます

root@slurm:~# vi /lib/systemd/system/ypserv.service
 :
Environment=YPSERVARGS="-p 834"
 :
root@slurm:~# systemctl enable ypserv --now    <-- ypserv を起動します
 
root@slurm:~# 
root@slurm:~# lsof -i |grep ypserv
ypserv    26055            root    5u  IPv4 212744      0t0  UDP *:834
ypserv    26055            root    6u  IPv4 212753      0t0  TCP *:834 (LISTEN)
ypserv    26055            root    7u  IPv6 212762      0t0  UDP *:835
ypserv    26055            root    8u  IPv6 212767      0t0  TCP *:835 (LISTEN)
root@slurm:~#

"-p 834"とすると、連続して次のportも使用するみたい.

次にyppasswdです. 同じく「/lib/systemd/system/yppasswdd.service」を見ると

root@slurm:~# cat /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@slurm:~#

なのでこちらも「/etc/default/nis」で定義すればいいのかなと見える. ここでは品がないけどyppasswdd.serviceファイルに直接書く

root@slurm:~# vi /lib/systemd/system/yppasswdd.service
 :
Environment=YPPASSWDDARGS="--port 836"  YPCHANGEOK=chsh YPPWDDIR=/etc
 :
root@slurm:~# systemctl enable yppasswdd --now
 
root@slurm:~# lsof -i | grep yppas
rpc.yppas 26203            root    5u  IPv4 213377      0t0  UDP *:836
rpc.yppas 26203            root    6u  IPv4 213382      0t0  TCP *:836 (LISTEN)
rpc.yppas 26203            root    7u  IPv6 213387      0t0  UDP *:837
rpc.yppas 26203            root    8u  IPv6 213392      0t0  TCP *:837 (LISTEN)
root@slurm:~#

以上でnisマスターの設定は完了.

nisクライアント

「apt install nis」でもいいみたいだけど、必要なパッケージだけ入れたいので

root@ubuntu22:~# apt update
 
root@ubuntu22:~# apt install ypbind-mt    (同時にlibnss-nis nscd yp-toolsがインストールされる)

nisマスターのように実際に稼働するスクリプトを見てみると

root@ubuntu22:~# cat /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@ubuntu22:~#

こちらも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 slurm" > /etc/yp.conf
 
root@ubuntu22:~# systemctl enable ypbind --now
 
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.service

ubuntu20.04の場合

vi /etc/autofs.conf
  master_map_name = auto.home
  timeout = 300
  map_type = nis
vi /etc/nsswitch.conf
  automount: nis

sudoの一元管理

nisクライアントの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情報をキャッシュするのでこれが動いていると変更情報の反映が遅れる.

最新の60件
2024-09-16 2024-09-14 2024-09-12 2024-09-09 2024-09-08 2024-09-06 2024-09-05 2024-09-04 2024-09-02 2024-09-01 2024-08-31 2024-08-28 2024-08-21 2024-08-18 2024-08-17 2024-08-16 2024-08-15 2024-08-14 2024-08-11 2024-08-09 2024-08-01 2024-07-27 2024-07-26 2024-07-16 2024-07-15 2024-07-12 2024-07-07 2024-06-22 2024-06-21 2024-06-17 2024-06-14 2024-06-11 2024-06-10 2024-06-08 2024-06-07 2024-06-02 2024-06-01 2024-05-30 2024-05-16 2024-04-26 2024-04-15 2024-04-11

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-04-15 (月) 19:05:36