Changer le répertoire dédié (home directory) d'un utilisateur UNIX sur son serveur

La mise en pratique de ce tuto nécessite l'activation du mode root. Pour plus d'infos sur le mode root, consultez ce tuto.

Voilà une opération pratique si, par exemple, vous voulez héberger des sites pour des amis (ou juste des gens) à l'adresse 'mon-site.com/son-espace', et qu'ils puissent gérer cet espace tous seuls.

Il y a des intérêts et des possibilités variables sur ce thème - je vous laisse donc le soin d'enrichir cette page. :)

Que vais-je changer?

L'opération changera le répertoire par défaut de votre utilisateur sur votre serveur. En effet, quand un nouvel utilisateur est créé, il bénéficie par défaut d'un répertoire attitré qui se trouve dans l'emplacement suivant:

/home/nom-du-user/

Ainsi, si l'utilisateur se connecte sur votre serveur en FTP avec ses identifiants, il atterira directement dans ce répertoire et ne pourra pas remonter l'aborescence.

Si vous voulez qu'un utilisateur puisse gérer son espace, du type mon-site.com/son-espace, il faut donc changer son répertoire par défaut pour qu'il atterisse “là ou il faut” en FTP. :) En l'occurence, son répertoire doit devenir:

/srv/d_mon-disque/www/www.mon-site.com/htdocs/son-espace/

Let's go!


Créer le user et son (futur) répertoire

Le user

Une fois que vous êtes connecté à votre serveur en SSH, la première chose sera de passer en root!

su

Mettons que l'utilisateur en question n'a pas encore été créé. Créons, créons. On utilise la commande 'adduser bob' pour créer l'utilisateur 'bob', et on voit:

root@myserver:/srv# adduser bob
Adding user `bob' ...
Adding new group `bob' (1005) ...
Adding new user `bob' (1005) with group `bob' ...
Creating home directory `/home/bob' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for bob
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [y/N] y
root@myserver:/srv#

On lui définit un mot de passe (très sûr, bien entendu). On zappe les infos sur les coordonnées, puis on confirme avec 'y'.

Le futur répertoire

Ensuite, si ce n'est pas déjà fait, on se rend dans le virtualhost concerné pour aller créer le futur-répertoire-par-défaut de 'bob'.

Si l'on venait de se connecter à son serveur sans bouger d'emplacement, on peut déjà se rendre dans le répertoire htdocs du virtualhost concerné:

cd /d_mon-disque/www/www.mon-site.com/htdocs/

Quand on y est, on créé le répertoire avec le nom souhaité:

mkdir chezbob

…et le site mon-site.com/chezbob fut. :)


Changer le répertoire par défaut de son utilisateur

Maintenant, on veut donc que le répertoire 'chezbob' devienne le répertoire par défaut pour l'utilisateur 'bob' quand celui-ci se connecte en FTP ou en SSH.

En s'assurant que l'on est en root, on utilise la commande suivante:

usermod -d /srv/d_mon-disque/www/www.mon-site.com/htdocs/chezbob bob



Que signifie-t-elle? Découpons-la point par point.

usermod 

usermod est la commande à utiliser pour modifier les paramètres d'un user sur votre serveur (pensez à USER MODification).

-d

Le commutateur -d, après la commande usermod, sert à changer le répertoire dédié d'un user (pensez au “d” de directory).

/srv/d_mon-disque/www/www.mon-site.com/htdocs/chezbob

Ensuite, j'ai donc spécifié le chemin pour le nouveau répertoire dédié du user bob.

Enfin, la commmande finit par

bob

car il faut, bien entendu, que je précise à quel user je suis en train de changer le répertoire dédié!


Changement de propriétaire

Oui. C'est important. Sans cette étape, l'utilisateur bob pourra bien se connecter à son nouveau répertoire, mais ne pourra rien faire dessus. C'est frustrant. C'est cruel.

Le répertoire chezbob, tel que nous l'avons créé, appartient au user root. Il faut donc changer son propriétaire pour qu'il appartienne à bob.

Si vous n'avez pas bougé d'emplacement sur votre serveur (vous êtes donc toujours dans htdocs sur votre virtual host, comme lorsque vous aviez créé le répertoire chezbob), la commande serait la suivante:

chown bob /chezbob



Explication:

chown

…c'est la commande pour changer le propriétaire d'un fichier ou d'un répertoire sur votre serveur.

bob

…je précise l'utilisateur à qui va revenir le fichier ou dossier…

/chezbob

…et enfin, je précise le fichier ou dossier (en l'occurence, le dossier) qui va changer de main.

Evidemment, avec les utilisateurs admin et root, vous conservez la main sur tout fichier appartenant à un utilisateur 'normal'. L'utilisateur normal, lui, peut maintenant se servir de son nouveau répertoire. :)

Voilà, c'est bon! A présent, bob peut se connecter à votre serveur en FTP avec son identifiant, et pourra directement gérer son petit espace web sur votre site.

Un utilisateur n'a d'accès restreint qu'en FTP. S'il se connecte à votre serveur avec ses identifiants en SSH, il pourra donc remonter l'arborescence de son répertoire et se promener partout sur votre serveur. Certes, il possède des droits restreints et ne pourra pas écrire là ou il ne l'est pas autorisé, mais il pourrait voir des fichiers 'cachés' potentiellement sensibles si vous n'avez pas pensé à restreindre leurs droits de lecture. Vous êtes prévenus. :)

La parade consiste à éditer le fichier /etc/ssh/sshd_config et ajouter tout à la fin:

AllowUsers vous_même
AllowUsers autre_user_a_qui_vous_autorisez_ssh

Tous les nouveaux users ftp ne pourront alors se logger qu'en ftp et plus en ssh.

Dernière modification: le 03/04/2015 à 13:47 par Mehdi O.