Wie ändere ich den Besitzer in einen aktuellen Benutzer in einem Ordner, der Ordner in meinem Ausgangsverzeichnis enthält?

12

Mit habe sudo nautilusich einige Ordner erstellt und möchte die Root-Berechtigung für sie entfernen. Aber ich habe viele und ich möchte es mit einem ganzen Verzeichnis und seinen enthaltenden Ordnern machen.

Wie kann man dem aktuellen Benutzer das Lesen / Schreiben aller Dateien und Ordner in einem bestimmten Verzeichnis erlauben, das sich zu Hause befindet?

Vitor Abella
quelle

Antworten:

13

Um den mit sudo nautilusIhnen verursachten Schaden rückgängig zu machen, sollten Sie sich zum Eigentümer aller Verzeichnisse (und ihrer Inhalte) machen, die root gehören.

Sie können finddies verwenden, da ein Test durchgeführt wird, um nur Dateien zu finden, die einem bestimmten Benutzer gehören.

Dadurch finden Sie alle Verzeichnisse in Ihrem Haus, die root gehören:

sudo find ~ -type d -user root

Anschließend können Sie den findBefehl wiederholen und die gewünschte Aktion hinzufügen. So können Sie den Besitz aller gefundenen Verzeichnisse und deren Inhalte rekursiv auf den aktuellen Benutzer ändern:

sudo find ~ -type d -user root -exec sudo chown -R $USER: {} +

Erläuterung:

  • ~ das Home-Verzeichnis
  • -type d finde nur Verzeichnisse
  • -user root finde nur Sachen, die zu root gehören
  • -exec Führen Sie den folgenden Befehl für alles aus, was gefunden wurde
  • sudo chown -R Besitzer rekursiv wechseln
  • $USER der aktuelle Benutzer
  • : Ändern Sie auch die Gruppe für den jeweiligen Benutzer

Effizienter, könnten Sie die weglassen -type dDateien jeglicher Art zu root gehören , zu finden, und lassen auch die -Rals finddurch Einwirken auf alle Dateien , die Rekursion für Sie tun

sudo find ~ -user root -exec sudo chown $USER: {} +
Zanna
quelle
Sie müssen Ihr findwith sudo( sudo find ...) rootausführen , um eigene Unterverzeichnisse mit 0700Schutzfunktionen und alles darunter zu überprüfen . Das Gleiche gilt für die Reparatur.
Waltinator
"gegen das verteidigen, was wahrscheinlich ist" oder "gegen das verteidigen, was möglich ist"? Deine Entscheidung.
Waltinator
@ Waltinator sicher :) Danke, dass du es erwähnt hast, damit ich mich verbessern kann. Ich versuche nur, es nicht zu benutzen, sudobis es gebraucht wird
Zanna
10

Ausführen von GUI-Tools, wie sie unter anderem aus diesem Grund nautilusals rootschädlich angesehen werden (versteckte Funktionen, Fähigkeit, Programmfragmente lautlos auszuführen, von wem weiß wo, ...).

Sie haben kein "Berechtigungs" -Problem, Sie haben ein "Besitz" -Problem.

rootGehen Sie wie folgt vor, um alle Dateien zu finden, die Eigentum von (wirklich Eigentum von anderen) sind:

sudo find $HOME \! -user $USER

Um das Eigentum wieder an Sie zu ändern, könnten Sie

sudo chown -R $(id -u):$(id -g) $HOME

Dies ändert jedoch den Besitz aller Dateien in und unter $HOME

sudo find $HOME \! -user $USER >/tmp/list-of-files
# edit the list of files, and delete file files you don't want to chown
nano /tmp/list-of-files 
xargs sudo chown $(id -u):$(id -g) </tmp/list-of-files

Bietet einem die Möglichkeit, die Liste der Dateien, die nicht Ihnen gehören, anzupassen, deren Eigentümer wieder auf Sie übertragen werden.

Walzer
quelle
5

Sie müssen lediglich den Besitz des Ordners vom Benutzer- (und Gruppen-) Stammverzeichnis auf den anderen Benutzer (und die Gruppe) ändern, die Sie möchten.

Stellen Sie sich vor, Sie möchten an / home / randomFolder arbeiten und der Benutzer, für den Sie den Besitz übernehmen möchten , ist vitor-abella . Sie müssen dies einfach als root ausführen:

chown -R vitor-abella:vitor-abella /home/randomFolder

Es kann eine Weile dauern, wenn viele Dateien und Unterordner vorhanden sind, aber danach sollten Sie auf dem richtigen Weg sein.

Prost.

Javier Caselli
quelle
3
Ich benutze $(id -u):$(id -g), anstatt OP zu bitten, sich vorzustellen, und $HOME/randomFolder.
Waltinator