背景
研究室の計算機でdockerを使いたいといわれたがdockerグループなんて設定したくないのでrootless dockerを使いたい. sshでログインすることを前提.
問題
XDG_RUNTIME_DIR
がうまく設定されないせいで動かない. 調べたらを設定すればいいらしいがそんな物はなく, どうもPAMがそれを作るらしい. ローカルでログインするとPAMが叩かれるっぽいのだがなぜかsshだと動かない. sudo loginctl enable-linger <user名>
で特定のuserのsshログインで/run/usr/$UID
が生成されるように設定できるっぽいのだがno such fileとかいわれる.
原因
systemdのバグ
https://bugs.launchpad.net/ubuntu/+source/nis/+bug/1934393
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1915502
要は起動時にネットワークにアクセスできないようになっているので, NISからデータが取り込めず, loginctl
を叩いてもNIS上のアカウントは設定できなくなっていた.
解決策
NISサーバはIPv4の範囲にたっているので, IPv4のアクセスをとりあえず全部許可すれば解決. 上のlaunchpadでもちょっとセキュリティ的にどうなんだろうねとなっているworkaround. そのうち直るのかな......
$ sudo systemctl edit systemd-logind
(opens an editor, put in the text below and save it)
[Service]
RestrictAddressFamilies=AF_INET
IPAddressAllow=any
$ sudo systemctl daemon-reload
$ sudo systemctl restart systemd-logind
これでssh越しでもログイン時に/run/usr/$UID
が作られるようになるのでこれをXDG_RUNTIME_DIR
に設定すれば良い.