{{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.