Ein alter Bash - Skript , die ich getestet habe , um zu sehen , ob ein Benutzer war root
durch den Anblick , wenn /etc/passwd
beschreibbar war. In MacOS High Sierra kehrte es für wahr root
und für alle anderen falsch zurück. Aber in macOS Mojave gibt der Test sogar für false zurück root
.
Wenn ich diesen Test [ -w File ]
für andere Dateien mit denselben Berechtigungen und Inhabern durchführe, z. B. /etc/hosts
, gibt er root
für alle anderen Benutzer in Mojave und High Sierra korrekt "Wahr" und "Falsch" zurück. Ich sehe keine speziellen Dateiflaggen oder erweiterten Attribute an /etc/passwd
.
Das Skript ist kein Problem zu beheben, aber ich möchte wissen, wie / warum dieser Test in dieser Datei anders ist als in anderen Dateien und warum dies nur in Mojave ist. Wenn dies mit SIP zu tun hat, möchte ich wissen, wie man testen kann, ob eine Datei oder ein Verzeichnis irgendwie durch SIP geschützt ist.
Update: Ich habe festgestellt, dass das Deaktivieren von SIP dazu geführt hat, dass die Dinge wie erwartet funktionieren. Für einen Root-Benutzer wäre der Bash-Test "-w / etc / passwd" wahr. SIP wieder aktiviert und alles funktioniert wie erwartet. Ich weiß nicht, ob ich diese Frage löschen oder lassen soll, falls jemand auf ein ähnliches Problem stößt. Wenn Sie "ls -O / etc / passwd" ausführen, wird die Datei nicht als eingeschränkt angezeigt.
yes
für mich auf Mojave zurück, mit vorher laufen sudo -i
odersudo bash
whoami; [[ -w /etc/passwd ]] && echo "yes"
führt zuroot yes
[[ -w /etc/passwd ]] && echo "yes"
kehren Sieyes
für den Root-Benutzer sowohl unter High Sierra als auch unter Mojave zurück.