Gastzugang mit temporärem home

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Gastzugang mit temporärem home

Beitrag von scientific » 16.02.2017 14:42:32

Hi Leute!

Ich möchte gerne einen Rechner so aufsetzen, dass der einen Gastzugang mit temporärem Home hat, welches nach der Abmeldung gelöscht wird.

Ich hab im Forum einen Thread aus dem Jahr 2012 gefunden, welcher eine Vorgehensweise mit tmpfs empfiehlt.

Der Rechner hat aber nur 2GB RAM, und da wirds mit ein wenig Browsen mittlerweile schon bald mal recht knapp... Die Websites werden ja immer größer... :-(

Auf diesem Rechner soll Browsen mit Firefox oder Chromium möglich sein und das eine oder andere Dokument mit Libreoffice erstellen. Mehr wirds dort nicht geben. Und wenn die User etwas speichern wollen, sollen sie das auf mitgebrachten USB-Sticks tun.

Mittlerweile ist ja systemd ins Land gezogen. Jetzt denke ich daran, mittels tempfiles oder der User-Session das Home-Verzeichnis beim Login zu erstellen und beim Logout zu löschen.
Allfällige Konfigurationen würde ich in /etc/skel schreiben.

Mir ist nur noch nicht ganz klar, wie ich das angehen soll.

Hat dazu vielleicht jemand eine Idee?

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: Gastzugang mit temporärem home

Beitrag von uname » 16.02.2017 15:29:55

2 GB sind ja wohl mehr als genug. Ich habe nur 1 GB.

Du kannst den Cache des Firefox begrenzen und die Art des Cachings ändern. Entweder auf Platte oder RAM. Ok in deinen Fall wäre es ziemlich identisch ;-)
Allfällige Konfigurationen würde ich in /etc/skel schreiben.
Konfiguriere Firefox in /etc/firefox-esr/firefox-esr.js
Schau dir evtl. auch /etc/xdg an.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Gastzugang mit temporärem home

Beitrag von scientific » 16.02.2017 15:37:38

Ich denke, ich hab die Lösung gefunden... :)

Ich habe mittels

Code: Alles auswählen

sudo useradd -mb /run -s /bin/bash -c "Gast" gast; passwd gast
einen neuen Gast-User angelegt und ihm das Passwort "gast" verpasst.

Kontrolle:

Code: Alles auswählen

grep gast /etc/passwd
gast:x:1001:1001:Willkommen Gast:/run/gast:/bin/bash
Dann muss man als root in /etc/systemd/system ein neues Verzeichnis anlegen:

Code: Alles auswählen

sudo mkdir /etc/systemd/system/user@1001.service
Die Nummer nach dem @ muss der UID aus passwd entsprechen!!

in diesem Verzeichnis legt man dann eine Datei mit der Endung .conf an und befüllt sie folgendermaßen:

Code: Alles auswählen

sudo editor /etc/systemd/system/user@1001.service/tmphome.conf
[Service]
RuntimeDirectory=gast
ExecStartPre=/bin/cp -nr /etc/skel/. %t/gast
/etc/skel wird normalerweise nur beim Erstellen des Userhome mit adduser kopiert. Da das Verzeichnis aber temporär ist, muss es jedesmal neu beim Start wieder kopiert werden.
Überlegenswert ist, ein eigenes Skel für den Gastuser mit speziellen Konfigurationen anzulegen (.mozilla, Gnome-Configs...)

Ein Login per ssh ist damit nicht möglich. Aber Gnome startet ohne Probleme.

Wenn ich mich in Gnome abmelde, bleibt aber die user@1001.service erhalten.
Ändere ich in /etc/passwd die Shell auf /bin/bash und melde mich per ssh an und wieder ab, ist die user@1001.service auch beendet.
Das RuntimeDirectory wird nämlich nur gelöscht, wenn das Service beendet wird.

Wie bringe ich Gnome bzw. gdm bzw. systemd dazu, den Service nach Beendigung der Gnome-session dieses Service auch zu beenden?

[EDIT]
In /etc/systemd/logind.conf
Den folgenden Punkt auskommentieren und "gast" anfügen:

Code: Alles auswählen

KillOnlyUsers=gast
Damit werden alle Prozesse von Gast beim ausloggen beendet - und damit auch das RuntimeDirectory gelöscht.

lg scientific
Zuletzt geändert von scientific am 16.02.2017 16:28:12, insgesamt 1-mal geändert.
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Gastzugang mit temporärem home

Beitrag von scientific » 16.02.2017 15:41:28

uname hat geschrieben:2 GB sind ja wohl mehr als genug. Ich habe nur 1 GB.

Du kannst den Cache des Firefox begrenzen und die Art des Cachings ändern. Entweder auf Platte oder RAM. Ok in deinen Fall wäre es ziemlich identisch ;-)
Allfällige Konfigurationen würde ich in /etc/skel schreiben.
Konfiguriere Firefox in /etc/firefox-esr/firefox-esr.js
Schau dir evtl. auch /etc/xdg an.
Also meine Erfahrung mit 1GB RAM sind unerfreulich. Ein paar offene Tabs, und schon hängt das System, weil geswappt wird.
Gerade Facebook (und ich vermute, das wird auf dem Rechner auch genutzt werden), frisst sich da ziemlich voll.

Aber ich hab die Lösung ohne tempfs eh schon gefunden.
Die anderen Konfig-Geschichten muss ich mir noch zu Gemüte führen. Vielen Dank für die Hinweise..

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: Gastzugang mit temporärem home

Beitrag von uname » 16.02.2017 15:48:22

Ich denke mit der Shell /bin/false wird dein Anwender nicht wirklich glücklich ;-)

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Gastzugang mit temporärem home

Beitrag von scientific » 16.02.2017 16:19:59

uname hat geschrieben:Ich denke mit der Shell /bin/false wird dein Anwender nicht wirklich glücklich ;-)
Stimmt... Ich hab wieder /bin/bash als Shell eingetragen. :)
Hab das im Ursprungsposting geändert!

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Gastzugang mit temporärem home

Beitrag von scientific » 16.02.2017 18:14:03

Na das hab ich jetzt gebraucht...

Ich hab die Shell doch nicht auf /bin/false gehabt, sondern auf /bin/bash.

Hab sie auf /bin/false geändert, dann ist der User in gdm verschwunden. Hab sie wieder auf /bin/bash geändert -> Der User bleibt verschwunden in gdm.

Ich hab das Password mit passwd -d gast gelöscht, mit -l gesperrt, mit -u entsperrt... der User bleibt verschwunden.

Lege ich einen weiteren User an, erscheint der sofort in GDM. (per ssh eingeloggt, und dort das Anlegen ausgeführt...)

Lösche ich beide wieder und lege nur einen neuen User an (also die selbe UID wie der ursprüngliche, nicht sichtbare user = 1001), erscheint der sofort, nachdem ich ihm ein Passwort gegeben habe (oder mit passwd -d gast2 gelöscht).

Irgendwo muss in einem Cache der User "gast" gespeichert sein, sodass gdm ihn ausblendet... nur hab ich mich schon durch /etc /var und /tmp gegreppt, aber es findet sich kein "gast"... nirgendwo...

Wo könnte das noch gespeichert sein?

[EDIT]
Ich habs endlich gefunden!!!

Code: Alles auswählen

/var/lib/AccountsService/users/gast
hatte die Information, dass es ein SystemAccount wäre... hab das ganze File gelöscht, den User auch und neu angelegt. Jetzt erscheint Gast auch wieder in GDM, nachdem ich ihm ein Passwort gegeben habe (bzw. mit passwd -d gast ein nopassword)



lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Gastzugang mit temporärem home

Beitrag von scientific » 16.02.2017 18:27:26

Und natürlich ist das mit /run und einem "normalen" Verzeichnis Mist...
/run ist ebenfalls ein tmpfs... :-(

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Gastzugang mit temporärem home

Beitrag von ThorstenS » 16.02.2017 21:33:49

Ich würde das Kopieren vom Home mittels pam_mkhomedir automatisieren - ist portabler, weil die uid nicht bekannt sein muß und du noch weitere surf User anlegen könntest.
Über eine ~/.bash_logout mit immutable bit als Schutz vor Veränderungen, könntest du den User beim Abmelden sein ~ auch selbst löschen lassen. $SHLVL = 0 und tschüss ans Eigenheim und zur Sicherheit noch ein rm -rf /home/surf* beim Hochfahren des Systems.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Gastzugang mit temporärem home

Beitrag von scientific » 17.02.2017 13:07:21

ThorstenS hat geschrieben:Ich würde das Kopieren vom Home mittels pam_mkhomedir automatisieren - ist portabler, weil die uid nicht bekannt sein muß und du noch weitere surf User anlegen könntest.
Über eine ~/.bash_logout mit immutable bit als Schutz vor Veränderungen, könntest du den User beim Abmelden sein ~ auch selbst löschen lassen. $SHLVL = 0 und tschüss ans Eigenheim und zur Sicherheit noch ein rm -rf /home/surf* beim Hochfahren des Systems.
Was ist $SHLVL?
Ich bin mir grad noch nicht sicher, ob pam_mkhomedir wirklich soviel portabler ist.
Vielleicht liegt das auch daran, dass pam für mich ein ziemlich spanisches Dorf ist... in dem nochdazu Russisch gesprochen wird... :)
Wie unterscheide ich bei pam zwischen "normalen" Usern und "Surf-Usern"?

Ich hab jetzt mal eine Zwischenlösung, wo ich eine systemd-Unit habe, welche "home/gast" beim Login löscht, /etc/skel-gast nach /home/gast kopiert und die Benutzerrechte auf gast:gast setzt und die mittels Drop-In an die user@UID.service des Gastusers gehängt wird. Diese extra-Unit ist deswegen notwendig, weil ein User, dessen Home noch nicht besteht auf /home keine Schreibrechte hat und damit kein Verzeichnis erstellen darf.
user@UID.service wird aber mit den Benutzerrechten des User ausgeführt, deshalb muss dieser Service zuvor ein Service mit root-rechten triggern, welches das /home/gast anlegen darf.

Das funktioniert jetzt mal gut. Zufrieden bin ich aber noch nicht. Denn ich würd das gern über systemctl en/disable wie andere Services de/aktivieren können, nicht per cp eines Drop-Ins in ein für die ID zu erstellendes Verzeichnis in /etc/systemd/system...

Eventuell erscheint es mir sinnvoll, für Surfuser einen eigenen UID/GID-Kreis zu erstellen... Und genaugenommen benötigt man ohnehin realistischerweise nur einen einzigen Gast-Zugang auf einem Rechner... => Hohe UID/GID bei 64000, und die fix verdrahtet...

Das Löschen am Ende der User-Session (Reboot ist zu spät... Was ist, wenn sich ein USer ausloggt, und der nächste gleich einloggen will, dann hat er erst wieder die Daten des vorherigen in der Session!) funktioniert nur teilweise gut. Denn X logt mittlerweile nach ~/.local/share/... und solange X läuft, lässt sich natürlich das Verzeichnis nicht löschen.
Ich weiß jetzt noch nicht, wie ich ein Service aufrufe, welches NACH Beendigung von user@UID.service läuft.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
smutbert
Moderator
Beiträge: 8331
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Gastzugang mit temporärem home

Beitrag von smutbert » 17.02.2017 13:39:39

$SHLVL

steht wohl für shell level oder so ähnlich und gibt an in der wievielten "Tochtershell" man sich befindet. 0 ist also die Shell, die beim Anmelden gestartet wird und wenn man die beendet kann man das ganze Gerümpel, das im Homevzerzeichnis angelegt worden ist, wieder löschen.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Gastzugang mit temporärem home

Beitrag von scientific » 17.02.2017 14:28:35

Ok.

Davon hab ich noch nie gehört...
Na dann werd ich da mal weiterforschen :)

Vielen Dank
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Gastzugang mit temporärem home

Beitrag von ThorstenS » 18.02.2017 10:48:29

zur Variablen SHLVL = SHellLeveL:

Code: Alles auswählen

$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ bash
$ echo $SHLVL
3
$ exit
exit
$ echo $SHLVL
2
In der ~/.bash_logout steht bei mir

Code: Alles auswählen

# ~/.bash_logout: executed by bash(1) when login shell exits.

# when leaving the console clear the screen to increase privacy

if [ "$SHLVL" = 1 ]; then
    [ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
    /usr/local/bin/loggg
fi
D.h. loggg wird ausgeführt, sobald meine login-shell beendet wird.
Das greift aber nicht bei einer grafischen Session - sorry, das hatte
ich falsch in Erinnerung.


Du kennst dich mit systemd weit besser aus als ich und hast eine für dich funktionierende Lösung erstellt.
Die pam-Geschichte brauchst du nicht unbedingt, sieh das folgende einfach als Erweiterung deines Horizonts an.


Zu pam:
Das handling ist gewöhnungsbedürftig - keine Frage. Aber seit debian/squeeze
gibt es pam-auth-update von Steve Langasek (hatte den lenny freeze nur kurz verpasst).
Ruf es einfach mal auf, da siehst du schon vorhandene Profile.
Wenn du etckeeper/git aktiviert hast, siehst du mit einem git diff direkt die Änderungen, die das deaktivieren der einzelnen Module zur Folge hat.
Das handling ist recht bequem, wie ich finde.

So kannst du ganz einfach /usr/share/pam-configs/systemd als Vorlage nehmen und /usr/share/pam-configs/mkhomedir mit folgendem Inhalt anlegen:

Code: Alles auswählen

Name: Create home directory during login                                                                    
Default: yes
Priority: 0
Session-Interactive-Only: yes
Session-Type: Additional
Session:
        optional        pam_mkhomedir.so skel=/etc/skel-surf
Vergleiche auch folgenden Bugreport: https://bugs.debian.org/cgi-bin/bugrepo ... bug=568577

man pam_mkhomedir sagt:

Code: Alles auswählen

pam_mkhomedir.so [silent] [umask=mode] [skel=skeldir] 
Daher der Verweis auf ein eigenes Skel für deinen Surf-User.

Wenn du einen normalen User anlegen möchtest, greift /etc/skel, weil in der /etc/adduser.conf SKEL=/etc/skel konfiguriert ist.
Darum gibt es für den normalen Betrieb keine Einschränkungen.

Was deine systemd-unit machen muß, ist einfach das homeverzeichnis löschen.

Falls du den lightdm benutzt, kannst du auf session-cleanup-script zurückgreifen (siehe /etc/lightdm/lightdm.conf ). Aber achte darauf, dass du in dem Script $USER auswertest und nur im Falle des/der Surfuser das Homeverzeichnis platt machst :lol:

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Gastzugang mit temporärem home

Beitrag von scientific » 19.02.2017 13:30:59

Ich hab jetzt eine schöne Lösung, rein systemd-basierend gefunden.
Ich erweitere diese noch um die Möglichkeit, das Homeverzeichnis nicht nur zu klonen mittels cp, sondern um die btrfs-Funktion snapshot, falls das auf einem system vorhanden ist.
Diese snapshots kann ich dann explizitbei meinem backupskript ausschließen.

Jetzt steh ich vor der Herausforderung, wie ich so einen Gastzugang so absichere, dass ein allfällig bewanderter User möglichst wenig anstellen kann.

Was sollte ich da beachten?

Ich poste am Abend dann meine vorläufige Lösung, damit die einmal für die Nachwelt dokumentiert bleibt.

Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Gastzugang mit temporärem home

Beitrag von scientific » 19.02.2017 22:59:11

Ich hab jetzt viel getestet.
pam_mkhomedir macht prinzipiell das, was ich möchte, jedoch bereitete mir das Löschen des Verzeichnisses größere Probleme.
Die Geschichte mit systemd user@UID.service ist so aufgebaut, dass user@UID.service gestartet bei der ersten Anmeldung eines Users gestartet wird, und nach der letzten Anmeldung wieder beendet. Ein Löschen mittels PAM würde bei einer zweiten Anmeldung und wieder Abmeldung home löschen, obwohl der User ja noch angemeldet ist... (graphisch und z.B. auf einem Text-TTY)

Außerdem legt pam_mkhomedir das Homedir zu spät für systemd an. Ich habe ein paar User-Services mit systemd gestartet, welche eine unit in ~/.config/systemd/user erwarten, sobald user@UID.service gestartet wird. Da existiert das Home aber noch nicht.

Jetzt habe ich es so gelöst. Ich habe mir eine Service-Unit erstellt
/etc/systemd/system/guest-home@.service

Code: Alles auswählen

[Unit]
Description=Create and delete $HOME for Guest-Session USER: %i
Before=user@%i.service
#BindsTo=user@%i.service guest-session@%i.service
Conflicts=shutdown.target
BindsTo=user@%i.service
#RefuseManualStart=true

[Service]
Type=oneshot
RemainAfterExit=true
Environment="SOURCE='/etc/skel-gast'"
ExecStartPre=/bin/sh -c '/bin/systemctl set-environment UHOME=$(getent passwd %i | cut -d: -f6)'
ExecStartPre=/etc/systemd/system/scripts/guest-session-homedir.sh create /etc/skel-gast "$UHOME"
ExecStart=/bin/chown -R %i:%i "$UHOME"
ExecStop=-/etc/systemd/system/scripts/guest-session-homedir.sh delete "$UHOME"

[Install]
WantedBy=user@%i.service

Diese Unit erstellt das Home-Verzeichnis des Gast-Users direkt nach dem ersten Login und löscht es wieder nach dem letzten Logout.

Die folgende Unit erstellt einen Gastuser nach dem booten und löscht den wieder vor dem Runterfahren.

/etc/systemd/system/guest-session@.service

Code: Alles auswählen

[Unit]
Description=Create guest-user (%i) and activate volatile $HOME for it

[Service]
RemainAfterExit=true
ExecStartPre=/bin/sh -c '/bin/systemctl set-environment UNAME=$(echo %i|tr '[:upper:]' '[:lower:]' )'
ExecStartPre=/usr/sbin/adduser --no-create-home --gecos "%i" --disabled-password $UNAME 
ExecStartPre=/bin/sh -c '/bin/systemctl set-environment GUESTUID=$(/usr/bin/id -u $UNAME )'
ExecStartPre=/usr/bin/passwd -d $UNAME
#ExecStartPre=/bin/sh -c '/bin/systemctl daemon-reload'
#ExecStart=/bin/echo $GUESTUID
ExecStart=/bin/sh -c "/bin/systemctl enable guest-home@$GUESTUID.service"
ExecStop=/bin/sh -c "/bin/systemctl disable guest-home@$GUESTUID.service"
ExecStopPost=/usr/sbin/deluser --remove-home $UNAME

[Install]
WantedBy=multi-user.target

Damit das nach dem nächsten Reboot auch passiert, ist folgendes auszuführen:

Code: Alles auswählen

systemctl enable guest-session@$USERNAME.service
für $USERNAME ist das einzufügen, was man am GDM stehen haben will. Also z.B. "Gast" oder "Surfuser"

Damit es gleich funktioniert ist nach "enable" noch "--now" einzufügen, damit wird nicht nur der Symlink erstellt, sondern der Service auch gleich gestartet.

In der ersten Unit (guest-home@.service) wird noch ein Skript aufgerufen, welches auf das Vorhandensein eines btrfs prüft und davon abhängig von /etc/skel-gast einen Snapshot macht, oder dieses Verzeichnis nur nach /home/$username kopiert.
Den Snapshot für Home (falls möglich) benötige ich, dass ich diesen für die Backups ausschließen kann, damit da nicht irrtümlich etwas im Backup landet, oder dieses mit Surfprofilen vollgemüllt wird.

/etc/systemd/system/scripts/guest-session-homedir.sh

Code: Alles auswählen

#!/bin/bash

#create or delete volatile homedir for a guest-session depending wheter btrfs is available or not.
BTRFS="/bin/btrfs"
RSYNC="/usr/bin/rsync"
MKDIR="/bin/mkdir"
RM="/bin/rm"

check_btrfs () {
	FS=$(stat -f --format=%T "$1")
	if [ "$FS" = "btrfs" ]; then
		return 0
	else
		return 1
	fi
}

check_btrfs_subvolume () {
	FS=$(stat --format=%i "$1")
	if [ $FS -eq 256 ]; then
		return 0
	else
		return 1
	fi
}


delete_home () {
	echo "delete home $DST"
	if [ -d "$DST" ]; then
		if check_btrfs_subvolume "$DST"; then
			$BTRFS subvolume delete -c "$DST"
		else
			$RM -rf "$DST"
		fi
	fi
}

create_home () {
	echo "XXX $UID $SRC $DSTDIR $DST"
	if check_btrfs "$SRC"; then
		if check_btrfs "$DSTDIR"; then
			if check_btrfs_subvolume "$SRC"; then
				$BTRFS subvolume snapshot "$SRC" "$DST"
			else
				$BTRFS subvolume create "$DST"
				$RSYNC -a "$SRC/" "$DST"
			fi
		else
			$MKDIR "$DST"
			$RSYNC -a "$SRC/" "$DST"
		fi
	else
		if check_btrfs "$DST"; then
			$BTRFS subvolume create "$DST"
		else
			$MKDIR "$DST"
		fi
		$RSYNC -a "$SRC/" "$DST"
	fi
}

while :
do
	case $1 in
		create)
			shift
			export SRC="$(dirname "$1")/$(basename "$1")"
			export DST="$(dirname "$2")/$(basename "$2")"
			export DSTDIR="$(dirname $DST)"
			delete_home 
			create_home 
			break
			;;
		delete)
			shift
			export DST="$(dirname "$1")/$(basename "$1")"
			export DSTDIR="$(dirname $DST)"
			delete_home 
			break
			;;
		*)
			exit 1
	esac
done
lg scientific
PS: Ich habe diese 3 Units/Skripte in mein Repo integriert. Das Paket heißt my-services und ist in der Sig zu finden.
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Gastzugang mit temporärem home

Beitrag von ThorstenS » 20.02.2017 08:19:26

klingt nach einer runden Lösung - danke fürs Dokumentieren. :THX:

Ich baue das mal nach, wenn ich den Rechner zu Hause auf stretch umstelle

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Gastzugang mit temporärem home

Beitrag von scientific » 20.02.2017 09:28:24

Ein paar Kleinigkeikten fehlen noch.
Eine Default-Auswahl von /etc/skel, falls /etc/skel-gast nicht vorhanden ist, bzw. /etc/skel$username statt /etc/skel-gast, damit sind dann mehrere unterschiedliche User mit verschiedenen Einstellungen möglich.
Z. B. Voreingestellte Desktop-Sprachen ode4 unterschiedliche Dienste im Userumfeld (systemd --user...)
Die exclude-Funktion in meinem Backupskript fehlt ebenfalls noch.

Wenn ichs fertig habe, lagere ich den Gastzugang als eigenständiges Paket aus. So kannst du einfach das deb runterladen und mit dpkg -i installieren.

Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: Gastzugang mit temporärem home

Beitrag von ThorstenS » 20.02.2017 11:08:23

merci

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Gastzugang mit temporärem home

Beitrag von scientific » 21.02.2017 09:43:22

So. Ich habs in ein eigenes Paket ausgelagert.
Du findest es hier https://github.com/xundeenergie/guestsession

Achtung, das ist noch in Entwicklung.
Ich lerne gerade die deb-helper fürs Paketieren zu nutzen. Daher ist nicht jede Version sauber zu installieren.
Im Github-Repo findest du aber die notwendigen Files in /etc/systemd...
Die kannsu du auch manuell kopieren.
Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: Gastzugang mit temporärem home

Beitrag von uname » 23.02.2017 15:05:27

Sehr schön. Du solltest aber noch die von dir gewünschte Lizenz hinzufügen.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Gastzugang mit temporärem home

Beitrag von scientific » 23.02.2017 15:06:39

Ja ich weiß. Es wird die LGPL.
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: Gastzugang mit temporärem home

Beitrag von uname » 23.02.2017 15:19:39

Dass Du statt GPL "nur" LGPL verwendest ist nachvollziehbar, da es wenig Sinn macht, dass der Anwender evtl. Änderungen an der Software offenlegt.
Trotzdem würde ich gerne wissen, ob Gründe für oder gegen die MIT License (MIT) sprechen bzw. wo die Unterschiede zur LGPL liegen.
Vielleicht kennt sich jemand damit aus.

Antworten