Εισαγωγή
Web Distributed Authoring and Versioning (WebDAV) είναι μια επέκταση HTTP που παρέχει ένα πλαίσιο για απομακρυσμένη δημιουργία και τροποποίηση αρχείων σε έναν διακομιστή. Ο WsgiDAV είναι ένας διακομιστής WebDAV γραμμένος σε python. Αυτός ο οδηγός θα σας βοηθήσει κατά την εγκατάσταση της έκδοσης 3.0 του WsgiDAV σε διακομιστή Vultr που εκτελεί το Debian 10. Θα λάβουμε επίσης ένα πιστοποιητικό SSL για την παροχή ασφαλούς σύνδεσης καθώς και έλεγχο ταυτότητας PAM.
Προαπαιτούμενα
- Ένα σύστημα Debian 10 στο οποίο έχετε προνομιακή πρόσβαση (μέσω του χρήστη root ή οποιουδήποτε χρήστη sudo.)
- Η
$EDITOR
μεταβλητή περιβάλλοντος πρέπει να οριστεί σε ένα πρόγραμμα επεξεργασίας κειμένου της επιλογής σας.
- Απαιτείται ένα καταχωρημένο όνομα τομέα. Οι διακομιστές ονομάτων του πρέπει να διαμορφωθούν με μια
A
εγγραφή που να δείχνει τη διεύθυνση IPv4 του διακομιστή σας και προαιρετικά μια AAAA
εγγραφή που να δείχνει τη διεύθυνση IPv6.
- Συνιστάται η εξοικείωση με τη σύνταξη YAML.
Το σύμβολο κράτησης θέσης dav.example.com
θα χρησιμοποιηθεί για το όνομα τομέα του διακομιστή σας.
Εγκατάσταση
Πιστοποιητικό SSL
Θα ξεκινήσουμε με την ενημέρωση του συστήματος και την απόκτηση ενός δωρεάν πιστοποιητικού SSL από το Let's Encrypt . Για να το κάνετε αυτό, ενημερώστε πρώτα το σύστημά σας και εγκαταστήστε το certbot
βοηθητικό πρόγραμμα:
sudo apt update sudo apt upgrade -y sudo apt install -y certbot
Στην παρακάτω εντολή, αντικαταστήστε dav.example.com
και [email protected]
με το όνομα τομέα και τη διεύθυνση email σας αντίστοιχα πριν την εκτελέσετε:
sudo certbot certonly --standalone --agree-tos -m [email protected] -d dav.example.com
Θα σταλεί στον διακομιστή σας μια πρόκληση για να επαληθευτεί ότι ελέγχετε το όνομα τομέα που καθορίσατε. Εάν επιτύχει, το πιστοποιητικό θα εκδοθεί και θα αποθηκευτεί, μαζί με άλλα αρχεία, όπως το ιδιωτικό κλειδί, στο /etc/letsencrypt/live/dav.example.com/
.
Εγκατάσταση του WsgiDAV
Πρώτα, εγκαταστήστε τον διαχειριστή πακέτων python pip
:
sudo apt update sudo apt install -y python3-pip
Το WsgiDAV απαιτεί διακομιστή HTTP που υποστηρίζει WSGI. Θα εγκαταστήσουμε την προεπιλεγμένη επιλογή, που είναι το Cheroot. Θα εγκαταστήσουμε επίσης τη βιβλιοθήκη lxml python, η οποία τείνει να αποδίδει καλύτερα από τη βιβλιοθήκη XML που είναι εγκατεστημένη από προεπιλογή. Απαιτείται επίσης η βιβλιοθήκη python3 PAM (Pluggable Authentication Module). Εγκαταστήστε τα απαιτούμενα πακέτα χρησιμοποιώντας το pip
εργαλείο:
sudo pip3 install wsgidav cheroot lxml python-pam
Διαμόρφωση του WsgiDAV
Το εκτελέσιμο αρχείο WsgiDAV είναι αποθηκευμένο στο /usr/local/bin
, οπότε θα τοποθετήσουμε το αρχείο διαμόρφωσης στον /usr/local/etc
κατάλογο. Κάντε λήψη του δείγματος αρχείου διαμόρφωσης με τις ακόλουθες εντολές:
sudo mkdir -p /usr/local/etc sudo wget https://github.com/mar10/wsgidav/raw/master/sample_wsgidav.yaml -O /usr/local/etc/wsgidav.yaml
Ανοίξτε το με τον επεξεργαστή σας:
sudo $EDITOR /usr/local/etc/wsgidav.yaml
Βρείτε τις ακόλουθες γραμμές στην ενότητα "Υποστήριξη SSL":
# ssl_certificate: "wsgidav/server/sample_bogo_server.crt" # ssl_private_key: "wsgidav/server/sample_bogo_server.key" # ssl_certificate_chain: null
Αντικαταστήστε τα με τα ακόλουθα:
ssl_certificate: "/etc/letsencrypt/live/dav.example.com/cert.pem" ssl_private_key: "/etc/letsencrypt/live/dav.example.com/privkey.pem" ssl_certificate_chain: "/etc/letsencrypt/live/dav.example.com/chain.pem"
Στη συνέχεια, θα διαμορφώσουμε τις κοινές διαδρομές αντιστοιχίζοντας διαδρομές HTTP (όπως /
) σε αντίστοιχες θέσεις στο σύστημα αρχείων (όπως /var/www/dir1
). Για λόγους επίδειξης, θα μοιραστούμε δύο καταλόγους, ο ένας από τους οποίους θα είναι μόνο για ανάγνωση. Βρείτε το provider_mapping
μπλοκ στην ενότητα "SHARES":
provider_mapping: "/": "/path/to/share1" "/pub": root: "/path/to/share2" readonly: true "/share3": provider: path.to.CustomDAVProviderClass args: ["/path/to/share3", "second_arg"] kwargs: {"another_arg": 42}
Αντικατέστησέ το:
provider_mapping: "/": root: "/var/www/html/documents" readonly: false "/reports": root: "/var/www/html/reports" readonly: true
Με αυτές τις αντιστοιχίσεις, https://dav.example.com:8080/
θα αντιστοιχεί στον /var/www/html/documents
κατάλογο του διακομιστή, ενώ https://dav.example.com:8080/reports
θα αντιστοιχιστεί σε /var/www/html/reports
χωρίς πρόσβαση εγγραφής.
Για έλεγχο ταυτότητας, θα χρησιμοποιήσουμε το πρόγραμμα οδήγησης PAM. Αυτό καταργεί την ανάγκη για ξεχωριστούς λογαριασμούς χρηστών WebDAV και επιτρέπει στους χρήστες του συστήματος να συνδεθούν χρησιμοποιώντας τα συνήθη διαπιστευτήριά τους.
Στην ενότητα "ΕΛΕΓΧΟΣ", βρείτε αυτές τις γραμμές:
accept_basic: true accept_digest: true default_to_digest: true domain_controller: null
Αντικαταστήστε τα με τα ακόλουθα:
accept_basic: true accept_digest: false default_to_digest: false domain_controller: wsgidav.dc.pam_dc.PAMDomainController
Τώρα μπορείτε να δοκιμάσετε τον διακομιστή σας:
sudo wsgidav -c /usr/local/etc/wsgidav.yaml
Ανοίξτε https://dav.example.com:8080/
στο πρόγραμμα περιήγησής σας. Εφόσον διαμορφώσαμε τον έλεγχο ταυτότητας PAM, θα χρειαστεί να συνδεθείτε με τον λογαριασμό χρήστη Linux που διαθέτετε. Χρησιμοποιήστε το CTRL+ Cγια να σταματήσετε τον διακομιστή πριν συνεχίσετε.
Εγκατάσταση ως υπηρεσία
Για να εκτελέσετε τον διακομιστή WebDAV ως υπηρεσία συστήματος που διαχειρίζεται το systemd, δημιουργήστε ένα αρχείο μονάδας:
sudo $EDITOR /etc/systemd/system/wsgidav.service
Εισάγετε τα ακόλουθα:
[Unit] Description=WsgiDAV WebDAV server After=network.target [Service] Type=simple ExecStart=/usr/local/bin/wsgidav -c /usr/local/etc/wsgidav.yaml StandardOutput=syslog StandardError=syslog SyslogIdentifier=wsgidav_service [Install] WantedBy=multi-user.target
Στη συνέχεια, δημιουργήστε ένα αρχείο διαμόρφωσης για την υπηρεσία καταγραφής συστήματος:
sudo $EDITOR /etc/rsyslog.d/wsgidav_service.conf
Συμπληρώστε το αρχείο με τα εξής:
if $programname == 'wsgidav_service' then /var/log/wsgidav.log & stop
Αποθήκευση και έξοδος και, στη συνέχεια, χρησιμοποιήστε τις παρακάτω εντολές για να δημιουργήσετε το αρχείο καταγραφής:
sudo touch /var/log/wsgidav.log sudo chown root:adm /var/log/wsgidav.log
Τέλος, φορτώστε το νέο αρχείο μονάδας systemd και επανεκκινήστε την υπηρεσία καταγραφής πριν ξεκινήσετε το WsgiDAV:
sudo systemctl daemon-reload sudo systemctl restart rsyslog.service sudo systemctl start wsgidav.service
Τώρα μπορείτε να το χρησιμοποιήσετε systemctl
για να ξεκινήσετε, να σταματήσετε και να επανεκκινήσετε τον διακομιστή WebDAV. Η τυπική έξοδος και το σφάλμα του WsgiDAV θα καταγραφούν στο /var/log/wsgidav.log
και μπορούν επίσης να προσπελαστούν χρησιμοποιώντας το sudo journalctl -u wsgidav.service
.
Εάν θέλετε ο διακομιστής WebDAV να ξεκινά αυτόματα κατά την εκκίνηση του συστήματος, εκτελέστε:
sudo systemctl enable wsgidav.service
Περαιτέρω ανάγνωση