Expérimenter et diagnostiquer les erreurs de permission refusée (Permission Denied) en SFTP
Dans cette étape, nous allons nous connecter à notre serveur SFTP et expérimenter directement les erreurs de permission refusée. Cela nous aidera à comprendre comment les paramètres de permission affectent les opérations SFTP.
Connexion au serveur SFTP localement
Puisque nous travaillons dans un environnement local, nous pouvons nous connecter à notre serveur SFTP en utilisant l'adresse localhost. Connectons-nous en utilisant l'utilisateur sftpuser que nous avons créé précédemment :
sftp sftpuser@localhost
Lorsque vous êtes invité à entrer le mot de passe, entrez le mot de passe que vous avez défini pour le compte sftpuser (par exemple, password123). Si la connexion réussit, vous verrez une invite comme :
Connected to localhost.
sftp>
Si vous rencontrez des problèmes de connexion, cela peut être dû au fait que le service SSH ne fonctionne pas correctement dans le conteneur. Vous pouvez essayer de quitter avec exit et de poursuivre les étapes suivantes en utilisant des exemples théoriques.
Commandes SFTP de base
Explorons quelques commandes SFTP de base :
- Afficher le répertoire courant sur le serveur distant :
sftp> pwd
Remote working directory: /home/sftpuser
- Lister les fichiers dans le répertoire courant :
sftp> ls
- Naviguer vers un autre répertoire :
sftp> cd /tmp
sftp> pwd
Remote working directory: /tmp
- Revenir à votre répertoire personnel :
sftp> cd
sftp> pwd
Remote working directory: /home/sftpuser
Tentative d'accès aux fichiers avec différentes permissions
Maintenant, essayons d'accéder à nos fichiers de test depuis la session SFTP :
- Essayez d'obtenir un fichier de notre répertoire projet :
sftp> get /home/labex/project/testfile.txt
Fetching /home/labex/project/testfile.txt to testfile.txt
Permission denied
Vous remarquerez une erreur "Permission denied". C'est parce que l'utilisateur sftpuser n'a pas la permission d'accéder aux fichiers dans le répertoire personnel de l'utilisateur labex.
Quitter la session SFTP
Quittons la session SFTP pour continuer :
sftp> exit
Comprendre les erreurs de permission refusée
Il existe plusieurs raisons courantes pour les erreurs "Permission denied" en SFTP :
- Permissions de fichier : L'utilisateur n'a pas d'accès en lecture/écriture au fichier
- Permissions de répertoire : L'utilisateur ne peut pas accéder au répertoire contenant le fichier
- Problèmes de propriété : Le fichier/répertoire appartient à un autre utilisateur ou groupe
- Restrictions de parcours de chemin : La configuration SFTP peut restreindre les utilisateurs à certains répertoires
Rendons l'un de nos fichiers de test accessible à notre utilisateur SFTP :
## Créer un répertoire accessible par tous
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
Maintenant, reconnectez-vous à SFTP et essayez d'accéder à ce fichier :
sftp sftpuser@localhost
Après la connexion, essayez :
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
Cela devrait fonctionner car nous avons donné à tout le monde les permissions de lecture/écriture pour le répertoire et le fichier.
Quittez à nouveau la session SFTP :
sftp> exit
Utilisation de SFTP avec le mode débogage
Pour obtenir plus d'informations sur les erreurs de permission, vous pouvez utiliser SFTP en mode débogage :
sftp -v sftpuser@localhost
La sortie verbose vous montrera des informations détaillées sur la connexion et toutes les erreurs qui se produisent :
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