User Tools

Site Tools


doc:appunti:linux:sa:webdav

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:sa:webdav [2018/11/09 16:11] – [Installazione e configurazione di WebDAV CGI] niccolodoc:appunti:linux:sa:webdav [2020/03/02 12:05] (current) – [Accesso da Windows 7 e successivi] niccolo
Line 16: Line 16:
 <Location "/Documenti"> <Location "/Documenti">
     DAV On     DAV On
 +    DirectorySlash Off
     AuthType Basic     AuthType Basic
     AuthName "WebDAV"     AuthName "WebDAV"
Line 31: Line 32:
 <Location "/Amministrazione"> <Location "/Amministrazione">
     DAV On     DAV On
 +    DirectorySlash Off
     AuthType Digest     AuthType Digest
     BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On     BrowserMatch "MSIE" AuthDigestEnableQueryStringHack=On
Line 41: Line 43:
 </Location> </Location>
 </file> </file>
 +
 +Se possibile bisogna proteggere i file almeno a livello di gruppo, in questo modo:
 +
 +  - La directory condivisa **appartiene al gruppo** che ha facoltà di scrittura.
 +  - La directory ha lo **sticky bit di gruppo attivo** (mode 0x2770), così che gli oggetti creati in essa appartengono al gruppo stesso.
 +  - Gli utenti che si autenticano via WebDAV (su **/etc/apache2/htpasswd** oppure **/etc/apache2/htdigest**) sono elencati nel gruppo opportuno in **/etc/apache2/htgroup**, replicando le appartenenze di **/etc/group**.
 +  - L'utente **www-data** appartiene al gruppo, così Apache ha permesso di scrittura nella directory.
 +  - Apache ha una **umask 007** (si può mettere in ''/etc/apache2/envvars''), così che gli oggetti creati nella condivisione WebDAV non siano world-readable.
 +
 +Per verificare il funzionamento della condivisione WebDAV si può utilizzare **davfs** da riga di comando GNU/Linux. Installare il pacchetto Debian **davfs2** ed eseguire il comando:
 +
 +<code>
 +mount -t davfs -o noexec https://davserver.rigacci.org/Documenti /mnt
 +</code>
 +
 +Login e password vengono chieste interattivamente.
 ====== WebDAV CGI 0.8.3 ====== ====== WebDAV CGI 0.8.3 ======
  
Line 288: Line 306:
 </code> </code>
  
-**ATTENZIONE** per ogni accesso (**REMOTE_USER**viene creato un database SQLite3 diverso. Se tuttavia si vuole accedere contemporaneamente agli stessi file con utenti diversi bisogna che il database sia unico e scrivibile da tutti, altrimenti il meccanismo di lock non funziona.+**ATTENZIONE** Con la configurazione mostrata sopra per ogni **REMOTE_USER** che accede, viene creato un database SQLite3 diverso. Se tuttavia si vuole accedere contemporaneamente agli stessi file con utenti diversibisogna che il database sia unico e scrivibile da tutti, altrimenti il meccanismo di lock non funziona. 
 + 
 +====== Accesso da Windows 7 e successivi ====== 
 + 
 +Windows ha un client nativo per WebDAV, ma è risaputo che soffra di numerose limitazioni e difetti, inoltre il comportamento di tale client non è consistente nelle varie versioni di Windows. Esistono numerose ricette di compatibilità che prevedono l'inserimento di chiavi particolari nel **registry**, a seconda della **versione di Windows** in uso, ma in generale non funzionano. 
 + 
 +Una lettura interessante è **[[https://doc.owncloud.org/server/9.0/user_manual/files/access_webdav.html#accessing-files-using-microsoft-windows|Accessing Files Using Microsoft Windows]]** pubblicata su sito di //Owncloud// e **[[https://support.microsoft.com/en-gb/help/2673544/windows-7-cannot-automatically-reconnect-a-dav-share-when-basic-authen|Windows 7 cannot automatically reconnect a DAV share when Basic Authentication is used]]** pubblicata su //Microsoft Support//
 + 
 +L'accesso ad una risorsa WebDAV andrebbe fatta da **Computer** => **Connetti unità di rete**. Si specifica la lettera del disco (ad esempio **Z:**), si lascia in bianco il percorso **Cartella**, si attiva la spunta **Riconnetti all'avvio** e **Connetti con credenziali diverse**. Cliccando su **Connessione a un sito Web per l'archiviazione di documenti e immagini** viene chiesto il percorso di rete e appunto le credenziali. 
 + 
 +Il percorso di rete è qualcosa del genere: **%%https://dav.server.org:443/MYSHARE%%** (si usa https altrimenti l'autenticazione Basic farebbe transitare la password in chiaro), 
 + 
 +L'accesso fallisce, come si vede dai log di Apache l'errore è **401 Unauthorized**, in effetti l'autenticazione non è mai avvenuta: 
 + 
 +<code> 
 +"OPTIONS /MYSHARE HTTP/1.1" 401 3519 "-" "Microsoft-WebDAV-MiniRedir/6.1.7601" 
 +"OPTIONS /MYSHARE HTTP/1.1" 401 3519 "-" "Microsoft-WebDAV-MiniRedir/6.1.7601" 
 +"OPTIONS / HTTP/1.1" 200 2970 "-" "Microsoft-WebDAV-MiniRedir/6.1.7601" 
 +"PROPFIND / HTTP/1.1" 405 650 "-" "Microsoft-WebDAV-MiniRedir/6.1.7601" 
 +</code> 
 + 
 +Le soluzioni che prevedono di modificare o aggiungere chiavi nel nodo **HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters\** del registry non hanno funzionato. Né l'aggiunta della chiave **UseBasicAuth** impostata a 1, né la modifica di **BasicAuthLevel** da 1 a 2 ha avuto esito. 
 + 
 +Da quanto scritto nella knowledge base Microsoft sembra che il problema sia l'**incompatibilità del Credential Manager** (a partire da Windows 7) con la **Basic Authentication**, in particolare con la memorizzazione delle password. 
 + 
 +La soluzione è **connettere l'unità di rete dal prompt dei comandi** ad ogni avvio di Windows, **digitando la password** tutte le volte. 
 + 
 +Un'altra difficoltà è dovuta al fatto che Windows 7 **non accetta certificati autofirmati** per HTTPS, è necessario installare sul server web un certificato HTTPS firmato da una C.A. riconosciuta. 
 + 
 +Ecco la riga di comando necessaria a connettere il disco di rete Z: (il comando non necessita dei permessi di amministratore, ma richiede l'inserimento della password): 
 + 
 +<code> 
 +net use Z: https://dav.server.org:443/MYSHARE /persistent:no /user:myuser 
 +</code> 
 + 
 +Per disconnettere il disco è sufficiente: 
 + 
 +<code> 
 +net use Z: /delete 
 +</code> 
 + 
 +Il messaggio di errore di Windows nel caso in cui il server abbia un certificato auto-firmato è del tutto incomprensibile: 
 + 
 +<code> 
 +Errore di sistema 1790. 
 +Accesso alla rete non riuscito. 
 +</code> 
 + 
 +Al primo errore di autenticazione Windows entra in stato confusionale e non proverà più a connettersi. Un secondo tentativo infatti produce un messaggio di errore diverso, ancora più incomprensibile: 
 + 
 +<code> 
 +Errore di sistema 59. 
 +Errore di rete imprevisto. 
 +</code> 
 + 
 +Per forzare Windows a tentare nuovamente la connessione è necessario riavviare il servizio WebClient, usando i permessi di Administrator: 
 + 
 +<code> 
 +net stop WebClient 
 +net start WebClient 
 +</code>
doc/appunti/linux/sa/webdav.1541776315.txt.gz · Last modified: 2018/11/09 16:11 by niccolo