Re: chown für .verzeichnisse und .files
dk@in-telegence.net schrieb am 21.02.06 17:15:03:
Jetzt werde ich mir eine Tasse Kaffee holen und das bei 1200 Usern machen!
Handelt es sich hierbei um home-Verzeichnisse?
Dann könntest du sowas machen:
cd /home for benutzer in `find . -maxdepth 1 -type d ! -name ".*"` do chown -R $benutzer $benutzer done
Bitte sei dir im Klaren darüber, was das macht, bevor du das in einem anderen Verzeichnis als /home machst!
In /home dürfen dafür auch *NUR* home-verzeichnisse sein.
Es könnte dir aber ne Menge Arbeit sparen.
Grüße Dominik
Kann ich nachfragen wg Nachhilfe? Der find-Befehl sucht alles -maxdepth 1: mit einer maximalen Tiefe von 1. Also nur die Befehlsebene /home und ein Directory drunter -type d : in den Directories, aber dann behandelt er ja nicht die files, die einen punkt vorne dran haben ! -name ".*" außer vom Muster .* diese Verneinung kapier ich nicht Das -name heißt doch der Filename ohne den Pfad vorne dran und dann kommt das Muster also alle Files, die mit einem punkt beginnen. Das Ausrufzeichen heißt doch *nicht* oder kapier ich weniger als ich dachte. dann kommt die Laufanweisung, in der der chown so angewendet wird, dass alle Verzeichnisse ihren Namen als owner bekommen Und jetzt kommt die größte unbeantwortete Frage: das mit der Variablen benutzer. Woher weiß der Rechner, dass er jetzt alle Verzeichnisse durchgehen muss und die Laufvariable nicht 1,2,3 sondern anton, berta, brigitte, caesar heißt??? Klar, dass das jetzt Probleme macht, wenn andere Verzeichnisse als Homes drin sind, weil die jetzt ihren Namen als owner bekommen. Danke für die Geduld! Bernd ______________________________________________________________ Verschicken Sie romantische, coole und witzige Bilder per SMS! Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193
Am 21.02.2006 um 18:44 Uhr schrieb Bernd Kloss:
dk@in-telegence.net schrieb am 21.02.06 17:15:03:
cd /home for benutzer in `find . -maxdepth 1 -type d ! -name ".*"` do chown -R $benutzer $benutzer done
Kann ich nachfragen wg Nachhilfe? Der find-Befehl sucht alles
-maxdepth 1: mit einer maximalen Tiefe von 1. Also nur die Befehlsebene /home und ein Directory drunter Nein, nur das aktuelle Verzeichnis. Also werden damit die Benutzernamen anhand der Namer der home-Verzeichnisse herausgefunden. Versteckte Benutzer-Verzeichnisse sind ausgeschlossen, weil sie für dein Anliegen irrelevant sind.
-type d : in den Directories, aber dann behandelt er ja nicht die files, die einen punkt vorne dran haben Damit werden auch nicht die files gesucht, sondern die Benutzer, s. o.
! -name ".*" außer vom Muster .* diese Verneinung kapier ich nicht Das -name heißt doch der Filename ohne den Pfad vorne dran und dann kommt das Muster also alle Files, die mit einem punkt beginnen. Das Ausrufzeichen heißt doch *nicht* oder kapier ich weniger als ich dachte.
Dazu sage ich jetzt nichts ;-))
dann kommt die Laufanweisung, in der der chown so angewendet wird, dass alle Verzeichnisse ihren Namen als owner bekommen
Und jetzt kommt die größte unbeantwortete Frage: das mit der Variablen benutzer. Woher weiß der Rechner, dass er jetzt alle Verzeichnisse durchgehen muss und die Laufvariable nicht 1,2,3 sondern anton, berta, brigitte, caesar heißt???
In Langform: "for benutzer in" weist der Variablen benutzer das folgende zu. `find . -maxdepth 1 -type d ! -name ".*"` findet im home-Verzeichnis (es wurde mit cd /home dahin gewechselt) alle nicht-versteckten User-Verzeichnisse, die normalerweise auch den Benutzernamen des Users haben. Diese Verzeichnisnamen werden der Variablen benutzer zugewiesen. chown -R $benutzer $benutzer ändert den Benutzer auf die Variable benutzer für alle Dateien und Verzeichnisse unterhalb und einschließlich vom Verzeichnis benutzer. cu PeeGee
participants (2)
-
Bernd Kloss
-
Peter Geerds