Table of Contents

概要

設定方法

管理ノード

  1. NISのパッケージをインストールする
    sudo apt install nis
    • 途中でNISドメイン名を聞かれので、好きなように設定してください(以下では kanri.nis とします)
    • 「NISドメイン名」はNISにより設定を共有するコンピュータのグループの名前のことで、DNSのドメイン名とは別物です
    • NISドメイン名は /etc/defaultdomain に保存されるので、変更したくなったらこのファイルを編集してください
    • 設定したNISドメイン名は次のコマンドで確認できます
      $ domainname 
  2. /etc/defalut/nis に管理ノードをNISサーバとすることを指定する
    $ sudo vi /etc/defalut/nis
    nis
    ...
    # Are we a NIS server and if so what kind (values: false, slave, master)?
    NISSERVER=master
    
    # Are we a NIS client?
    NISCLIENT=false
    ...
  3. /etc/yp.conf にNISサーバのIPアドレスまたはホスト名を指定する
    $ sudo vi /etc/yp.conf
    yp.conf
    ypserver 192.168.0.1
  4. /etc/ypserv.securenets の最終行をプライベートLANのネットマスクとIPアドレスに変更する
    $ sudo vi /etc/ypserv.securenets
    ypserv.securenets
    (略)
    # This line gives access to everybody. PLEASE ADJUST!
    #0.0.0.0	0.0.0.0
    255.255.255.0	192.168.0.0	
    • これによりプライベートネットワークからのみNISサーバへの接続を許可します
  5. NISを再起動します
    $ sudo systemctl restart rpcbind nis 
  6. NISデータベースを更新する
    $ sudo /usr/lib/yp/ypinit -m
    
    At this point, we have to construct a list of the hosts which will run NIS
    servers.  kanri 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:  kanri
            next host to add:  # Ctrl + D キー
    The current list of NIS servers looks like this:
    
    kanri
    
    Is this correct?  [y/n: y]  y
    We need a few minutes to build the databases...
    (以下略)

計算ノード

  1. NISによってUbuntuがハングアップするのを防ぎます。
    $ sudo vim /lib/systemd/system/systemd-logind.service
    # IPAddressDeny=any をコメントアウト
    $ sudo systemctl daemon-reload
  2. NISのパッケージをインストールする
    $ sudo apt install nis
    • NISドメイン名は管理ノードで設定したものと同じにする
  3. /etc/yp.conf にNISドメイン名とNISサーバのIPアドレスを指定する
    $ sudo vi /etc/yp.conf
    yp.conf
    domain kanri.nis server 192.168.0.1
  4. /etc/nsswitch.conf に、/etc/ にある passwd, group, shadow, hosts はNISサーバのものを使用するように指定する(OSのバージョンによって微妙に変わってくるが、それぞれの項目の先頭に nis を付け加えるだけでオーケー)
    $ sudo vi /etc/nsswitch.conf
    nsswitch.conf
    (略)
    passwd:         nis files systemd
    group:          nis files systemd
    shadow:         nis files
    gshadow:        files
    
    hosts:          nis files dns
    (略)
    • ユーザ情報に加えてNISサーバで行われる名前解決も共有するようにしています
    • これにより、各計算ノードで /etc/hosts を編集する必要がなくなります
    • グループの管理は管理ノードのみで行いたいため、gshadow(グループのパスワードが暗号化されて入っているファイル)は共有しません
  5. NISを再起動します(やたら時間がかかります。10分くらい、原因不明)
    $ sudo systemctl restart rpcbind nis 
  6. どのマシンの情報が共有されているかを見て、正しく設定されたか確認します
    $ ypwhich
    kanri

使い方

  1. ユーザーを追加するには、管理ノードで次のようにします(以下はユーザーsugimotoを追加する場合)
    $ sudo adduser sugimoto
    $ sudo make -C /var/yp
    • NISサーバの共有する情報を変更したとき(つまりユーザーの追加したり、ホストファイルを編集したりしたとき)は、その都度 make -C /var/yp を実行する必要があります
  2. 新しいユーザで計算ノードにログインできるか確認します
    $ ssh sugimoto@keisan11

補足

ログインにやたら時間がかかる場合

$ sudo vim /lib/systemd/system/systemd-logind.service
# IPAddressDeny=any をコメントアウト
$ sudo systemctl daemon-reload

udevのアップデートに失敗する場合

$ sudo vim /lib/systemd/system/systemd-udevd.service
# IPAddressDeny=any をコメントアウト
$ sudo apt update
$ sudo apt upgrade -y

参考