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

UIDs und GIDs umstellen

regexer

Advanced Hacker
Hallo zusammen!

Folgendes Problem: Wir haben hier zwei Server. Der eine stellt die Produktion dar, der andere ist als Testserver gedacht. Nun soll ein Programm zur übergreifenden Software-Verwaltung eingesetzt werden. Im Moment kenne ich das Produkt noch nicht genau, aber es ist bekannt, dass intern mit den System-UIDs und -GIDs gearbeitet wird. Das Problem ist: Sowohl auf dem Test- als auch auf dem Produktionsserver gibt es zwar mit Namen identische Benutzer, diese haben aber unglücklicherweise verschiedene UIDs.

Das müsste man "geradeziehen". Die Frage ist nur: Wie?

Aus meiner Sicht gibt es mehrere mögliche Wege:
1. Parallel zum Test-Rechner einen dritten Rechber hochziehen
2. UIDs und GIDs "umstellen"
3. Pro Benutzer innerhalb der Test-Umgebung zwei UIDs vergeben

Weg 1 würde bedeuten:
1.1 Komplett neuen Rechner bereitstellen
1.2 Betriebsystem installieren
1.3 Benutzer analog zur Produktion anlegen
1.4 Sonstige Installationen
1.5 Den alten Testrechner durch den neuen ersetzen

Weg 2:
2.1 Komplettsicherung Testrechner
2.2 Umstellungs-Programm für alle UIDs und GIDs laufen lassen(/etc/passwd, /etc/group, gesamtes Filesystem, etc.)

Weg 3:
3.1 vi /etc/passwd /etc/group

Frage: Gibt es noch Alternativen? Was würdet ihr machen?
Ich tendiere zu 1, weil ich mir nicht sicher bin, ob 2 oder 3 nicht unerwünschte Seiteneffekte erzeugen.


Gruß,

notoxp
 
Benutze 'tar', da werden Username/Groupname UND UID/GID der Dateien gespeichert. Wenn's beim Entpacken einen gleichnamigen User/Gruppe gibt, wird der verwendet, wenn nicht, dann UID/GID.
 
Ich würde Weg 2 nehmen.

find / -user uidnummer -exec chown neueid {} \;
find / -group groupid

Könnte man für einzelne User machen. Mit vipw und vigr User anpassen.

Ein Problem könnte bleiben: links werden nicht ordentlich umgesetzt.


Haveaniceday
 
OP
regexer

regexer

Advanced Hacker
haveaniceday schrieb:
find / -user uidnummer -exec chown neueid {} \;
find / -group groupid
[...]
Ein Problem könnte bleiben: links werden nicht ordentlich umgesetzt.
Danke für die Antworten. Es ist gut, dass du das mit den Links erwähnst. Ich glaube, da gab es mal eine Diskussion bezüglich "tar" in diesem Forum. Der hat natürlich genau das gleiche Problem wie der chown.
Abgesehen davon würde in unserem Fall wahrscheinlich für das Umstellen von UID und GID für 90% unserer Verzeichnisse auch ein chown -R bzw. ein chgrp -R helfen. Der dürfte denke ich etwas schneller sein als der find...
 
find / -xdev ....
fällt mir noch so ein.

Der find findet auch die Dateien unter /tmp/ für kde, x,.... Könnte sonst mecker
von kde und X geben.
Natürlich geht chown -R wenn alles in dem Verzeichnis nur einem User gehört.
Nur der find wäre für mich auf jeden fall notwendig.

Als "schnellstes": : chown -R auf /home/<user> + umount /home + dann find / ...

Haveaniceday
 
OP
regexer

regexer

Advanced Hacker
:oops: Ich habe unterschlagen, dass es sich bei dem Betrübsystem um Solaris 8 handelt. Deswegen spielt auch KDE keine Rolle. :oops:

Aber von der Sache her sind die Überlegungen hierzu dieselben.
Nur scheint es mir, dass Solaris mit den Links weniger Probleme hat. Zitat aus "man chown":
Code:
     -R    Recursive. chown descends through the  directory,  and
           any  subdirectories,  setting  the  ownership ID as it
           proceeds. When a symbolic  link  is  encountered,  the
           owner  of  the  target  file is changed (unless the -h
           option is specified), but no recursion takes place.

Ansonsten: Der Solaris-find kennt die von dir angeführten Parameter.

Mir ging es im Übrigen eher um den Lösungsweg und nicht so sehr um die fertige Lösung mit detaillierten Befehlsfolgen ...
 
find sollte aber schon wegen z.B. /usr/mail/<user> unter Solaris notwendig sein.
Und immer schon /usr/xpg4/bin schön vor /usr/bin haben....

Hab mal gehört das BSD auch keine Probleme mit "link chown" hat.

Haveaniceday
 
jengelh schrieb:
Was fuer Probleme mit Links? Wo soll da das Problem sein? Einfach chown und gut ist.
Versuch mal unter Linux einen chown <user> <link>.
Wenn das klappt tu ich ein Bier in Paderborn aus.
Der link bleibt beim gleichen User.

Haveaniceday
 

TeXpert

Guru
haveaniceday schrieb:
jengelh schrieb:
Was fuer Probleme mit Links? Wo soll da das Problem sein? Einfach chown und gut ist.
Versuch mal unter Linux einen chown <user> <link>.
Wenn das klappt tu ich ein Bier in Paderborn aus.
Der link bleibt beim gleichen User.

Haveaniceday

Code:
$ ls -ln
insgesamt 0
-rw-r--r--  1 1000 1000 0 2006-02-24 09:03 datei
lrwxrwxrwx  1 1000 1000 5 2006-02-24 09:03 link -> datei
$ sudo chown 1001.1001 link
$ ls -ln
insgesamt 0
-rw-r--r--  1 1000 1000 0 2006-02-24 09:03 datei
lrwxrwxrwx  1 1001 1001 5 2006-02-24 09:03 link -> datei

und noch einen drauf:

Code:
$ ln -s /usr/bin
$ ls -ln
insgesamt 0
lrwxrwxrwx  1 1000 1000 8 2006-02-24 09:05 bin -> /usr/bin
-rw-r--r--  1 1000 1000 0 2006-02-24 09:03 datei
lrwxrwxrwx  1 1001 1001 5 2006-02-24 09:03 link -> datei
$ sudo chown root.root bin
$ ls -ln
insgesamt 0
lrwxrwxrwx  1    0    0 8 2006-02-24 09:05 bin -> /usr/bin
-rw-r--r--  1 1000 1000 0 2006-02-24 09:03 datei
lrwxrwxrwx  1 1001 1001 5 2006-02-24 09:03 link -> datei
 
War das Linux und mit welchem Kernel ?

Code:
# touch datei
# ln -s datei link
# ls -l datei link
-rw-r--r--  1 root root 0 2006-02-24 13:46 datei
lrwxrwxrwx  1 root root 5 2006-02-24 13:46 link -> datei
#
# chown user link
# ls -l datei link
-rw-r--r--  1 user root 0 2006-02-24 13:46 datei
lrwxrwxrwx  1 root root 5 2006-02-24 13:46 link -> datei

Das Bier wartet hier in Paderborn :)
Ist zwar gestern zu Weiberfastnacht deutlich weniger geworden,
aber es ist noch etwas da.

Haveaniceday
 

TeXpert

Guru
haveaniceday schrieb:
War das Linux und mit welchem Kernel ?


Code:
 cat /etc/debian_version
3.1
$ uname -a
Linux wopr 2.6.11.4-lan2 #1 Sat Mar 19 19:54:59 CET 2005 i686 GNU/Linux

da müsste ich bei Gelegenheit auch noch mal den Kernel aktualisieren ;) ... aber der Treiber für eine Messkarte macht immer so viel Ärger beim Kernel-aktualisieren...

aber das funktioniert auch auf modereren Kerneln
 
Das ging schon mit 2.2. Hey, ich krieg auch eins
bier.gif
, schliesslich hab' ich drauf hingewiesen!
 
@jengelh, @TeXpert, IOU a beer
Sagt einfach Bescheid wenn ihr im Raum Paderborn seid.
(Oder ich im Raum Göttingen oder ? bin ).

Altersheimer hat zugeschlagen. Es war chmod von sym links
welche unter Linux nicht gehen, jedoch unter Bsd.

http://nixdoc.net/man-pages/NetBSD/man2/lchmod.2.html

Haveaniceday
 
OP
regexer

regexer

Advanced Hacker
Gut, gut. Ich habe das ganze auch verwechselt. "chmod" geht anscheinend bei Symlinks nicht. "chown" geht sehr wohl. Das sagen sogar die man-pages unter SLES 9:
Code:
man chown
[...]
       -h, --no-dereference
              affect each symbolic link instead of any referenced file (useful
              only on systems that can change the ownership of a symlink)
[...]
man chmod
[...]
       chmod never changes the permissions of symbolic links; the chmod system
       call  cannot change their permissions.  This is not a problem since the
       permissions of symbolic links are never used.  However, for  each  sym-
       bolic link listed on the command line, chmod changes the permissions of
       the pointed-to file.  In contrast, chmod ignores symbolic links encoun-
       tered during recursive directory traversals.
 
Oben