sudo-Eigentum und -Berechtigung geändert und zeigt `sudo: /usr/local/bin/sudo muss UID 0 gehören und das setuid-Bit gesetzt haben`

Ich habe einen weiteren Admin-Account in meinem MacOS Monterey für meinen Programmierjob erstellt. Dann musste ich den Besitz von Homebrew-Verzeichnissen ändern, damit es funktioniert.

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

Als ich zu meinem Hauptkonto zurückkehrte, funktioniert Homebrew nicht. Also beschließe ich, das neue Konto zu löschen und den Besitz von Verzeichnissen wieder auf mein Hauptkonto zu ändern.

Das Problem beginnt, wenn ich den folgenden Befehl ausgeführt habe und ich ihn zurücksetzen muss.

sudo chown -R $(whoami) /usr

danach funktioniert der sudo-Befehl nicht und zeigt folgende Ausnahme:

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

Hier sind die sudo-Berechtigungen:

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

Ich habe das Root-Konto aktiviert, um Berechtigungen zu ändern, aber es funktioniert nicht. Ich habe auch das Betriebssystem neu installiert, aber ohne Erfolg. Ich habe versucht, das /usr-Verzeichnis durch mein befreundetes /usr-Verzeichnis mit demselben Betriebssystem zu ersetzen, aber das Verzeichnis und seine Datei sind schreibgeschützt. Ich konnte die Dinge im Wiederherstellungsmodus-Terminal nicht ändern.

Bitte beraten.

Antworten (2)

Sie haben den Besitz von /usr/local/bin/sudo durcheinander gebracht, aber /usr/bin/sudo ist in Ordnung, sodass Sie das verwenden können, um das andere zu reparieren:

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

Es gibt wahrscheinlich andere Probleme, da Sie den Besitz von allen /usr geändert haben und nicht nur von den relevanten Verzeichnissen. Aber seien Sie spezifisch und vorsichtig, wenn Sie Reparaturen durchführen – es scheint, als befänden Sie sich in einem Teufelskreis, in dem jeder Versuch, ein Problem zu beheben, nur noch größere Probleme schafft (und wenn es Ihnen gelungen wäre, /usr zu ersetzen, hätte das größere Probleme geschaffen ). Versuchen Sie nicht , Dinge zu reparieren, indem Sie sie mit immer größeren Hämmern schlagen, das macht nur immer größere Sauereien.

Ps Relevantes xkcd: https://xkcd.com/349/

Grundsätzlich ist Homebrew für einen Ein-Benutzer-Computer konzipiert.

Es muss sein Verzeichnis (auf Intel /usr/local/bin) von diesem Benutzer beschreibbar sein, und die Installationsanweisungen tun dies, indem sie diesen Benutzer zum Eigentümer des Verzeichnisses machen. Jetzt können Sie unter Unix nicht zwei Benutzer haben, die dasselbe Verzeichnis besitzen.

Der normale Unix-Weg (wie er seit 40 Jahren praktiziert wird) zum Installieren von Software, die von mehreren Benutzern verwendet werden soll, besteht darin, in ein Verzeichnis zu installieren, das Root oder einem speziellen Benutzer zum Installieren gehört. Somit können alle Benutzer die ausführbaren Dateien ausführen, aber Sie müssen über sudo-Rechte verfügen, um Dinge zu aktualisieren. (Meiner Ansicht nach aktualisieren Sie viel seltener, als die ausführbaren Dateien auszuführen, sodass dies kein Problem darstellt.)

Für Macs gibt es mehrere andere Paketmanager, die sich an die normale Unix-Methode halten, und ich würde einen davon verwenden, z. B. MacPorts, conda, fink, nix