Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:owncloud:owncloudmounting]] 

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

/etc/apache2/conf-available/owncloud.conf
<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).

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

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.

/etc/apache2/sites-enabled/default-ssl.conf
<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.

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

/var/linbo/linuxmuster-client/ubuntu1604/common/etc/security/pam_mount.conf.xml
<?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>
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

    /etc/linuxmuster-client/pre-mount.d/010-profilecopy
    # 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 2>/dev/null | openssl x509 -outform PEM > /etc/davfs2/certs/owncloud.pem
  • Folgende Zeile in /etc/davfs2/davfs2.conf eintragen
    /etc/davfs2/davfs2.conf
    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.

 [[anwenderwiki:owncloud:owncloudmounting]] anwenderwiki/owncloud/owncloudmounting.txt · Zuletzt geändert: 2016/03/15 02:34 von 127.0.0.1