Linuxにはログインシェルを変更するchsh
というコマンドがあったのだがFedoraでは使えなくなっていた。
"chsh" Command is missing in Fedora 24 fresh install!
答え
util-linux-user
をインストールすればいい。
のだけれど、似て非なるコマンドにlchsh
というのがあり、こちらは最初から使えるので、本来はこちらを使うべきなんだろうと思う。
Bugzillaによれば、コンテナ向けイメージで必要無かったので消した、らしい。なんと乱暴な。
違い
man
によれば、機能の上では/etc/shells
を無視するか否か (lchsh
はShellのリストを無視する) くらいの違いしか無さそう。
どうもchsh
はLinux由来 (util-linux
) で、lchsh
はlibuser
由来のようで、つまり出自が違う。
もうちょっと調べてみると、CVEが出てきて、
libuser 脆弱性 (CVE-2015-3245 および CVE-2015-3246)
これによると
passwd
、chfn
、およびchsh
などの従来のプログラムは/etc/passwd
の一時コピーを使用して機能し、最終的にはrename()
機能を使って一時コピーの名前を変更しますが、libuser
は/etc/passwd
を直接変更します。
という動作の違いがあるようだ。
結論
え、じゃあchsh
のほうがよくね……?