Erleben und Diagnostizieren von SFTP-Berechtigungsfehlern
In diesem Schritt stellen wir eine Verbindung zu unserem SFTP-Server her und erleben Berechtigungsfehler aus erster Hand. Dies hilft uns zu verstehen, wie sich die Berechtigungseinstellungen auf SFTP-Operationen auswirken.
Lokales Verbinden mit dem SFTP-Server
Da wir in einer lokalen Umgebung arbeiten, können wir uns mit der Adresse localhost
mit unserem SFTP-Server verbinden. Stellen wir eine Verbindung mit dem zuvor erstellten sftpuser
her:
sftp sftpuser@localhost
Geben Sie bei der Aufforderung nach dem Passwort das Passwort ein, das Sie für das Konto sftpuser
festgelegt haben (z. B. password123
). Wenn die Verbindung erfolgreich ist, sehen Sie eine Eingabeaufforderung wie:
Connected to localhost.
sftp>
Wenn Verbindungsprobleme auftreten, kann dies daran liegen, dass der SSH-Dienst im Container nicht richtig ausgeführt wird. Sie können versuchen, mit exit
zu beenden und mit den nächsten Schritten unter Verwendung theoretischer Beispiele fortzufahren.
Grundlegende SFTP-Befehle
Erkunden wir einige grundlegende SFTP-Befehle:
- Anzeigen des aktuellen Verzeichnisses auf dem Remote-Server:
sftp> pwd
Remote working directory: /home/sftpuser
- Auflisten von Dateien im aktuellen Verzeichnis:
sftp> ls
- Navigieren zu einem anderen Verzeichnis:
sftp> cd /tmp
sftp> pwd
Remote working directory: /tmp
- Rückkehr zu Ihrem Home-Verzeichnis:
sftp> cd
sftp> pwd
Remote working directory: /home/sftpuser
Versuchen, auf Dateien mit unterschiedlichen Berechtigungen zuzugreifen
Versuchen wir nun, von der SFTP-Sitzung aus auf unsere Testdateien zuzugreifen:
- Versuchen Sie, eine Datei aus unserem Projektverzeichnis abzurufen:
sftp> get /home/labex/project/testfile.txt
Fetching /home/labex/project/testfile.txt to testfile.txt
Permission denied
Sie werden einen "Permission denied"-Fehler feststellen. Dies liegt daran, dass der sftpuser
keine Berechtigung hat, auf Dateien im Home-Verzeichnis des Benutzers labex
zuzugreifen.
Beenden der SFTP-Sitzung
Beenden wir die SFTP-Sitzung, um fortzufahren:
sftp> exit
Verstehen von Berechtigungsfehlern
Es gibt mehrere häufige Gründe für "Permission denied"-Fehler in SFTP:
- Dateiberechtigungen (File Permissions): Der Benutzer hat keinen Lese-/Schreibzugriff auf die Datei
- Verzeichnisberechtigungen (Directory Permissions): Der Benutzer kann nicht auf das Verzeichnis zugreifen, das die Datei enthält
- Eigentumsfragen (Ownership Issues): Die Datei/das Verzeichnis gehört einem anderen Benutzer oder einer anderen Gruppe
- Pfad-Traversal-Einschränkungen (Path Traversal Restrictions): Die SFTP-Konfiguration kann Benutzer auf bestimmte Verzeichnisse beschränken
Machen wir eine unserer Testdateien für unseren SFTP-Benutzer zugänglich:
## Create a directory that can be accessed by others
mkdir -p /tmp/shared
echo "This is a shared file for SFTP testing" > /tmp/shared/shared_file.txt
chmod 777 /tmp/shared
chmod 666 /tmp/shared/shared_file.txt
Stellen Sie nun erneut eine Verbindung zu SFTP her und versuchen Sie, auf diese Datei zuzugreifen:
sftp sftpuser@localhost
Versuchen Sie nach dem Verbinden:
sftp> get /tmp/shared/shared_file.txt
Fetching /tmp/shared/shared_file.txt to shared_file.txt
/tmp/shared/shared_file.txt 100% 36 1.0KB/s 00:00
Dies sollte funktionieren, da wir allen Lese-/Schreibberechtigungen für das Verzeichnis und die Datei erteilt haben.
Beenden Sie die SFTP-Sitzung erneut:
sftp> exit
Verwenden von SFTP im Debug-Modus
Um weitere Informationen zu Berechtigungsfehlern zu erhalten, können Sie SFTP im Debug-Modus verwenden:
sftp -v sftpuser@localhost
Die ausführliche Ausgabe zeigt Ihnen detaillierte Informationen über die Verbindung und alle auftretenden Fehler:
debug1: Sending subsystem: sftp
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 2412, received 2876 bytes, in 0.1 seconds
Bytes per second: sent 30074.7, received 35857.2
debug1: Exit status 0