🐧 Linux 総合学習プラットフォーム

chown -R をルート近くで走らせて、システム全体の所有権を崩壊させてしまった

症状(よく出るエラー)

chown -R user:user / home/user のようにパスを打ち間違えた直後から、sudo: /etc/sudoers is owned by uid 1000, should be 0 などのエラーが噴出。sudo も ssh も動かなくなる。

原因

chown -R は指定したパス以下の所有者を無差別に書き換える。「/ home」のようにスペースが混入すると / と home の2つの引数と解釈され、ルート以下全体が対象になる。/etc/sudoers や /usr/bin/sudo など、root 所有かつ厳密なパーミッションを前提とするファイルが多数あるため、一括変更した瞬間に認証・特権系がまとめて機能不全になる。

直し方

軽症なら chown root:root /usr/bin/sudo /etc/sudoers && chmod 4755 /usr/bin/sudo && chmod 440 /etc/sudoers のように要所を root 所有へ戻すが、全域に及んだ場合は正常なシステムとの突き合わせが必要で、実質的に再インストールかバックアップからの復元が最短になる。予防としては chown -R をルート直下で使わない、実行前に echo で対象パスを展開して確認する、可能なら --preserve-root 付きの操作に限定する。

▶ 学習アプリでしっかり学ぶ