Réévaluez d'abord votre besoin. Quel est le problème que vous essayez de résoudre? Pourquoi voulez-vous empêcher les utilisateurs de quitter leur répertoire personnel? N'est-ce pas plutôt que vous ne voulez pas qu'ils fouillent dans d' autres répertoires spécifiques - tels que les répertoires personnels d'autres utilisateurs?
Il est très difficile d'empêcher les utilisateurs de quitter leur répertoire personnel. C'est en fait un peu idiot aussi (l'explication suit). Il est beaucoup plus simple d'empêcher les utilisateurs d'entrer dans des répertoires que vous ne voulez pas qu'ils entrent.
Tout d'abord, oui, vous pouvez donner aux utilisateurs un soi-disant shell restreint , voir man rbash
. Cela les empêchera de cd
sortir ailleurs, mais uniquement à l'intérieur de cette coquille. Si l'utilisateur démarre vi
ou nano
(ou tout autre programme capable d'ouvrir un fichier), il peut à nouveau ouvrir des fichiers n'importe où sur le système. En fait, un shell restreint n'empêche pas par exemple cat /etc/passwd
.
La prochaine étape est une prison racine. Plus d'informations sur le wiki de la communauté et dans cette question . Bien qu'une prison racine verrouille les utilisateurs dans un jardin clos, dans lequel ils n'ont accès qu'à des fichiers et des commandes que vous y avez intentionnellement placés, les prisons racine sont vraiment destinées à isoler les logiciels non fiables plutôt que les utilisateurs. En particulier, ils sont destinés aux logiciels qui doivent s'exécuter avec des privilèges élevés - d'où une prison racine .
Les utilisateurs, en revanche, sont fiables : ils ont dû s'authentifier et s'exécuter sans privilèges élevés. Par conséquent, les autorisations de fichiers suffisent pour les empêcher de modifier des fichiers dont ils ne sont pas propriétaires et de voir des choses qu'ils ne doivent pas voir. Pour empêcher les utilisateurs de lire le contenu d'un fichier, supprimez sa lisibilité universelle avec chmod o-r FILE
. Pour garder les utilisateurs hors d'un répertoire, rendez-le inaccessible avec chmod o-rwx DIR
.
La lisibilité mondiale est la valeur par défaut, pour une bonne raison: les utilisateurs ont en fait besoin de la plupart des éléments du système de fichiers. Ne verrouillez pas les utilisateurs chez eux simplement parce qu'il existe des secrets à l'extérieur.
Pourquoi verrouiller les utilisateurs dans leur répertoire personnel est un peu idiot
Pour faire quoi que ce soit d'utile, les utilisateurs doivent avoir accès aux commandes et aux applications. Ceux-ci se trouvent dans des répertoires comme /bin
et /usr/bin
, donc à moins que vous ne copiiez toutes les commandes dont ils ont besoin à partir de là dans leurs répertoires personnels, les utilisateurs auront besoin d'accéder à /bin
et /usr/bin
. Mais ce n'est que le début. Les applications ont besoin de bibliothèques à partir de /usr/lib
et /lib
qui, à leur tour, ont besoin d'accéder aux ressources système, qui se trouvent dans /dev
, et aux fichiers de configuration dans /etc
et /usr/share
.
Ce n'était que la partie en lecture seule. Les applications voudront également /tmp
et souvent /var
écrire. Donc, si vous souhaitez contraindre un utilisateur dans son répertoire personnel, vous devrez en copier beaucoup. En fait, à peu près tout un système de fichiers de base - que vous avez déjà, situé à /
.