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:
Man muss in /etc/apache2/conf-available/owncloud.conf
oben
<VirtualHost 172.16.2.2:443> SSLEngine on SSLCertificateFile /etc/apache2/ssl/owncloud.pem SSLCertificateKeyFile /etc/apache2/ssl/owncloud.key DocumentRoot /owncloud-data/ <Directory /var/www/owncloud> AllowOverride All order allow,deny Allow from all </Directory> </VirtualHost>
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).
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 2>/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:
<volume fstype="davfs" path="https://172.16.2.2/owncloud/remote.php/webdav/" mountpoint="~/OwnCloud" server="172.16.2.2" options="username=%(USER),nosuid,nodev,uid=%(USER)"> <not><user>root</user></not> </volume>
In der /etc/apache2/sites-enabled/default-ssl.conf
wurde lediglich der ServerName
auf den Wert von CN im Zertifikat gesetzt.
<VirtualHost *:443> 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.
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.:
<?xml version="1.0" encoding="UTF-8"?> <pam_mount> <debug enable="0" /> <mkmountpoint enable="1"/> <lsof>/usr/bin/lsof %(MNTPT)</lsof> <fsck>/sbin/fsck -p %(FSCKTARGET)</fsck> <cifsmount>/usr/sbin/linuxmuster-pam-mount %(SERVER) %(VOLUME) %(MNTPT) %(USER) "user=%(USER),%(OPTIONS)"</cifsmount> <umount>/usr/sbin/linuxmuster-pam-umount %(SERVER) %(VOLUME) %(MNTPT) %(USER)</umount> <mntcheck>/bin/mount</mntcheck> <pmvarrun>/usr/sbin/pmvarrun -u %(USER) -d -o %(OPERATION)</pmvarrun> <volume options="rw,nosuid,nodev,nobrl" user="*" mountpoint="~/Home_auf_Server" path="%(USER)" server="10.16.1.1" fstype="cifs" /> <volume options="username=%(USER),rw,nosuid,nodev,uid=%(USER)" mountpoint="~/Home_in_Cloud" path="https://server.von.aussen.de/owncloud/remote.php/webdav/" server="dummyserver" fstype="davfs"/> <volume options="rw,nosuid,nodev" user="*" mountpoint="/home/students" path="students" server="10.16.1.1" fstype="cifs" /> <volume options="rw,nosuid,nodev" user="*" mountpoint="/home/share" path="shares" server="10.16.1.1" fstype="cifs" /> <volume options="rw,nosuid,nodev" user="*" mountpoint="/home/samba/progs" path="pgm" server="10.16.1.1" fstype="cifs" /> <volume options="rw,nosuid,nodev" user="*" mountpoint="/home/samba/cds" path="cdrom" server="10.16.1.1" fstype="cifs" /> <volume options="rw,nosuid,nodev" user="*" mountpoint="/var/cache/sophomorix/tasks" path="tasks" server="10.16.1.1" fstype="cifs" /> </pam_mount>
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.
Bei selbst-signiertem Zertifikat muss man nur obige Schritte nachvollziehen und beachten:
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 2>/dev/null | openssl x509 -outform PEM > /etc/davfs2/certs/owncloud.pem
/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.