sudoの所有権と権限が変更され、 `sudo:/ usr / local / bin / sudoはuid0によって所有され、setuidビットが設定されている必要があります`と表示されます

1
2022.01.22

プログラミングの仕事のために、MacOSMontereyで別の管理者アカウントを作成しました。次に、Homebrewディレクトリの所有権を変更して機能させる必要がありました。

 sudo chown -R $(whoami) /usr/local/Homebrew/ /usr/local/var/homebrew /Library/Homebrew/ /usr/local/Cellar

メインアカウントに戻ったとき、Homebrewは機能しません。そこで、新しいアカウントを削除して、ディレクトリの所有権をメインアカウントに戻すことにしました。

次のコマンドを実行したときに問題が発生し、元に戻す必要があります。

 sudo chown -R $(whoami) /usr

その後、sudoコマンドは機能せず、次の例外が表示されます。

 ➜  ~ sudo vi x.t
sudo: /usr/local/bin/sudo must be owned by uid 0 and have the setuid bit set

sudoの権限は次のとおりです。

 ➜  ~ ls -l /usr/bin/sudo                 
-r-s--x--x  1 root  wheel  1246544  8 Dec 10:39 /usr/bin/sudo

ルートアカウントをアクティブにして権限を変更しましたが、機能しません。 OSも再インストールしましたが、うまくいきません。 / usrディレクトリを同じOSの友人の/ usrディレクトリに置き換えようとしましたが、ディレクトリとそのファイルは読み取り専用です。リカバリモードターミナルでは変更できませんでした。

アドバイスを下さい。

回答
2
2022.01.22

基本的に、Homebrewは1人のユーザーのマシン用に設計されています。

そのユーザーが書き込み可能なディレクトリ(Intel / usr / local / bin上)が必要であり、インストール手順では、そのユーザーにディレクトリを所有させることでそれを行います。現在、Unixでは、2人のユーザーが同じディレクトリを所有することはできません。

複数のユーザーが使用するソフトウェアをインストールするための通常のUnixの方法(40年間行われている)は、rootまたはインストール用の特別なユーザーが所有するディレクトリにインストールすることです。したがって、すべてのユーザーが実行可能ファイルを実行できますが、更新するにはsudo権限が必要です。 (私の見解では、実行可能ファイルを実行するよりも更新の頻度がはるかに少ないため、これは問題ではありません)

Macの場合、通常のUnixの方法に固執する他のいくつかのパッケージマネージャーがあり、MacPorts、conda、fink、nixなどのいずれかを使用します。

2
2022.01.22

/ usr / local / bin / sudoの所有権をめちゃくちゃにしましたが、/ usr / bin / sudoは問題ないので、それを使用してもう一方を修復できます。

 /usr/bin/sudo root /usr/local/bin/sudo

関連するディレクトリだけでなく、すべての/ usrの所有権を変更したため、おそらく他の問題があります。修理の際しかし特定し、注意してください-あなたが問題を修復しようとするたびにだけでも大きな問題を作成します(そして、あなたが、/ usr置き換えることに成功したい場合、それは大きな問題を作成しているだろう悪循環にいるように思えます)。ますます大きなハンマーで物を叩いて修正しようとしないでください。それはただますます大きな混乱を引き起こします。

Ps関連xkcd: https://xkcd.com/349/