FTP, le guide complet
Par Contributeur - Publié le
Voici donc la série de news portant sur ce merveilleux sujet qu'est le FTP
Avis à tous ! (vous remarquerez que je vise large..)
Cette news est la première d'une série visant à mieux comprendre et utiliser le ftp. Et cette série inaugure elle même un nouveau concept: à partir d'aujourd'hui je m'efforcerai toutes les semaines (dans la mesure du possible) de décortiquer un point particulier avec des news dispersées tout au long de la semaine (voire plus selon le sujet).
Exemples de sujets potentiels: ftp, ssh, gérer son serveur web, les firewalls, utiliser RemoteDesktop...
Bref, entrons dans le vif du sujet: je suppose que vous savez tous que le ftp est un protocole de transfert de fichiers, comme son nom l'indique (FileTransferProtocol).
Mais ce que vous ignorez peut-être, c'est ce que qui se passe concrètement quand vous établissez une connection ftp.
En fait, c'est tout simple: vous ouvrez simplement une session sur la machine distante en tant qu'utilisateur "ftp" (si vous êtes connectés en anonyme) ou n'importe quel autre utilisateur avec un mot de passe.
En pratique et avec le terminal, connectez vous à un serveur ftp grâce à la commande ftp adresseduserveur (vous pouvez toujours tester avec ftp localhost).
On vous demande ensuite un nom d'utilisateur: c'est ici que c'est intéressant car à condition que le serveur ftp soit correctement paramétré (ce que je vous apprendrais à faire un de ces jours...), vous pouvez vous connecter en tant qu'utilisateur anonyme ou n'importe quel utilisateur ayant un compte sur la machine.
Par exemple vous pouvez tout à fait vous connecter en ftp sur votre compte (oui celui que vous utilisez graphiquement avec le Finder) de chez un ami et vous aurez un accès total à vos fichiers.
Dans les prochains épisodes nous verrons pourquoi certaines restrictions sont appliquées aux connections ftp (et ensuite comment les imposer sur votre propre serveur).
Comme promis je vais aujourd'hui vous en apprendre un peu plus sur le ftp.
Nous en étions restés à la base: une connexion ftp, ce n'est rien d'autre qu'une session distante.
Commençons par remarquer ceci: il peut paraitre étonnant que plusieurs personnes soient connectées en même temps sous la même identité (login ftp pour les utilisateurs anonymes).
Mais en fait c'est tout à fait normal et pas du tout spécifique au ftp: il est toujours possible d'ouvrir autant de sessions qu'on veut sous le même login.
La seule chose qu'il vous est effectivement impossible est d'ouvrir plusieurs sessions graphiques sous le même login.
Pour vous en convaincre ouvrez donc plusieurs fenêtres de terminal et dans chacune d'elles tapez login user où user est un login quelconque de votre machine.
L'ordinateur acceptera sans broncher les connexions multiples.
Vous pouvez même remarquer votre dédoublement en entrant la commande who qui vous donnera la liste des utilisateurs connectés sur le système.
Pour revenir au ftp, c'est exactement la même chose qui se produit pour le compte anonyme: comme ce compte n'a pas de mot de passe, toutes les personnes le désirant peuvent être connectées en même temps sur un serveur ftp.
Allez demain c'est promis je vous parle des restrictions d'accès...
Si vous vous souvenez bien, nous en étions resté à la question "Pourquoi ne puis-je accéder à tous les dossiers lors d'une connexion ftp ?" La réponse tient en deux points.
Tout d'abord vous ne pouvez évidemment pas accéder aux dossiers pour lesquels vous n'avez pas les droits.
Ainsi lorsque vous rencontrez des dossiers interdits, c'est tout simplement que les droits d'accès n'ont pas été donnés sur le serveur.
Par exemple il arrive souvent de rencontrer un dossier private à la racine du répertoire de connexion lorsque vous êtes en anonyme. C'est que ce dossier n'appartient pas à l'utilisateur ftp, et que ni le groupe éponyme ni les autres n'ont le droit de lecture.
Par ailleurs vous avez remarqué que votre répertoire de connexion est considéré comme la racine du système.
Ce comportement est dû au démon ftpd (côté serveur bien sûr) qui effectue un chroot (commande permettant de définir un répertoire comme la racine).
Les utilisateurs qui doivent être "chrootés" sont listés dans le fichier /etc/ftpchroot et ils sont "chrootés" à leur répertoire de connexion.
L'utilisateur ftp est par défaut "chrooté" vers son répertoire, ce qui permet de se dispenser de le lister dans /etc/ftpchroot.
Maintenant que vous connaissez les principes théoriques du ftp, il est temps de passer à la pratique: activer le serveur ftp sous OS X.
Pour commencer, activez l'accès FTP dans les Préférences système, panneau Partage, onglet Services.
Ensuite nous allons commençer par le compte anonyme : il suffit de créer l'utilisateur ftp, inexistant par défaut sous OS X.
Pour ce faire, commençez par lancer l'application Gestionnaire NetInfo. Authentifiez vous et créez un nouveau répertoire dans le dossier users. Vous pouvez maintenant créer les propriétés suivantes:
Vous pouvez maintenant créer le groupe ftp: ajoutez un répertoire au dossier groups et entrez les prpriétés suivantes:
Puis il ne reste qu'à créer le répertoire de connexion grâce aux trois commandes suivantes:
Ca y est, c'est fini ! Amusez vous bien...
Nous en arrivons maintenant au point culminant de notre périple: la création de comptes ftp pour vos amis.
Pour la pratique, je ne saurais vous conseiller la lecture de l'article de Gunjin (de xrings bien sur) sur le sujet: tout y est clair et efficace.
Néanmoins précisons un peu la procédure automatisée par le script proposé par Gunjin: il suffit pour ajouter un compte FTP de créer un utilisateur grâce à l'utilitaire Gestionnaire NetInfo et de créer ensuite son répertoire de connexion (comme pour l'utilisateur anonyme en fait).
Les champs à renseigner dans NetInfo sont les suivants: name, passwd, home, shell, uid, gid.
Pour le mot de passe il est préférable d'utiliser l'outil en ligne de commande passwd (ou encore niutil) pour une question d'encodage du mot de passe.
Il reste encore à empêcher l'utilisateur de sortir de son répertoire de connexion: pour cela il suffit de l'ajouter au fichier /etc/ftpchroot comme je l'ai expliqué dans une news précédente.
Enfin vous pouvez refuser à l'utilisateur une connexion SSH en ajoutant la ligne suivante au fichier /etc/sshd_config:
Voilà, c'est tout pour l'instant...
S'il vous prend l'envie subite de supprimer un compte FTP (pour une raison quelconque qui, après tout ne nous regarde pas) voire le compte anonyme, c'est possible et très rapide.
En effet il suffit de supprimer l'utilisateur dans Gestionnaire NetInfo, supprimer le répertoire de connexion de l'utilisateur et enfin supprimer l'utilisateur du fichier /etc/ftpchroot et /etc/sshd_config (ainsi que la commande DenyUsers associée) si vous l'y aviez ajouté.
Ces deux dernières manipulations sont inutiles pour le compte anonyme.
Enfin pour clore définitivement l'accès ftp à votre machine, désactivez simplement le partage correspondant dans le panneau Partage des Préférences Système.
Maintenant que vous savez à peu près tout faire à la main, il est temps de penser à l'automatisation des taches d'administration: il est tout de même un peu fastidieux de créer de nombreux comptes alors que l'ordinateur peut le faire pour nous...
Vous pouvez donc récupérer des scripts permettant de créer et de supprimer des comptes ftp sans vous soucier de rien.
Pour les récupérer, c'est par ici
Bien sûr vous serez tenus au courant de l'évolution de ces scripts...
En attendant que je complète cet article, je vous propose quelques ressources documentaires:
Configurer un ftp anonyme
Créer des comptes ftp
Se procurer un alias DNS
Les capacités serveur de OS X
Introduction (02/05/03)
Avis à tous ! (vous remarquerez que je vise large..)
Cette news est la première d'une série visant à mieux comprendre et utiliser le ftp. Et cette série inaugure elle même un nouveau concept: à partir d'aujourd'hui je m'efforcerai toutes les semaines (dans la mesure du possible) de décortiquer un point particulier avec des news dispersées tout au long de la semaine (voire plus selon le sujet).
Exemples de sujets potentiels: ftp, ssh, gérer son serveur web, les firewalls, utiliser RemoteDesktop...
Bref, entrons dans le vif du sujet: je suppose que vous savez tous que le ftp est un protocole de transfert de fichiers, comme son nom l'indique (FileTransferProtocol).
Mais ce que vous ignorez peut-être, c'est ce que qui se passe concrètement quand vous établissez une connection ftp.
En fait, c'est tout simple: vous ouvrez simplement une session sur la machine distante en tant qu'utilisateur "ftp" (si vous êtes connectés en anonyme) ou n'importe quel autre utilisateur avec un mot de passe.
En pratique et avec le terminal, connectez vous à un serveur ftp grâce à la commande ftp adresseduserveur (vous pouvez toujours tester avec ftp localhost).
On vous demande ensuite un nom d'utilisateur: c'est ici que c'est intéressant car à condition que le serveur ftp soit correctement paramétré (ce que je vous apprendrais à faire un de ces jours...), vous pouvez vous connecter en tant qu'utilisateur anonyme ou n'importe quel utilisateur ayant un compte sur la machine.
Par exemple vous pouvez tout à fait vous connecter en ftp sur votre compte (oui celui que vous utilisez graphiquement avec le Finder) de chez un ami et vous aurez un accès total à vos fichiers.
Dans les prochains épisodes nous verrons pourquoi certaines restrictions sont appliquées aux connections ftp (et ensuite comment les imposer sur votre propre serveur).
Connexions multiples (03/05/03)
Comme promis je vais aujourd'hui vous en apprendre un peu plus sur le ftp.
Nous en étions restés à la base: une connexion ftp, ce n'est rien d'autre qu'une session distante.
Commençons par remarquer ceci: il peut paraitre étonnant que plusieurs personnes soient connectées en même temps sous la même identité (login ftp pour les utilisateurs anonymes).
Mais en fait c'est tout à fait normal et pas du tout spécifique au ftp: il est toujours possible d'ouvrir autant de sessions qu'on veut sous le même login.
La seule chose qu'il vous est effectivement impossible est d'ouvrir plusieurs sessions graphiques sous le même login.
Pour vous en convaincre ouvrez donc plusieurs fenêtres de terminal et dans chacune d'elles tapez login user où user est un login quelconque de votre machine.
L'ordinateur acceptera sans broncher les connexions multiples.
Vous pouvez même remarquer votre dédoublement en entrant la commande who qui vous donnera la liste des utilisateurs connectés sur le système.
Pour revenir au ftp, c'est exactement la même chose qui se produit pour le compte anonyme: comme ce compte n'a pas de mot de passe, toutes les personnes le désirant peuvent être connectées en même temps sur un serveur ftp.
Allez demain c'est promis je vous parle des restrictions d'accès...
Restrictions d'accès (05/05/03)
Si vous vous souvenez bien, nous en étions resté à la question "Pourquoi ne puis-je accéder à tous les dossiers lors d'une connexion ftp ?" La réponse tient en deux points.
Tout d'abord vous ne pouvez évidemment pas accéder aux dossiers pour lesquels vous n'avez pas les droits.
Ainsi lorsque vous rencontrez des dossiers interdits, c'est tout simplement que les droits d'accès n'ont pas été donnés sur le serveur.
Par exemple il arrive souvent de rencontrer un dossier private à la racine du répertoire de connexion lorsque vous êtes en anonyme. C'est que ce dossier n'appartient pas à l'utilisateur ftp, et que ni le groupe éponyme ni les autres n'ont le droit de lecture.
Par ailleurs vous avez remarqué que votre répertoire de connexion est considéré comme la racine du système.
Ce comportement est dû au démon ftpd (côté serveur bien sûr) qui effectue un chroot (commande permettant de définir un répertoire comme la racine).
Les utilisateurs qui doivent être "chrootés" sont listés dans le fichier /etc/ftpchroot et ils sont "chrootés" à leur répertoire de connexion.
L'utilisateur ftp est par défaut "chrooté" vers son répertoire, ce qui permet de se dispenser de le lister dans /etc/ftpchroot.
Installer un ftp anonyme (07/05/03)
Maintenant que vous connaissez les principes théoriques du ftp, il est temps de passer à la pratique: activer le serveur ftp sous OS X.
Pour commencer, activez l'accès FTP dans les Préférences système, panneau Partage, onglet Services.
Ensuite nous allons commençer par le compte anonyme : il suffit de créer l'utilisateur ftp, inexistant par défaut sous OS X.
Pour ce faire, commençez par lancer l'application Gestionnaire NetInfo. Authentifiez vous et créez un nouveau répertoire dans le dossier users. Vous pouvez maintenant créer les propriétés suivantes:
expire 0
uid 21
name ftp
passwd *
realname anonymous
_writers_picture ftp
change 0
shell /dev/null
home /Users/ftp
gid -21
Vous pouvez maintenant créer le groupe ftp: ajoutez un répertoire au dossier groups et entrez les prpriétés suivantes:
name ftp
passwd *
gid -21
Puis il ne reste qu'à créer le répertoire de connexion grâce aux trois commandes suivantes:
sudo mkdir /Users/ftp
sudo chown votrelogin:ftp /Users/ftp
sudo chmod 755 /Users/ftp
Ca y est, c'est fini ! Amusez vous bien...
Créer des comptes ftp (09/05/03)
Nous en arrivons maintenant au point culminant de notre périple: la création de comptes ftp pour vos amis.
Pour la pratique, je ne saurais vous conseiller la lecture de l'article de Gunjin (de xrings bien sur) sur le sujet: tout y est clair et efficace.
Néanmoins précisons un peu la procédure automatisée par le script proposé par Gunjin: il suffit pour ajouter un compte FTP de créer un utilisateur grâce à l'utilitaire Gestionnaire NetInfo et de créer ensuite son répertoire de connexion (comme pour l'utilisateur anonyme en fait).
Les champs à renseigner dans NetInfo sont les suivants: name, passwd, home, shell, uid, gid.
Pour le mot de passe il est préférable d'utiliser l'outil en ligne de commande passwd (ou encore niutil) pour une question d'encodage du mot de passe.
Il reste encore à empêcher l'utilisateur de sortir de son répertoire de connexion: pour cela il suffit de l'ajouter au fichier /etc/ftpchroot comme je l'ai expliqué dans une news précédente.
Enfin vous pouvez refuser à l'utilisateur une connexion SSH en ajoutant la ligne suivante au fichier /etc/sshd_config:
DenyUsers user
Voilà, c'est tout pour l'instant...
Faire marche arrière (10/05/03)
S'il vous prend l'envie subite de supprimer un compte FTP (pour une raison quelconque qui, après tout ne nous regarde pas) voire le compte anonyme, c'est possible et très rapide.
En effet il suffit de supprimer l'utilisateur dans Gestionnaire NetInfo, supprimer le répertoire de connexion de l'utilisateur et enfin supprimer l'utilisateur du fichier /etc/ftpchroot et /etc/sshd_config (ainsi que la commande DenyUsers associée) si vous l'y aviez ajouté.
Ces deux dernières manipulations sont inutiles pour le compte anonyme.
Enfin pour clore définitivement l'accès ftp à votre machine, désactivez simplement le partage correspondant dans le panneau Partage des Préférences Système.
Automatisation (12/05/03)
Maintenant que vous savez à peu près tout faire à la main, il est temps de penser à l'automatisation des taches d'administration: il est tout de même un peu fastidieux de créer de nombreux comptes alors que l'ordinateur peut le faire pour nous...
Vous pouvez donc récupérer des scripts permettant de créer et de supprimer des comptes ftp sans vous soucier de rien.
Pour les récupérer, c'est par ici
Bien sûr vous serez tenus au courant de l'évolution de ces scripts...
Où trouver plus d'informations
En attendant que je complète cet article, je vous propose quelques ressources documentaires:
Configurer un ftp anonyme
Créer des comptes ftp
Se procurer un alias DNS
Les capacités serveur de OS X