macOS - kann nicht ohne sudo rm

704
Philippe Hebert

Brandneuer Besitzer eines Mac, um die Maschine kennenzulernen.

Ich bin über ein Problem gestolpert, das ziemlich störend ist - ich kann rm nicht ohne Sudo verwenden. Immer wenn ich einen RM-Befehl schreibe, lautet das Ergebnis folgendes:

rm: illegal option -- I usage: rm [-f | -i] [-dPRrvW] file ... unlink file 

Wenn ich jedoch den Befehl sudo erfolgreich weiterführe.

Zusatzinformation:

  • macOS Sierra v.10.12.6
  • Die Dateien haben alle Zugriffsrechte von 777 und gehören zum Benutzer 'staff'.
  • staffist keine benutzerdefinierte Gruppe / Benutzer. Die Erwartung ist, dass es sich um einen Basisbenutzer bzw. eine Basisgruppe handelt, die vom Betriebssystem bereitgestellt wird.

Die Frage ist also, wie kann ich es so machen, dass ich nicht jedes Mal sudo brauche, wenn ich diese Dateien ändern möchte? (Und was ist dieser 'staff' Benutzer?)

0
In welchem ​​Verzeichnis befindet sich das? Du meinst überall? Sogar dein Heimatverzeichnis? Wenn Sie in Ihr Home-Verzeichnis (`cd ~ /`) gehen und dann über `touch 'eine Datei erstellen möchten, wie diese,` zzz_test.txt` und dann `rm zzz_test.txt`, dann sagen Sie, das würde nicht funktionieren? JakeGould vor 7 Jahren 1
Sie benötigen keinen Schreibzugriff auf eine Datei, um sie zu löschen: Sie benötigen Schreibzugriff auf das übergeordnete Verzeichnis. Beachten Sie, dass `sudo` in einer anderen Umgebung arbeitet als die` bash'-Shell, von der es aufgerufen wird. Es sieht so aus, als hätten Sie einen Alias ​​oder eine Funktion, die `rm` durch Hinzufügen zusätzlicher Parameter neu definiert: Verwenden Sie` type -a rm`, um alle möglichen Interpretationen zu finden. Versuchen Sie auch "$ (which rm) ..." anstelle von "rm ...", um sicherzustellen, dass Sie die richtige ausführbare Datei verwenden (dies ist normalerweise "/ bin / rm"), aber ich habe das Gefühl, dass dies der Fall ist auf Macs unterschiedlich). AFH vor 7 Jahren 1
Ich mache mir Sorgen um den Ordner / die Datei, in dem Sie arbeiten möchten. In einem normalen Verzeichnis, das der aktuelle Benutzer besitzt, wenn Sie an einer normalen Datei arbeiten, die der aktuelle Benutzer besitzt, sollten Sie die Dateien ohne Probleme löschen können. Christopher Hostage vor 7 Jahren 1
@AFH Großartige Entdeckung! Ich habe meine .bash_aliases von Linux übertragen und hatte einen Fehlertoleranzalias für rm => `rm -I`, der am Ende der Datei aufgeführt ist. Das Entfernen der Leitung hat das Problem gelöst! Wenn Sie möchten, können Sie Ihren Kommentar als Antwort kopieren und ich akzeptiere ihn als die richtige Antwort. Philippe Hebert vor 7 Jahren 0

2 Antworten auf die Frage

2
AFH

Aus der Fehlermeldung sieht es so aus, als hätten Sie einen Alias ​​oder eine Funktion, die rmdurch das Hinzufügen zusätzlicher Parameter neu definiert wird, da sie sudoin einer anderen Umgebung als der Shell ausgeführt wird, aus der sie aufgerufen wird, und die Alias- und Funktionsdefinitionen im Allgemeinen nicht aus der Initialisierung der Shell importieren Skripte.

Dieser Befehl zeigt alle möglichen Interpretationen des rmBefehls:

type -a rm 

Innerhalb der Shell können Sie auch $(which rm) ...anstelle von rm ...verwenden, um sicherzustellen, dass Sie die richtige ausführbare Datei verwenden, da das externe whichProgramm die Alias- und Funktionsdefinitionen nicht kennt, die der interne typeBefehl überprüft. Ein Befehl mit einer Verzeichniskomponente wird immer im Dateisystem gesucht, um ihn zu finden, wodurch Aliase und Funktionen umgangen werden.

Beachten Sie, dass Sie keinen Schreibzugriff auf eine Datei benötigen, um sie zu löschen. Sie benötigen Schreibzugriff auf das übergeordnete Verzeichnis.

1
Dooley_labs

Aufbauend auf den Kommentaren zu Ihrer Frage können Sie das Objekt höchstwahrscheinlich nicht ohne Superuser-Berechtigungen löschen, es sei denn, Ihr Benutzer besitzt die Datei.

Staffist die Systemgruppe von MacOS. Das Ändern von Dateien, deren Eigentümer diese Gruppe ist, ist potenziell gefährlich, obwohl Sie höchstwahrscheinlich wissen, was Sie in Ihrem Anwendungsfall tun.

Was die -IDirektive angeht, so liegt dies nicht in MacOS ' rmBefehl. Sie müssen verwenden -i, es sei denn, es gibt einen ähnlichen Ersatz.

Um Sudo zu überspringen, können Sie in Ihrem .bashrc ( rm='sudo rm -i') einen Rm-Alias hinzufügen und sich selbst in die Sudoers-Datei von MacOS einfügen sudo visudo, YOUR_USERNAME_HERE ALL=NOPASSWD: ALLum vollständigen Sudo-Zugriff auf alle Befehle zu erhalten oder YOUR_USERNAME_HERE ALL=(ALL:ALL) NOPASSWD: /bin/rmden vollständigen Zugriff auf den Befehl rm zu beschränken.

Hinweis: Der rm-Befehl von MacOS befindet sich möglicherweise nicht in / bin / rm. Ich habe es in letzter Zeit nicht verwendet, gehe aber davon aus, dass es sich nach vorherigem Wissen dort befindet.

Ihre Antwort, zusammen mit AFH, ließ mich erkennen, dass ich einen Alias-Setup für rm hatte, der "-I" als Standardparameter enthielt. Guter Fang! Philippe Hebert vor 7 Jahren 0