web-dev-qa-db-fra.com

Comment empêcher les utilisateurs d'accéder à autre chose qu'à leur propre répertoire personnel?

Comment empêcher les utilisateurs d'accéder à autre chose qu'à leur propre répertoire personnel?

Par exemple, une partition NTFS est montée sous /media/ntfs. Par conséquent, si l'utilisateur se connecte via ssh, il peut accéder à cette partition. Comment puis-je désactiver les utilisateurs de cd de leur répertoire de base?

21
OHLÁLÁ

Réévaluez d'abord vos besoins. 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 spécifique autres répertoires - 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 bête aussi (une 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 ce qu’on appelle Shell restreint, voir man rbash. Cela les empêchera de nommer cd- ailleurs, mais uniquement à l'intérieur de ce shell. 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 de racine. Plus d'infos sur le wiki de la communauté et dans cette question . Bien qu'une prison root verrouille les utilisateurs à l'intérieur d'un jardin muré, dans lequel ils n'ont accès qu'à des fichiers et des commandes que vous avez intentionnellement insérés, les jails root sont vraiment destinés à isoler les non-approuvés logiciels plutôt que les utilisateurs. En particulier, ils s’appliquent aux logiciels qui doivent être exécutés avec des privilèges élevés - d’où une prison root.

Les utilisateurs, d'autre part, sont de confiance: ils ont dû s'authentifier et ​​s'exécuter sans privilèges élevés. Par conséquent, les autorisations sur les fichiers suffisent pour les empêcher de modifier les fichiers qu’ils ne possèdent pas et de voir ce qu’ils ne doivent pas voir. Pour empêcher les utilisateurs de lire le contenu d'un fichier, supprimez sa lisibilité pour le monde avec chmod o-r FILE. Pour empêcher les utilisateurs d'entrer dans un répertoire, rendez-le inaccessible au monde avec chmod o-rwx DIR.

La lisibilité mondiale est la valeur par défaut pour une bonne raison: les utilisateurs ont en fait besoin la plupart des éléments présents dans le 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 ridicule

Pour faire quelque chose d'utile, les utilisateurs doivent avoir accès aux commandes et aux applications. Celles-ci se trouvent dans des répertoires tels que /bin et /usr/bin; ainsi, à moins de copier toutes les commandes dont ils ont besoin dans leurs répertoires personnels, les utilisateurs doivent pouvoir accéder à /bin et /usr/bin. Mais ce n'est que le début. Les applications ont besoin de bibliothèques 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 aux /etc et /usr/share.

Ce n'était que la partie en lecture seule. Les applications voudront également écrire /tmp et souvent /var. Donc, si vous voulez contraindre un utilisateur dans son répertoire personnel, vous allez devoir en copier beaucoup. En fait, à peu près tout un système de fichiers de base - que vous avez déjà, situé à /.

19
zwets

J'avais besoin de fournir un accès à l'utilisateur samsur /var/xyz uniquement et de bloquer le contenu de la liste des autres dossiers à l'intérieur de /var/

J'ai utilisé la séquence de commandes suivante:

setfacl -R -m user:sam:--- /var/

setfacl -m user:sam:rx /var/

setfacl -R -m user:sam:rwx /var/xyz/

Ainsi, l'utilisateur peut voir les répertoires répertoriés sous /var/ mais ne peut pas voir le contenu des sous-répertoires sauf /var/xyz.

6
Sam

En plus de restreindre l'accès à d'autres répertoires, en particulier aux répertoires personnels d'autres utilisateurs, je ne souhaitais pas non plus qu'un utilisateur reçoive ll /home et consulte le nom des autres utilisateurs du système.

Pour éviter cela, exécutez chmod 701 /home à la racine. Cela rend le répertoire /home lui-même "lecture/écriture/exécution" à la racine bien sûr, mais uniquement "exécuter" pour tout le monde. /home est toujours accessible à cd to, mais les utilisateurs ne peuvent pas lire son contenu - les dossiers de base des autres utilisateurs et donc les noms d'utilisateurs.

1
Willman