Cool
Kleiner Hinweis an der Stelle: das Userhome wird im nächsten Update von $HOME/media/$USER zu $HOME/media/$USER \(H\:\)/ wechseln. Der Grund ist, dass alle anderen Netzlaufwerke auch einen Buchstaben haben und so ist es dann konsistent.
EDIT: Vielleicht mache ich auch einfach eine Variable dafür, also $SERVERHOME oder so ähnlich
Hi. Sehr gut – das fiel bei uns auch schon einigen auf, dass da kein Buchstabe stand. Für etwas Verwirrung sorgte übrigens, dass „unbedarfte Nutzer“ in irgendeinem Programm etwas speichern wollen und dann als Pfadangabe für das Serverlaufwerk angeben müssen /home/username/media/username, damit die Datei auf dem Server landet. Diese Doppelung ist verwirrend…
Vielleicht wäre es ja doch ganz sinnvoll, wenn man …
einen Symlink nach /mnt legt?
Laufwerk H: als Standard zum Speichern festlegen kann?
Desktop-Symbole macht, die wieder eindeutig anzeigen: Home_auf_Server? Warum ist diese Bezeichnung eigentlich rausgeflogen? Sie war doch immer ganz sinnig…
Hi Dominik.
Super Sache … ich habe gerade auf dem Server unter [root@server:/srv/samba/schools/default-school/teachers/<mein-login>/Einstellungen]$
nachgesehen, was es da so gibt … und siehe da:
Ich weiß zwar nicht, warum diese ganzen Profile bereits dort liegen (das Ubuntu-Image 20.04 kam von linuxmuster-client list), aber das könnte man nun sicher alles so nutzen, wie Du es oben beschreibst …
Übrigens: Chrome ist ja seltsamerweise nicht dabei…?!
Hallo Dominik,
Vielen Dank für deine Antwort. Ich hab mich diese Woche auch etwas gespielt damit und mein Script sieht lustigerweise fast genau so aus, wie deines…
Danke euch allen!
LG, Alex
ich habe das einfach nachgebildet. Ich habe unter dem „Persönlichen Ordner“ einen Ordner „Home_auf_Server“ angelegt (auch mit Link auf dem Desktop). Home_auf_Server habe ich ebenfalls als Lesezeichen im Dateimanager angelegt. In Home_auf_Server habe ich einen Link auf das Userhome erzeugt, so das in Home_auf_Server alle Dateien von $HOME/media/$USER landen.
Das hört sich jetzt fürchterlich und unnötig kompliziert an aber die KuK und SuS sind diese Struktur seit 10 Jahren gewöhnt…
Hallo!
Da wir (ich) viele solche Programm-Profile haben, u.a. welche mit Leerzeichen im Namen, habe ich mir für die logon.sh etwas gebastelt, sicher nicht supertoll, aber es funktioniert, wenn die Ordner in Einstellungen genau so heißen, wie im Home. Den Thunderbird lasse ich raus, weil ich den wie oben verpflichtend nach Einstellungen kopiere, wenn es ihn nicht gibt. Beim Firefox mag ich das nicht.
# Schauen, wieviele Dateien / Ordner da rumliegen abzgl. .thunderbird und den "." und ".." Verzeichnissen
AnzahlEintraege=`ls -1a $HOME/media/$USER\ \(H\:\)/Einstellungen/ | grep -v thunderbird | cat -b | tail -n 1 | cut -f1 | sed s#\ ##g`
ls -1a $HOME/media/$USER\ \(H\:\)/Einstellungen/ | grep -v thunderbird > /tmp/$USER/Einstellungen
# Liste erstellen
tail -n `expr $AnzahlEintraege - 2` /tmp/$USER/Einstellungen | sed 's#\ #\\\ #g' > /tmp/$USER/Einstellungen_ohneDot
# Liste abarbeiten
for i in `cat /tmp/$USER/Einstellungen_ohneDot`
do echo $HOME/media/$USER\ \(H\:\)/Einstellungen/$i >> /tmp/$USER/debug
if [ -d $HOME/media/$USER\ \(H\:\)/Einstellungen/$i ]; then
rm -rf $HOME/$i 2>&1 >> /tmp/$USER/debug
ln -s $HOME/media/$USER\ \(H\:\)/Einstellungen/$i $HOME/ 2>&1 >> /tmp/$USER/debug
fi
done
Ich hatte noch mit einer Variablen
SERVERHOME=$HOME/media/$USER\\\ \\\(H\\\:\\\)
experimentiert, aber da hat das mit den Leerzeichen letztlich nicht hingehauen. Die gehören verboten Vielleicht kriegt das einer hin, dann ist es schöner.
puh, jetzt habe ich mich durch die Sache durchgekämpft und die 4 Zeilen in der alten userprofile.conf ersetzt durch 32 Scriptzeilen in einem Script unter onLogin.d.
sehr leicht: Für jemand, der sich mit Scripten auskennt, vielleicht. Ich fand das nicht so leicht.
klein: Das ist relativ.
individueller: Ja, möglicherweise. Wobei ich es mit der alten Form ja auch hinbekommen habe.
Zu ergänzen:
fehleranfälliger: Ich hab nicht mitgezählt, wie viele Tippfehler ich in meinem Script tilgen musste, und man muss aufpassen wie ein Fuchs, um beim remote-Verzeichnispfad und lokalem Verzeichnispfad nicht durcheinanderzukommen…
Ich habe Dominiks Entwurf verwendet und angepasst, da ich die bestehende Struktur im Einstellungen-Verzeichnis nicht verändern wollte, was beim Entwurf von Max nötig gewesen wäre.
OK, sorry, Kommando zurück. Ich hatte $SERVERHOME einfach im Terminal eingegeben und bekam die entsprechende Meldung ohne H: zurück. Bei einem Script mit echo $SERVERHOME schreibt er den korrekten Pfad hin. Aber wenn ich das im Script als Pfadangabe wie bei ln $SERVERHOME/Einstellungen/firefox $HOME/.mozilla/firefox
verwende, funktioniert es nicht, dann bekomme ich ein Unterverzeichnis H: direkt ins Homeverzeichnis des Users…
Falls Interesse besteht, poste ich hier kurz unser Skript welches wir aus logon.sh aufrufen:
(Anmerkung: Die Konfig-Verzeichnisse sollten im Einstellungen-Verzeichnis am Server genau so benannt werden wie im User-Homeverzeichnis, d.h. die führenden Punkte nicht entfernen bei .config oder .mozilla. Alte Einstellungen-Verzeichnisse müssen entspr. migriert werden.)
Die Systemvorlagen liegen bei uns unter /srv/samba/schools/default-school/program/Profilvorlage/
Die Vorlagen einfach einmalig verschieben z.B. von /home/linuxadmin/.mozilla nach /srv/samba/schools/default-school/program/Profilvorlage/
#!/bin/bash
#
# Programm-Einstellungs-Vorlagen aus Systemvorlagen under Benutzervorlagen verwenden
# fuer das Werdenfels-Gymnasium Garmisch-Partenkirchen
# Angepasst nach Skript-Vorlage von Dominik/foer Linuxmuster
#
# 2021-11-03 Thomas Schaefer Fachbuero fuer Informationstechnik GbR
#
# Dieses Script geht von folgedem Workflow aus:
# /home/linuxadmin wird als skel-Verzeichnis verwendet um neue lokale Home-Verzeichnisse anzulegen,
# d.h. hier können Programm-Voreinstellungen vorgegeben werden, welche nicht "servergespeichert" sein sollen (unabhängig von diesem Script)
# Programs (K:)/Profilvorlage/ beinhaltet die Programm-Voreinstellungen welche später individuell pro Benutzer "servergespeichert" abgelegt werden sollen
# Obiges Verzeichnis bitte "schlank" halten um unötige Wartezeiten beim erstmaligen Login eines Benutzers zu reduzieren.
# H:/Einstellungen/ beinhaltet die indivduellen Programm-Einstellungen der Benutzer welche in das lokale Home-Verzeichnis verlinkt werden
# Das Login-Log-File findet man unter /tmp/Username.Einstellungen
TEMPLATE="/home/$USER/media/Programs (K:)/Profilvorlage/"
USERTEMPLATE="$SERVERHOME/Einstellungen/"
LOG=/tmp/$USER.Einstellungen
echo `date` "Verarbeite $TEMPLATE" > "$LOG"
cd "$TEMPLATE"
if [ -d "$USERTEMPLATE" ]; then #prüfen ob es schon generell remote Profil gibt
mkdir -p "$USERTEMPLATE" #ansonsten remote Ordner "Einstellungen" anlegen
fi
for filename in .[a-z]* *; do
echo `date` "Bearbeite $filename ..." >> "$LOG"
rm -rf "$HOME/$filename" #ggf. lokale Konfig-Verzeichnis oder Link löschen (falls aus skel bzw. linuxadmin kopiert)
if [ ! -e "$USERTEMPLATE$filename" ]; then #prüfen ob es schon ein remote Profil fuer dieses Programm gibt
echo "Kopiere $TEMPLATE$filename nach $USERTEMPLATE" >> "$LOG"
cp -r "$TEMPLATE$filename" "$USERTEMPLATE" #TemplateProfil in das remote Userprofil kopieren
fi
ln -s "$USERTEMPLATE$filename" "$HOME/$filename" #Link vom remote Profilordner zum lokalen Profilordner erzeugen
done
echo "Fertig " `date` >> "$LOG"
mit dem Firefox-Profil komme ich noch nicht so recht weiter und die hier angebotenen Lösungen funktionieren bei mir nicht oder ich kann sie nicht richtig umsetzen.
Am ehesten funktioniert noch Dominiks Lösung (weiter oben Beitrag 28) , wenn ich sie „manuell“ unterstütze, d. h. z. B. vorher Verzeichnisse von Hand lösche.
Seine Zeilen habe ich zu folgendem Skript verarbeitet, dass dann unter /etc/linuxmusterLinuxclient7/onLogin.d liegt:
#!/bin/bash
# firefox profile on user share
if [ -d "$SERVERHOME/Einstellungen/firefox" ]; then #prüfen ob es schon ein remote Profil gibt
rm -rf "$HOME/.mozilla/firefox" #wenn ja lokales Profil löschen
ln -s "$SERVERHOME/Einstellungen/firefox" "$HOME/.mozilla/" #Link vom remote Profilordner zum lokalen Profilordner erzeugen
else
mkdir -p "$SERVERHOME/Einstellungen/firefox" #ansonsten remote Ordner anlegen
mv "$HOME/.mozilla/firefox" "$SERVERHOME/Einstellungen/" #lokales Profil auf den Server verschieben
ln -s "$SERVERHOME/Einstellungen/firefox" "$HOME/.mozilla/" #Link vom remote Profilordner zum lokalen Profilordner erzeugen
fi
Das läuft nicht rund, weil z. B. die User alle schon Profile vom „alten“ Client haben, die aber nicht im „neuen“ Firefox starten. Selbst wenn ich das alte Profil auf dem Serverhome vor der Anmeldung lösche, kommt es nicht zu einer sauberen Verlinkung des Einstellungsverzeichnisses. Die „besten“ Ergebnisse erziele ich, wenn ich das das alte Profil im Serverhome lösche und anschließend das Profil des linuxadmin dorthin kopiere. Dann scheint auch das Skript zu funktionieren, zumindest bleiben neue Bookmarks auch nach dem Syncen erhalten.
habe mir das Ganze heute nochmal genauer angeschaut und dabei festgestellt, dass es doch funktioniert, wenn man vor dem ersten Einsatz die vorhandenen Einstellungen im Homeverzeichnis des users löscht. Und das ist an und für sich auch nachvollziehbar. Ich hoffe, Dominik u. a. haben nichts dagegen, dass ich es auf Github hochgeladen habe;