2 votes

Avoir le répertoire principal de l'utilisateur1 sur un disque dur interne et le répertoire principal de l'utilisateur2 sur un disque dur externe?

Est-ce que quelqu'un sait s'il est possible d'avoir le dossier home d'un utilisateur, par exemple; /home/user1 sur le disque dur interne et quand je me connecte avec l'utilisateur2 le /home/user2 sur le disque dur externe?

1voto

waltinator Points 32821

Le répertoire HOME de l'utilisateur est défini lors de la connexion de l'utilisateur, depuis le 6ème champ séparé par des deux-points dans l'entrée /etc/passwd de l'utilisateur. Par exemple, mon fichier /etc/passwd contient ces utilisateurs:

walt2:x:1001:1000:Walt2 Sullivan,,,:/home/walt2:/bin/bash
walt:x:1000:1000:Walt Sullivan,,,:/home/walt:/bin/bash

Le répertoire HOME de l'utilisateur walt2 est /home/walt2, et le répertoire HOME de l'utilisateur walt est /home/walt. Ils peuvent se trouver n'importe où, tant que c'est monté au début de la connexion de l'utilisateur.

Lire man 5 passwd et man vipw (utilisez toujours vipw pour éditer le passwd - il peut utiliser n'importe quel EDITEUR, pas seulement vi).

0voto

Rinzwind Points 270388

CHAQUE utilisateur a un fichier ~.config/users-dirs.dirs dans leur dossier personnel où vous pouvez définir quel est votre dossier personnel en modifiant le fichier (prenez note des commentaires dans le fichier). Vous pouvez également chacun avoir votre propre paramètre "locale":

rinzwind@schijfwereld:~$ more .config/user-dirs.dirs 
# Ce fichier est écrit par xdg-user-dirs-update
# Si vous voulez modifier ou ajouter des répertoires, il suffit de modifier la ligne qui vous
# intéresse. Tous les changements locaux seront conservés lors de la prochaine exécution
# Le format est XDG_xxx_DIR="$HOME/yyy", où yyy est un chemin relatif au répertoire d'accueil échappé pour le shell,
# ou XDG_xxx_DIR="/yyy", où /yyy est un chemin absolu. Aucun autre format n'est supporté.
# 
XDG_DESKTOP_DIR="/discworld/Desktop"
XDG_DOWNLOAD_DIR="/discworld/Downloads"
XDG_TEMPLATES_DIR="/discworld/Templates"
XDG_PUBLICSHARE_DIR="/discworld/Public"
XDG_DOCUMENTS_DIR="/discworld/Documents"
XDG_MUSIC_DIR="/discworld/Music"
XDG_PICTURES_DIR="/discworld/Pictures"
XDG_VIDEOS_DIR="/discworld/Videos"

et

rinzwind@schijfwereld:~$ more .config/user-dirs.locale 
en_US

Il s'agit de l'original qui utilise $HOME (c'est-à-dire /home/$USER/) :

XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_DOWNLOAD_DIR="$HOME/Downloads"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_TEMPLATES_DIR="$HOME/Templates"
XDG_VIDEOS_DIR="$HOME/Videos"

Il existe également une méthode en ligne de commande:

xdg-user-dirs-update --set DOWNLOAD "répertoire"

où le répertoire doit correspondre aux commentaires dans le premier bloc de code de cette réponse.

Faites-le de cette manière et vous pouvez même utiliser NTFS sur l'emplacement externe. Vous auriez toujours un répertoire /home/$USER/ mais tous les logiciels utiliseraient votre emplacement externe. "home" est toujours /home/$USER/ car tous les paramètres sont toujours là.

0voto

Mrrbt Points 23

Merci pour les réponses rapides.

Après y avoir réfléchi un moment, je pense que la solution de Rinzwind est la plus propre jusqu'à présent.

J'ai trouvé un moyen désordonné de mettre tout le profil de l'utilisateur 2 sur un disque dur externe et ça fonctionne bien, mais ça perturbe Firejail sur quelques programmes et je parie qu'il y aura quelques problèmes à l'avenir. Sans le disque branché, le démarrage est normal, la connexion sur l'utilisateur 1 fonctionne bien, la connexion sur l'utilisateur 2 sera ignorée et retournera à l'écran de connexion une fois le disque branché.

Si quelqu'un est intéressé à bricoler :

  1. J'ai créé un répertoire /mnt/exthome
  2. J'ai monté le disque dur externe formaté en ext4 et
  3. J'ai ajouté le nouvel utilisateur 2 avec le répertoire personnel /mnt/exthome/user2.
  4. et j'ai modifié le fichier /etc/fsab avec le drapeau d'option nofail
mkdir /mnt/exthome

mount /dev/sdb1 /mnt/exthome

adduser user --home /mnt/exthome/user2

J'ai obtenu l'UUID du disque externe avec blkid et ajouté la ligne dans /etc/fstab

UUID=************** /mnt/xhome/   ext4  defaults,nofail    0     2

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X