![]() |
wieder eine bash Script Frage
Hallo,
im Home Verzeichnis hat jeder Benutzer ein eigenes Verzeichnis bei uns, leider sind in den Benutzerverzeichnissen, die Rechte und der Owner etwas durch einander gekommen. wie kann ein script aussehen, das mir von jedem benutzerverzeichnis im home, den owner nimmt und dann rekursiv alle dateien in benutzerverzeichnis den owner neu setzt? Danke Horst |
hm ... ich weiß nicht :D so schwer ist das ja nicht ...
gut wär mal ein listing des /home verzeichnisses machst du ls -l /home Code:
drwxr-xr-x 2 ftp nogroup 4096 2008-08-14 10:32 ftp diese spalten kannst mit dem befehl awk extrahieren (die syntax is a bissl schwer, schau dir mal die manpage an und wennst net weiter weißt dann gerne ;) ) brauchen wirst auch noch eine foreach schleife drumherum, weil du den befehl ja für jedes homeverzeichnis den user extrahieren willst. und in der foreach machst dann das oben erwähne awk um aus der 3. spalte den usernamen zu extrahieren (gruppe nehm ich mal an wird gleich dem usernamen sein?). dann setzt noch die zugriffsrechte mit chmod -R wie du sie haben willst. das -R steht natürlich für rekursiv, also alle unterverzeichnisse und -dateien. das gleiche gibts auch für chown. hoff ich hab dir geholfen. ein fertiges skript ... naja da müsst ich jetzt auch ein bissl arbeiten. aber man merkt sichs ja besser wenn mans selbst erarbeitet ;) |
hello,
die Verzeichisse gehören normalerweise entweder username username oder username , usergroup sudo bash oder su - cd /home for username in `ls -1` ; do chown -R $username $username/; done oder wenn die Gruppe auch falsch is for username in `ls -1` ; do chown -R $username.$username $username/; done das wars ... ciao CM²S |
Zitat:
|
wenn...
ok wiki gelesen
Bitte welcher trottel macht spaces im Usernamen , das können eigentlich nur Windowsuser sein !??!!??! aber du hast recht .... a bisserl aufpassen muss ma schon.... # test cd /home for i in "`ls -1`"; do echo "$i"; done # echt for i in "`ls -1`"; do chown -R "$i.$i" "$i/"; done und das mit dem "" funkt und das is das Ziel, schönen code schreib ich wenn ich mehr Zeit habe aber du kannst ja den richtigen code posten !?!? ciao CM²S |
Username und Name des Homedirectories eines Users muessen nicht koinzidieren; das ist eine optionale Konvention. Natuerlich sind Leerzeichen in GNU und UNIX ueberall dort, wo es geht, tunlichst zu vermeiden - aber better safe than sorry, oder? Nennt sich auch defensive programming - es ist generell besser, vom worst case auszugehen, und auch den zu ueberwinden, als vielleicht 98% aller Anwendungsfaelle abzudecken, aber dann etwas Wichtiges phaenomenal zu verhauen.
Ad Topic: `ls -1` sollte durch * ersetzt werden. Spart Tipparbeit, und ist zudem noch richtig. |
Werter Colossus, Du erfreust Dich ja am aufwändigeren Formulieren und dürftest @topic hier bisher der Kundigste sein. Warum befleissigst Du Dich dann nicht des geringen Zeilenumfanges des Miniscripts und beschränkst Dich lediglich auf Korrekturen anderer, die sich offensichtlich ungleich mehr Mühe geben müssen, um zum gewünschten Resultat zu kommen? Hat man es Dir auch so beigebracht?
|
Ich bin hier niemandem Rechenschaft schuldig; was ich will und was ich tue ist allein meine Sache. Mein Wissen ist selbst angeeignet; ich habe mir den Luxus, in gut besuchten Foren nach Loesungen fuer die Mikrowelle zu fragen nicht gegoennt.
Nichtsdestrotrotz, mein Vorschlag waere: Code:
for i in /home/*; |
Na siehst Du, ist doch viel hilfreicher so. Ich bin mit der Syntax auch nicht so sattelfest, sonst hätte ich's natürlich auch gepostet.
Natürlich bist Du niemandem Rechenschaft schuldig, meine Kritik zielt auf den höheren Informationsgehalt des Forums sowie auch auf Dein Verhalten ab, allerdings kannst dadurch nur Du Dank und Anerkennung gewinnen, das wäre neben höherem Informationsgehalt auch noch ein freundlicheres Umfeld genau für Dich ;) |
helo,
ich sehe , ich kann noch viel lernen !! danke für die Aufklärung, aber moderne Linux Distributionen lassen keine Blanks in Usernames zu .... ;-) aber es ist gut alternativen zu sehen... und.... es funkt, und gibt sogar feedback um Änderungen wieder zürück nehmen zu können... Danke ciao CM²S |
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag