パスワードを忘れた? アカウント作成
13328042 submission
バグ

数字で始まるユーザー名は不正か

タレコミ by osdn
osdn 曰く、
systemd のユニットファイルで User=0sdn のような指定をすると、0sdn という名前のユーザーが存在してもしなくても、0sdn ではなく root として実行されるそうです。これは systemd のバグでしょうか。それとも設定ファイルが間違っているだけでしょうか。 報告を受けた systemd 開発者の Lennart Poettering 氏は、「十進数から始まるユーザー名が不正なのであって systemd のバグではない」と主張します。しかし、そのようなユーザー名が useradd では問題なく作成できたり、adduser でも設定により作成できると指摘され、氏はこう返答しました。「(1) systemd は色々なシステムで動くようにするため、制限が厳しいこともある。(2) ユニットファイルに User= で指定するユーザー名は一般ユーザーではなくシステムユーザーであるから、厳しく制限して当然。(3) systemd では、文法エラーはログしてスルーというポリシーである。」

つまり、ユーザー名が間違っているだけなら fatal error として停止するが、十進数で始まる名前は文法的エラーなので、ログだけ取って実行は続け、それゆえに root として実行されるということです。この点、開発者が「バグはない」と言い張る一方で、ユーザー名を認識できないバグと、そのまま root で動くバグの二つだろうという意見もあります。

あまり関係ありませんが、ついでに systemd は名前解決のコードにもバグがあり、バージョン 223 以降、つまりここ 2 年ほどの間の systemd は TCP ペイロードの細工により任意のコード実行まで可能かもしれない脆弱性がありました。systemd-resolved がデフォルトで起動されるシステムはあまり多くないようですが、ご注意ください。

情報元へのリンク
この議論は、 ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
typodupeerror

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

読み込み中...