sudo: 「実効 uid が 0 ではありません。sudo は setuid root としてインストールされていますか?」 Raspberry Pi で

sudo: 「実効 uid が 0 ではありません。sudo は setuid root としてインストールされていますか?」 Raspberry Pi で

私は数週間にわたって Raspberry Pi を使用しており、大学のプロジェクトのためにあらゆる設定に多くの時間を費やしてきました。

Samba をインストールして、すべてをネットワーク フォルダーとして保存したいと考えました。 を使用しましたsudo chown -R pi:pi /

現在、sudo が壊れており、sudo: effective uid is not 0, is sudo installed setuid root?実行するたびに次のように出力されます (たとえば、sudo nano)。

これは修復できますか? すべてを再インストールしなくても済むように助けてください。過去数週間に何をしたかさえ思い出せません... 作業が多すぎます。

答え1

実行すると、sudo chown -R pi:pi /基本的にシステム上のすべてのファイルの所有権が失われます。

残念ながら、あなたの場合は再インストールが最も簡単なオプションでしょう。適切な所有権を手動で復元しようとすると (おそらく別のコンピューターを使用して)、非常に面倒でエラーが発生しやすくなります。再インストールする前に Raspberry Pi のストレージをイメージ化することをお勧めします。そうすれば、再インストール後に行った変更の一部を復元できます。

答え2

実行可能ファイル内のビットsetuidは、問題のファイルの実効 UID が、呼び出し元/実行ユーザーの UID ではなく、所有ユーザーの UID に変更される可能性があることを意味します。

を実行すると、sudo chwon -R pi:pi /はユーザー(ゼロ以外の UID)sudoによって所有されるようになり、そのため、がその実効 UID を 0 ( ) に変更できるかどうかをチェックすると、所有者がもういないため変更できないことがわかります。pisudorootroot

chown root:rootを実行して修復を試みることができますsudoが、十分な権限がないと表示される場合があり、再インストールが唯一の可能性になる可能性があります。

答え3

最も簡単な方法は、「過去数週間」に変更されたすべてのファイルを見つけて保存し、再インストールして変更を再適用することです。

  1. レスキューディスクを起動します。
  2. 「最近」変更されたファイルを見つけて保存します -それがPi システムのルートであり、レスキュー ディスクのルートではないことcd /mnt/root && tar czvf /mnt/usb/tarball.tgz --newer-mtime='2015-10-01 00:00:00' .を確認し、 USB スティックなどの安全な場所に保存します。/mnt/root/mnt/usb
  3. 再インストール
  4. 大切に保存したファイルを復元します -cd / && tar xzvf /root/tarball.tgz
  5. リブート

関連情報