{{tag> }}
====== Einbinden des Cloud-Verzeichnisses im Linux-Client ======
Wenn man das Home-Verzeichnis auf dem Server und das Home-Verzeichnis in der Cloud separat halten will, auf dem (Linux-)Client aber beide anbieten will, gibt es zwei Möglichkeiten:
* owncloud-client installieren und einrichten (synchronisiert komplett in ein angegebenes Verzeichnis, z.B. ~/OwnCloud)
* über den PAM-Anmeldedienst den Cloud-Ordner automatisiert in ein Verzeichnis einbinden.
===== Einbinden über PAM =====
==== Funktionsfähige Konfiguration mit self-signed Zertifikat ====
=== Auf dem Owncloud-Server ===
Man muss in ''/etc/apache2/conf-available/owncloud.conf'' oben
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/owncloud.pem
SSLCertificateKeyFile /etc/apache2/ssl/owncloud.key
DocumentRoot /owncloud-data/
AllowOverride All
order allow,deny
Allow from all
einfügen, dabei 172.16.2.2 mit dem hostname ersetzen. hostname und domainname der owncloud (setzen mit ebendiesen Befehlen) sollten den gleichen Wortlaut haben (sonst gings bei mir nicht, ich habe alles auf die IP gesetzt.). Der gleiche Wortlaut muss auch noch in /etc/apache2/conf-available/ServerName.conf rein und diese Datei mit dem Befehl "a2enconf ServerName" aktiviert werden (ich hatte keinen FQDN angegeben). Jetzt noch ein Zertifikat in /etc/apache2/ssl mit
openssl req -new -x509 -days 3650 -nodes -out /etc/apache2/ssl/owncloud.pem -keyout /etc/apache2/ssl/owncloud.key
erstellen. Apache 2 neu starten (service apache2 reload).
=== am Client (Ubuntu 14.04) ===
davfs2 installieren\\
beim Linuxadmin im Home den Ordner OwnCloud erstellen\\
nach /etc/davfs2/certs/ laufen und mit
openssl s_client -connect 172.16.2.2:443 -showcerts /dev/null | openssl x509 -outform PEM > owncloud.pem
das Zertifikat holen (IP oder Servername anpassen). Dann muss man das Zertifikat in der /etc/davfs2/davfs2.conf eintragen:
servercert /etc/davfs2/certs/owncloud.pem
Jetzt kann man zwar immer noch nicht mit "sudo mount -t davfs https://172.16.2.2/owncloud/remote.php/webdav/ /home/testuser/OwnCloud/" mounten, ohne eine Zertifikatswarnung zu bekommen, aber PAM kann es beim login. Hierzu müssen wir das davfs in /etc/security/pam_mount.conf.xml eintragen. Wenn man linuxmuster-client-auth diese Datei jedesmal neu schreiben lässt, muss man die davfs-Zeile in /var/lib/linuxmuster-client-shares/templates/etc/security/pam_mount.conf.xml eintragen. Die Zeile lautet:
root
==== Funktionsfähige Konfiguration mit/ohne trusted Zertifikat ====
=== Auf dem Owncloud-Server ===
In der ''/etc/apache2/sites-enabled/default-ssl.conf'' wurde lediglich der ''ServerName'' auf den Wert von CN im Zertifikat gesetzt.
ServerName server.von.aussen.de
Weiterhin gehe ich davon aus, dass verschlüsseltes Browsen zu dieser Domain tadellos funktioniert, d.h. das Zertifikat von den aktuellen Browsern standardmäßig akzeptiert wird.
=== Auf dem Client (Ubuntu 16.04) ===
Mit vertrauenswürdigem Zertifikat muss man auf dem Client nur ''davfs2'' installieren
client~# aptitude install davfs2
und die Datei ''pam_mount.conf.xml'' neu bereitgestellt werden. Das geht direkt in ''/etc/security/pam_mount.conf.xml'', wenn der linuxmuster-client-auth automatische Mechanismus abgeschaltet ist, ansonsten über ''/var/lib/linuxmuster-client-shares/templates/etc/security/pam_mount.conf.xml''.
Über den universellen Postsync Mechanismus, z.B.:
/usr/bin/lsof %(MNTPT)
/sbin/fsck -p %(FSCKTARGET)
/usr/sbin/linuxmuster-pam-mount %(SERVER) %(VOLUME) %(MNTPT) %(USER) "user=%(USER),%(OPTIONS)"
/usr/sbin/linuxmuster-pam-umount %(SERVER) %(VOLUME) %(MNTPT) %(USER)
/bin/mount
/usr/sbin/pmvarrun -u %(USER) -d -o %(OPERATION)
**Wermutstropfen**
* In der jetzigen Version von linuxmuster-client wird beim Hinzufügen der ''Home_in_Cloud'' Zeile beim mounten die Skripte nicht ausgeführt, dafür müsste man linuxmuster-pam-mount verändern, weil es nur "cifs" Dateisysteme mountet.
* ''server="dummyserver"'' muss aber gesetzt sein, weil sonst die Cloud nicht ausgehangen wird.
* ''/etc/linuxmuster-client/pre-mount.d/010-profilecopy'' sollte gepatched werden, um in Ausnahmefällen Datenverlust zu vermeiden. Der Teil
# this script gets executed only once, before the users home from the
# server gets mounted. in this case $USER and $VOLUME are the same
if [ $USER != $VOLUME ]; then
return 0
fi
sollte ersetzt werden durch
# this script gets executed only once, before the users home from the
# server gets mounted. in this case $USER and $VOLUME are the same
requestserverip=$(gethostip $SERVER 2>/dev/null | awk '{print $2}')
mainserverip=$(grep "^uri\ ldap://" /etc/ldap.conf | head -n 1 | sed "s@^uri\ ldap://@@;s@/.*@@")
if [ $USER != $VOLUME -o "$mainserverip" != "$requestserverip" ]; then
return 0
fi
# if Home_auf_Server is not empty for some reason, don't sync
. /etc/linuxmuster-client/linuxmuster-client.conf || exit 1
if [ "$(ls -A $HOMEDIR/$HOMEFOLDERNAME)" ]; then
msg2log pre-mount "$HOMEFOLDERNAME is not empty."
exit 1
fi
# if some left over mountpoint is found under $HOMEDIR, don't sync
if grep "$HOMEDIR" /proc/mounts >/dev/null; then
msg2log pre-mount "Somethings seems to be mounted under $HOMEDIR, not syncing."
exit 1
fi
Mit dem vertrauenswürdigen Zertifikat funktioniert nun sowohl händische Mounten client~$ sudo mount -t davfs https://server-von-aussen.de/owncloud/remote.php/webdav/ /home/testuser/OwnCloud/
als auch das automatische Erstellen und Einbinden in das Verzeichnis ''~/Home_in_Cloud''. Der Ordner wird als neu eingebundenes Laufwerk standardmäßig auch auf dem Desktop angezeigt.
Das ganze funktioniert bei mir sogar bei abgeschaltetem Internetzugang im Klassenzimmer (im GRÜNen Netz), während der Owncloud-Server in ORANGE steht und das auch obwohl der Owncloud-Server über seinen externen hostnamen angesprochen wird.
Bei selbst-signiertem Zertifikat muss man nur obige Schritte nachvollziehen und beachten:
* Zertifikat (auf dem Server) erstellen und (auf dem Client) herunterladen
server~# openssl req -new -x509 -days 3650 -nodes -out /etc/apache2/ssl/owncloud.pem -keyout /etc/apache2/ssl/owncloud.key
client~# openssl s_client -connect server.von.aussen.de:443 -showcerts /dev/null | openssl x509 -outform PEM > /etc/davfs2/certs/owncloud.pem
* Folgende Zeile in ''/etc/davfs2/davfs2.conf'' eintragen
trust_server_cert /etc/davfs2/certs/owncloud.pem
Nun funktioniert bei mir (Ubuntu 16.04) das händische Mounten, sowie das automatische Einbinden, wie oben beschrieben.