Wie werden unter lmn7 Profile (firefox und co) gespeichert?

Hi Dominik,

Cool :+1:
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

VG, Dorian

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…

Viele Grüße!
Michael

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:

drwxr-xr-x+  arduino/
drwxr-xr-x+  Arduino/
drwxr-xr-x+  .arduino15/
drwxr-xr-x+  .bluej/
drwxr-xr-x+  firefox/
drwxr-xr-x+  libreoffice/
drwxr-xr-x+  thunderbird/

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…?!

Viele Grüße,
Michael

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… :slight_smile:
Danke euch allen!
LG, Alex

Hallo Michael.

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…

VG Dominik

1 „Gefällt mir“

Hi Dominik,

Genau so ist es gedacht :slight_smile:
Ich würde mich freuen, wenn du deine Scripte in dieser GitHub issue posten könntest:

Wir würden gerne eine kleine Sammlung mit Beispielen erstellen.

VG, Dorian

1 „Gefällt mir“

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 :wink: Vielleicht kriegt das einer hin, dann ist es schöner.

LG
Max

1 „Gefällt mir“

Hallo Max,

genau diese Variable (SERVERHOME) stellt das linuxmuster-linuxclient7-Paket bereits zur Verfügung.

Viele Grüße
Christoph

Hallo Christoph,

Sehe ich da was falsch?
$SERVERHOME enthält bei meinem User musterma folgendes:

/home/musterma/media/musterma

Das Verzeichnis heißt aber korrekt:
/home/musterma/media/musterma (H:)

So bringt die Variable uns also nicht recht weiter…

Viele Grüße,
Stefan

Hallo,

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.

Viele Grüße,
Stefan

Das sollte nicht so sein. Hast du die Variable mit Anführungszeichen verwendet?

VG, Dorian

Hallo Dorian,

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…

Viele Grüße,
Stefan

Hallo Stefan,

wenn ich mich nicht täusche, müsste es

ln -sfn "$SERVERHOME/Einstellungen/firefox" "$HOME/.mozilla/firefox"

lauten. Kann es aber gerade nicht testen.

Viele Grüße
Christoph

Hallo Stefan,
und jetzt wäres natürlich toll, wenn du dein Script noch posten könntest - falls du das willst.
Ich hätte Interesse.
LG Daniel

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"
2 „Gefällt mir“

Hallo TomS,

recht herzlichen Dank für die Bereitstellung.

Beste Grüße

Thorsten

Hallo,

mein Desktop sind jetzt so aus:

homelink

Der persönliche Ordner vom Linuxadmin ist weg, stattdessen ein direkter symbolischer Link auf das Userhome. Beschrieben habe ich es hier:

Viele Grüße

Wilfried

Hi Wilfried,

Cool! Genau da gehörts hin :+1:

VG, Dorian

Hallo zusammen,

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.

Viele Grüße

Wilfried

Hallo,

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;

Viele Grüße

Wilfried

2 „Gefällt mir“