doc:appunti:linux:sa:webdav
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
doc:appunti:linux:sa:webdav [2018/11/09 09:40] – [WebDAV CGI 1.1.2 Beta] niccolo | doc:appunti:linux:sa:webdav [2020/03/02 12:05] – [Accesso da Windows 7 e successivi] niccolo | ||
---|---|---|---|
Line 16: | Line 16: | ||
< | < | ||
DAV On | DAV On | ||
+ | DirectorySlash Off | ||
AuthType Basic | AuthType Basic | ||
AuthName " | AuthName " | ||
Line 31: | Line 32: | ||
< | < | ||
DAV On | DAV On | ||
+ | DirectorySlash Off | ||
AuthType Digest | AuthType Digest | ||
BrowserMatch " | BrowserMatch " | ||
Line 41: | Line 43: | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | 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 **/ | ||
+ | - L' | ||
+ | - Apache ha una **umask 007** (si può mettere in ''/ | ||
+ | |||
+ | 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: | ||
+ | |||
+ | < | ||
+ | mount -t davfs -o noexec https:// | ||
+ | </ | ||
+ | |||
+ | Login e password vengono chieste interattivamente. | ||
====== WebDAV CGI 0.8.3 ====== | ====== WebDAV CGI 0.8.3 ====== | ||
Line 190: | Line 208: | ||
La nuova versione **[[https:// | La nuova versione **[[https:// | ||
+ | |||
+ | FIXME La documentazione fa riferimento al pacchetto **speedy-cgi-perl** che sarebbe da installare prima di WebDAV CGI. Si tratta di una implementazione CGI Perl persistente, | ||
+ | |||
+ | ===== Installazione librerie necessarie ===== | ||
+ | |||
+ | Anzitutto sono necessari alcuni **pacchetti Debian**, questa dovrebbe essere la lista minima: | ||
+ | |||
+ | < | ||
+ | apt-get install \ | ||
+ | libdbi-perl libdbd-sqlite3-perl sqlite3 libtimedate-perl \ | ||
+ | libuuid-tiny-perl libxml-simple-perl libquota-perl \ | ||
+ | libarchive-zip-perl libgraphics-magick-perl \ | ||
+ | libfile-copy-link-perl libjson-perl libdatetime-perl \ | ||
+ | libnet-ldap-perl libimage-exiftool-perl \ | ||
+ | liblist-moreutils-perl libcgi-session-perl libwww-csrf-perl | ||
+ | </ | ||
+ | |||
+ | Purtroppo è necessario installare anche alcune **librerie non pacchettizzate Debian**, si possono installare tramite **[[wp> | ||
+ | |||
+ | < | ||
+ | cpan install DateTime:: | ||
+ | cpan install IO:: | ||
+ | </ | ||
+ | |||
+ | Vengono installati alcuni file e directory, in particolare nelle directory indicate qui sotto cercare file o subdirectory con nome del tipo **DateTime**, | ||
+ | |||
+ | < | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | ===== Preparazione localizzazioni ===== | ||
+ | |||
+ | Bisogna creare un file con l' | ||
+ | |||
+ | < | ||
+ | mkdir -p / | ||
+ | cp /dev/null / | ||
+ | for l in de_DE en_US fr_FR it_IT hu_HU ; do | ||
+ | fgrep $l / | ||
+ | done | ||
+ | locale-gen | ||
+ | </ | ||
+ | |||
+ | Al termine dell' | ||
+ | |||
+ | ===== Installazione e configurazione di WebDAV CGI ===== | ||
< | < | ||
Line 195: | Line 262: | ||
mv webdavcgi-master webdavcgi | mv webdavcgi-master webdavcgi | ||
chown -R root.root webdavcgi | chown -R root.root webdavcgi | ||
+ | cd webdavcgi | ||
+ | bash install.sh | ||
+ | </ | ||
+ | |||
+ | La procedura **install.sh** controlla la presenza delle librerie necessarie e opzionali: **controllare attentamente l' | ||
+ | |||
+ | Il wrapper più importante è **./ | ||
+ | |||
+ | Al termine dell' | ||
+ | |||
+ | < | ||
+ | cd .. | ||
+ | mv webdavcgi / | ||
+ | </ | ||
+ | |||
+ | La configurazione va fatta in **/ | ||
+ | |||
+ | <code perl> | ||
+ | ## the install base is needed to find webdav-ui.* and locale files | ||
+ | ## (don't forget the trailing slash): | ||
+ | $INSTALL_BASE = '/ | ||
+ | |||
+ | ## the backend module (supported: FS, AFS, GFS, SMB, DBB, RCS, GIT): | ||
+ | $BACKEND = ' | ||
+ | |||
+ | ## this is an example if a user starts with home dir (http:// | ||
+ | $VIRTUAL_BASE = '/'; | ||
+ | $DOCUMENT_ROOT = '/ | ||
+ | ## if you use a complex home folder structure, try this: | ||
+ | # $DOCUMENT_ROOT=(getpwnam($ENV{REMOTE_USER}))[7].'/'; | ||
+ | |||
+ | $DBI_SRC=' | ||
+ | $DBI_USER=''; | ||
+ | $DBI_PASS=''; | ||
+ | $CREATE_DB = !-e '/ | ||
+ | </ | ||
+ | |||
+ | I database SQLite3 di supporto verranno creati in **/ | ||
+ | |||
+ | < | ||
+ | mkdir / | ||
+ | chmo 1777 / | ||
+ | </ | ||
+ | |||
+ | **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 diversi, bisogna 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' | ||
+ | |||
+ | Una lettura interessante è **[[https:// | ||
+ | |||
+ | L' | ||
+ | |||
+ | Il percorso di rete è qualcosa del genere: **%%https:// | ||
+ | |||
+ | L' | ||
+ | |||
+ | < | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | </ | ||
+ | |||
+ | 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' | ||
+ | |||
+ | Da quanto scritto nella knowledge base Microsoft sembra che il problema sia l' | ||
+ | |||
+ | La soluzione è **connettere l' | ||
+ | |||
+ | Un' | ||
+ | |||
+ | Ecco la riga di comando necessaria a connettere il disco di rete Z: (il comando non necessita dei permessi di amministratore, | ||
+ | |||
+ | < | ||
+ | net use Z: https:// | ||
+ | </ | ||
+ | |||
+ | Per disconnettere il disco è sufficiente: | ||
+ | |||
+ | < | ||
+ | net use Z: /delete | ||
+ | </ | ||
+ | |||
+ | Il messaggio di errore di Windows nel caso in cui il server abbia un certificato auto-firmato è del tutto incomprensibile: | ||
+ | |||
+ | < | ||
+ | Errore di sistema 1790. | ||
+ | Accesso alla rete non riuscito. | ||
+ | </ | ||
+ | |||
+ | 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: | ||
+ | |||
+ | < | ||
+ | Errore di sistema 59. | ||
+ | Errore di rete imprevisto. | ||
+ | </ | ||
+ | |||
+ | Per forzare Windows a tentare nuovamente la connessione è necessario riavviare il servizio WebClient, usando i permessi di Administrator: | ||
+ | |||
+ | < | ||
+ | net stop WebClient | ||
+ | net start WebClient | ||
</ | </ |
doc/appunti/linux/sa/webdav.txt · Last modified: 2020/03/02 12:05 by niccolo