Frage zu einem Befehl (chown .... ziemlich abgewandelt)

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
Gulliver03
Beiträge: 523
Registriert: 23.09.2003 21:18:23

Frage zu einem Befehl (chown .... ziemlich abgewandelt)

Beitrag von Gulliver03 » 05.07.2004 21:23:55

Ich habe das Problem, dass ich mein Profil niocht auf den Samba-Server zurückschreiben kann, weil einige Dateien unter dem Home-laufwerk des Users einem "User=1000" gehören, den ich aber nicht angelegt haben.

Jetzt würde ich gerne die Ordner aif den richtigen User (nennen wir ihn mal User1) freigeben. Das Problem dass ein "chown ...." in der Reinform gnadenlos alles unterhalb des Ordners auf den neuen User1 umwandelt. Wäre deswegen die folgende Syntax nicht besser geeignet:

Code: Alles auswählen

OLDUID=1000 && NEWUSER=foo && find /home/user1 -uid $OLDUID -exec chown NEWUSER '{}' \;
Damit würde rekursiv /home/user1 nach Dateien und Verzeichnisen durchsucht, die die uid=$OLDUSER haben. Für jeden dabei gefundenen Eintrag würde chown einen $NEWUSER anlegen. Damit wäre sichergestellt, dass gemischte Zugriffsrechte erhalten blieben und alle anderen würden geändert. NEWUSER wäre dann "user1". Der am Schluss stehende Slash würde dann die Verzeichnisrechte ebenfalls ändern, ohne dass man dies manuell tun müsste.

Damit könnte ich ausschliessen, dass das Problem evtl. von einer misskonfigurierten smb.com (was ich fast jetzt schon ausschliessen möchte/kann) oder einem passwd-File.

Kann das so funktionieren, oder besteht Gefahr für das System?

Danke

ernohl
Beiträge: 1248
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Re: Frage zu einem Befehl (chown .... ziemlich abgewandelt)

Beitrag von ernohl » 06.07.2004 08:39:14

Deine Erklärungen sind haarsträubend. Trotzdem kommst du auf eine vernünftige Lösung. :)
Gulliver03 hat geschrieben:Das Problem dass ein "chown ...." in der Reinform gnadenlos alles unterhalb des Ordners auf den neuen User1 umwandelt.
Unsinn. chown bearbeitet genau die angegebene Datei. Wenn die Datei ein Verzeichnis ist, bleiben die Dateien im Verzeichnis unberührt.

Code: Alles auswählen

OLDUID=1000 && NEWUSER=foo && find /home/user1 -uid $OLDUID -exec chown NEWUSER '{}' \;
Sieht brauchbar aus. Damit wird ab /home/user1 alles (darunterliegende) durchsucht und für jede Datei des Eigentümers, der die UID 1000 hat, die Eigentümerschaft auf foo geändert. Funktioniert natürlich nur als root.
Gulliver03 hat geschrieben:Damit würde rekursiv /home/user1 nach Dateien und Verzeichnisen durchsucht, die die uid=$OLDUSER haben. Für jeden dabei gefundenen Eintrag würde chown einen $NEWUSER anlegen.
chown legt gar nichts an. chown ändert den Eigentümer einer Datei auf den angegebenen Namen.
Gulliver03 hat geschrieben:Damit wäre sichergestellt, dass gemischte Zugriffsrechte erhalten blieben und alle anderen würden geändert. NEWUSER wäre dann "user1".
Was denn für gemischte Zugriffsrechte?
Gulliver03 hat geschrieben:Der am Schluss stehende Slash würde dann die Verzeichnisrechte ebenfalls ändern, ohne dass man dies manuell tun müsste.
Ich sehe keinen "am Schluss stehenden Slash". Meinst du den Backslash vor demm find? Der hat mit einem Verzeichnis nichts zu tun, sondern entwertet das nachfolgende Semikolon vor Behandlung durch die shell.
Gruß
ernohl

Gulliver03
Beiträge: 523
Registriert: 23.09.2003 21:18:23

Beitrag von Gulliver03 » 06.07.2004 09:53:54

Ich weiss, ich weiss ..... es hört sich teils verwirrend an, aber die Situation ist auch verwirrend (zumindest für mich). :cry:

Ich werde das jetzt mal so probieren.

Danke für die Hinweise.

Gulliver03
Beiträge: 523
Registriert: 23.09.2003 21:18:23

Beitrag von Gulliver03 » 06.07.2004 18:36:28

Der Befehl hat mein Problem behoben ..... Profil kommt vom Server und wird dort wieder hingespeichert (so wie es sein muss) ..... die Syntax muss aber so lauten

Code: Alles auswählen

OLDUID=1000 && NEWUSER=foo && find /home/user1 -uid $OLDUID -exec chown $NEWUSER '{}' \;

ernohl
Beiträge: 1248
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Beitrag von ernohl » 06.07.2004 19:40:24

Gulliver03 hat geschrieben:die Syntax muss aber so lauten

Code: Alles auswählen

OLDUID=1000 && NEWUSER=foo && find /home/user1 -uid $OLDUID -exec chown $NEWUSER '{}' \;
Wieso aber? Das ist doch der ursprünglich gepostete Befehl.
Gruß
ernohl

Benutzeravatar
npi
Beiträge: 567
Registriert: 03.08.2003 17:52:10

Beitrag von npi » 07.07.2004 00:45:56

ernohl hat geschrieben:
Gulliver03 hat geschrieben:die Syntax muss aber so lauten

Code: Alles auswählen

OLDUID=1000 && NEWUSER=foo && find /home/user1 -uid $OLDUID -exec chown $NEWUSER '{}' \;
Wieso aber? Das ist doch der ursprünglich gepostete Befehl.
ja, bis auf das Dollar vor dem zweitem "NEWUSER".

Ich glaube aber, dass das auch ohne die UND Verknüpfungen funktioniert. einfach:

Code: Alles auswählen

OLDUID=1000 NEWUSER=foo find /home/user1 -uid $OLDUID -exec chown $NEWUSER '{}' \;
oder

Code: Alles auswählen

OLDUID=1000; NEWUSER=foo; find /home/user1 -uid $OLDUID -exec chown $NEWUSER '{}' \;
ich glaube kaum, dass es einen Fehler geben kann beim Versuch eine Variable zu setzen, also kann das darauf folgende wahrscheinlich immer ausgeführt werden ;-). Was für einen unterschied die Semikolons im zweiten Code im Vergleich zum ersten ohne Semikolons ausmachen, habe ich allerdings noch nicht so richtig begriffen.
:roll:

gruß,
npi
"Bis zur Unendlichkeit, und noch viel weiter!"
--Buzz, Toystory

ernohl
Beiträge: 1248
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Beitrag von ernohl » 07.07.2004 08:23:54

npi hat geschrieben:Was für einen unterschied die Semikolons im zweiten Code im Vergleich zum ersten ohne Semikolons ausmachen, habe ich allerdings noch nicht so richtig begriffen.
Mit Semikolon wird das ein eigenständiger Befehl (als ob du mit <ENTER> abschließt). Die gesetzte Variable bleibt dann in der Shell erhalten.
Ohne Semikolon gilt die Variable nur für das folgende Kommando.
Gruß
ernohl

Benutzeravatar
npi
Beiträge: 567
Registriert: 03.08.2003 17:52:10

Beitrag von npi » 07.07.2004 11:37:56

thx, so was in der Richtung hatte ich mir schon fast gedacht. Aber man lernt halt nie aus 8)

gruß,
npi
"Bis zur Unendlichkeit, und noch viel weiter!"
--Buzz, Toystory

Antworten