• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst]Linux Datei-Rechte

Wunderschönen Guten Morgen :D

man bemerke mein Gemütszustand hat sich heute verbessert.
Danke robi für deine Script läuft alles soweit, wie ich es haben wollte.
Bis auf eine kleine Ausnahmen.
Es existieren Dank Microsoft in Samba die Windows Standard Domain Gruppen, die dummerweise wieder mal
ein Leerzeichen enthalten.

z.B. die Gruppe Domain Users
Das Ganze verwirrt dein Script, da es dann für die Gruppe Domain die ID Users in die alte ID ändern möchte.

Code:
GID fuer "domain" wird bearbeitet von users auf 30000 10513
find: Ungültiges Argument -print0 für "-gid".
chgrp: Zugriff auf â10513â nicht möglich: Datei oder Verzeichnis nicht gefunden
GID fuer "domain" abgeschlossen

GID fuer "domain" wird bearbeitet von admins auf 30007 10512
find: Ungültiges Argument -print0 für "-gid".
chgrp: Zugriff auf â10512â nicht möglich: Datei oder Verzeichnis nicht gefunden
GID fuer "domain" abgeschlossen

Gibt es dafür einen Trick, damit das Script auch diese Gruppen bearbeiten kann.

Habe das Script auch bei wirklich wirren Dateinamen und Ordnernamen laufen lassen und bisher hats immer funktioniert.
:thumbs:
 
A

Anonymous

Gast
sawo schrieb:
Gibt es dafür einen Trick, damit das Script auch diese Gruppen bearbeiten kann.:

Also jetzt stören noch Leerzeichen in den Gruppennamen. Ganz einfach die Leerzeichen dort in der GUI Tabelle entwerten
Code:
 Domain\ Users
geht bei nur ein paar wenigen schnell manuell, ansonsten vielleicht über einen sed Befehl auch möglich. Aber Vorsicht der sollte genau und nur das machen was du willst. Könnte zB so hier aussehen wenn du nicht auch noch andere Sonderzeichen in den Gruppennamen hast
Code:
sed 's/\([A-Za-z]\) \([A-Za-z]\)/\1\\ \2/' dateiname_GID

oder umsetzen
Code:
 Domain_Users
oder Kürzen, für die Funktion des Scriptes ist es ganz egal ob dabei dann mehrere Usernamen in dieser Tabelle gleich aussehen,
Code:
Domain
Das Script selbst benutzt die User- und Gruppennamen überhaupt nur zur Anzeige was er gerade bearbeitet, die eigentliche Bearbeitung erfolgt in diesem Script einzig und alleine nur über die IDs die dahinter stehen.

Wenn auch Gruppen und Usernamen mit vielen Leerzeichen dabei sein sollten, dann würde helfen das Script umzuschreiben das die beiden UIDs vorne sind und der Name hinten als dritte Spalte steht, dann ist es egal wieviele Leerzeichen der hat. (Einfach bei den read-Befehlen die Reihenfolge der Variablen verändern.)

Wenn du allerdings jetzt noch ganz verrückte User und Gruppennamen hast die dann ihrerseits zB so hier aussehen "-a'%`€& \/ß^8~"" , dann ................... :D würde ich vorschlagen die User die nicht auf Anhieb ihre Username und all ihre Gruppennamen in deutsch und englich richtig buchstabieren können, bekommen bei dieser Umstellung dann gleich mal neue vernünftige verpasst.


robi
 
Danke für den Tipp.

Ich hab nun vor, den ganzen Vorgang bei einer Freigabe von 500.000 Files laufen zulassen.
Dazu hab ich mir gedacht mit dem awk script für die user und die gruppen eine id Tabelle zu erstellen.
Natürlich um erstmal nichts zu vermasseln mit gleichen ids.
user1 1000 1000
gruppe 1001 1001

Was müsste ich an dem awk Script ändern, damit ich, obwohl es gleiche ids sind eine Ausgabe bekomme?
Ich blicke nicht ganz durch an welcher Stelle ich was ändern müsste.
 
A

Anonymous

Gast
sawo schrieb:
Ich hab nun vor, den ganzen Vorgang bei einer Freigabe von 500.000 Files laufen zulassen.
Dazu hab ich mir gedacht mit dem awk script für die user und die gruppen eine id Tabelle zu erstellen.
Natürlich um erstmal nichts zu vermasseln mit gleichen ids.
user1 1000 1000
gruppe 1001 1001

Was müsste ich an dem awk Script ändern, damit ich, obwohl es gleiche ids sind eine Ausgabe bekomme?
Ich blicke nicht ganz durch an welcher Stelle ich was ändern müsste.
Dafür ist das AWK Script nicht ausgelegt, die entsprechende Stelle wäre diese hier
Code:
if ((z[i]!=c[i]) && (c[i]!=0)) {
Bedeutet: wenn bei gleichem Username in beiden passwd die ID unterschiedlich ist und dieser User in der 2. Passwd auch vorhanden und nicht root ist, dann ...............
Würde aber bei einer Änderung auf deine gewünschte Anforderung sofort in den nächsten Zeilen als Fehler aufschlagen und als ID-Konflikt zwischen beiden passwds gewertet werden. Es müsste also ein ELSE-Zweig dort hinter das Ende der Entsprechenden geschweiften Klammer der dann print (i,z,c) macht. Würde aber User die in der 2. passwd fehlen auf ROOT ändern wollen :???: Aber viel einfacher

Wenn du Dummydateien für das Testen haben willst die nichts ändern, erstell diese einfach aus einer passwd und der group
Code:
awk -F: '{print $1,$3,$3}' /etc/passwd  > UID-Datei
awk -F: '{print $1,$3,$3}' /etc/group  > GID-Datei

nimm vorsichtshalber aber root bin usw aus den Dateien raus.

robi
 
Wunderbar vielen Dank.

Konnte jetzt mal testen wie lange es in etwa dauert bei ca. 500.000 Dateien.
Hat grade mal 10 Minuten gedauert.
Dann bin ich mal gespannt auf den Tag der Umstellung ;)
 
Ich würde das ganz anders angehen. Von der ursprünglichen Fragestellung ausgehend.
Da es "nur um alte" Unixrechte geht, würde ich schlicht die UserIDs feststellen,
dann alle Dateien kopieren und mit "chown" die Dateien umflaggen.

Dürfte erheblich einfacher sein.
 
Oben