• 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] User mit bestimmten Voreinstellungen anlegen

Chris K.

Member
Hallo meine Freunde und solche, die es noch werden wollen!

Ich habe openSUSE 11.1 (mit KDE 4.2) installiert und für den bei der Installation erstellten User alle möglichen Einstellungen getroffen (z.B. Firefox, Kmix, Wallpaper, Amarok und mehr).

Diese Konfiguration möche ich für einige weitere neue Benutzeraccounts als Grundlage verwenden.

Wie geht das? Gibt es da vielleicht einen speziellen Assistenten?
Ich weiß an sich, wie man per Yast neue Benutzer anlegt, komme aber trotzdem nicht weiter. Zuerst habe ich ganz naiv das Vorlagenverzeichnis - ich nenne es mal /home/user0 - kopiert, in /home/user1 umbenannt und dann einen neuen Benutzer namens user1 angelegt und ihm auch gleich das entsprechende Home-Verzeichnis zugewiesen. Dann kam netterweise noch die Frage, ob ich gewisse Rechte anpassen möchte, was ich natürlich bestätigt habe.
Ok, ich dann also neu gestartet und als user1 angemeldet. Und ich kann gleich verraten: KDE ist tatsächlich ordnungsgemäß gestartet auch mit meinen eigenen Voreinstellungen. Aber ein kleines und doch unerträgliches Problem gibt es dabei: Wenn ich z.B. in Dolphin auf "Home" klicke, lande ich bei /home/user0 ! :-(
Allgemein gesprochen: Es wurde (wie eigentlich zu erwarten war) wirklich ALLES kopiert. Auch das wirklich "Userspezifische". Ich hatte spontan gehofft, man müsse vielleicht nur eine Art Umgebungsvariable ändern und hab mal in der ~/.bashrc nachgeschaut - die war aber leer.
Ich weiß jetzt leider nicht mehr weiter. Ich denke mir, irgendwie muss es doch auch für Firmen/Schulen/Unis/etc. möglich sein hunderte Accounts anzulegen, die schon angepasst wurden, aber dennoch ihre korrekten "individuellen" Einstellungen besitzen?!
 

abgdf

Guru
Vielleicht könnte man (per Skript) rekursiv in allen Text- (Konfigurations-) dateien "user0" zu "user1" abändern ...

KDE-Konfigurationsdateien liegen bei mir z.B. in "~/.kde/share/config".

Gruß

P.S.: Deine Signatur stimmt nicht: Tatsächlich war es so:

http://xkcd.com/224/

:mrgreen:
 
OP
Chris K.

Chris K.

Member
Hi,
klingt machbar deine Idee! Aber wie könnte so ein Skript aussehen? :eek:ps:
Kenne mich nicht sooo toll mit den diversen "suchen und ersetzen" befehlen aus, die es für die Shell gibt.


P.S.: Wäre ja eine Schande, wenn bei der Erschaffung des Universums wirklich Perl zum Einsatz gekommen wäre ;)
 

abgdf

Guru
Du könntest es z.B. so versuchen ...
Code:
#!/bin/bash

touch mytemp

for f in $(find)
do
    if test -f "$f"
    then
        cat "$f" | sed s/user0/user1/g > mytemp
        cp mytemp "$f"
        echo "$f"
    fi
done

rm mytemp
... aber nur, wenn Du weißt, was Du da tust (Warnung! :wink:).

Gruß
 

panamajo

Guru
Beim Anlegen eines neuen Users werden automatisch die Dateien aus dem Verzeichnis /etc/skel in das $HOME des neues Users kopiert.
 

abgdf

Guru
Na gut, dann also erst den neuen User erstellen, dann die Dateien des alten Users drüberbügeln, dann "chown -R", dann das Skript ...

http://www.ambience.sk/user-account-copy-linux

Hätte ich eh' so gemacht.

Gruß

Edit:
panamajoe schrieb:
Beim Anlegen eines neuen Users werden automatisch die Dateien aus dem Verzeichnis /etc/skel in das $HOME des neues Users kopiert.
Ach so, das heißt, man kann dort Einstellungen, die für alle Benutzer gelten sollen, anlegen.
 
OP
Chris K.

Chris K.

Member
Hallo nochmal und Dank an alle für die Antworten!

http://www.ambience.sk/user-account-copy-linux
Was diesen Link angeht: Dort wird ja eigentlich nur beschrieben, was ich auch zuerst gemacht hab: das Home-Verzeichnis des "alten" Users kopieren und die Rechte anpassen. Schon in der Diskussion auf dieser Seite ist aber auch jemand auf das gleiche Problem gestoßen wie ich - dass es eben gewisse "feste Referenzen" gibt, die nicht einfach so kopiert werden können.

Beim Anlegen eines neuen Users werden automatisch die Dateien aus dem Verzeichnis /etc/skel in das $HOME des neues Users kopiert.
-> Volltreffer! Genau so eine Info wollte ich haben :)

Dann muss ich nicht das "riskante" Skript probieren ;-)

Allerdings werde ich dann wohl nicht darum herumkommen, genau zu schauen, welche Dateien ich angepasst habe, um sie dann nach /etc/skel zu kopieren. Dafür hab ich dann ein für alle mal eine angepasste User-Grundlage, wie ich sie mir wünsche.
 

panamajo

Guru
Es ist auch möglich mehrere "Vorlagen" zu verwenden, siehe dazu die Manpage von useradd (Option -k) ff.
Grundsätzlich bringt UN*X alles mit was man dafür benötigt, kein Grund das Rad neu zu erfinden.
 
OP
Chris K.

Chris K.

Member
Nur der Vollständigkeit halber:
Da es ja so einfach ist, einen neuen User anzulegen und bei Bedarf wieder komplett zu entfernen, habe ich auch mal das kleine Skript von abgdf ausprobiert. Ich weiß nicht warum, aber es hat leider nicht funktioniert.
Doch mir ist noch etwas anderes eingefallen: Man kann z.B. mit kfind nach einer Datei *(also beliebiger Name) im Ordner /home/user1 suchen, und bei "Enthaltener Text" user0 eingeben und dann sicherheitshalber noch "Einschließlich Binärdateien" ankreuzen.
Unter den Suchergebnissen finden sich dann die gewünschten Dateien, die man nur noch mit einem Texteditor öffnen muss und "suchen und ersetzen" darauf anwenden muss ...

Gruß
 

abgdf

Guru
habe ich auch mal das kleine Skript von abgdf ausprobiert. Ich weiß nicht warum, aber es hat leider nicht funktioniert.
Tut mir leid. Hab' gestern im Posting oben das Skript nochmal verändert (da ich auch einen Fehler gesehen hatte). Hast Du schon die "neue" Version probiert?
Gab's Fehlermeldungen?

In der Zeile
Code:
cat "$f" | sed s/user0/user1/g > mytemp
muß man die Werte für "user0" und "user1" natürlich anpassen.
(Wahrscheinlich kann man die Dateien mit "sed" auch direkt ändern, anstatt diesen Umweg mit "cat" zu gehen ... (Perl ist eher mein Freund als sed).)

Gruß
 
OP
Chris K.

Chris K.

Member
Ich hätte endlich mal wieder Zeit und würde gerne das Skript nochmal testen.
Nur um sicher zu gehen: Von welchem Verzeichnis aus soll ich das Skript denn starten?
 
Oben