C'est simple Créez simplement un nouvel utilisateur avec son répertoire de base défini sur celui auquel vous souhaitez qu'il ait accès (cette commande doit être exécutée sous sudo
ou dans le shell root):
adduser --home /restricted/directory restricted_user
Cela créera un utilisateur restricted_user
, le répertoire /restricted/directory
, puis les autorisations sur le répertoire seront définies afin que l'utilisateur puisse y écrire. Il ne sera pas capable d'écrire dans un autre répertoire par défaut.
Si vous avez déjà le répertoire, vous pouvez exécuter une adduser
commande avec une --no-create-home
option ajoutée et définir manuellement les autorisations (également avec les privilèges root), comme par exemple:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Si vous devez rendre inaccessibles même les répertoires inscriptibles au monde pour cet utilisateur, il existe deux variantes.
1) Si vous souhaitez fournir une session de shell interactive à l'utilisateur, envisagez de suivre ce manuel pour créer une prison chroot (dans votre /restricted/directory
).
Après cela, ajoutez ce qui suit à votre sshd_config
:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Si vous avez seulement besoin de lui pour copier des fichiers entre son noeud final de connexion et votre hôte, tout est beaucoup plus simple. Ajoutez ces lignes à la fin de votre sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Puis commentez le Subsystem sftp /usr/lib/openssh/sftp-server
en plaçant un #
signe hash ( ) au début.
Après avoir redémarré votre serveur SSH (il ne tue pas les sessions interactives au redémarrage, il est donc sécurisé même si vous avez mal configuré quelque chose; il ne ferme pas non plus votre session en cours avant d'avoir vérifié que vous êtes toujours en mesure de vous connecter), tout devrait fonctionner comme prévu.
Subsystem sftp internal-sftp
ligne dans votre deuxième exemple au-dessus duMatch
bloc. Sinon, ssh affichera une erreur et ne démarrera pas.Le moyen le plus simple de créer un utilisateur restreint qui ne peut pas errer hors du répertoire donné (par exemple, vers le répertoire supérieur, etc.) et qui a un ensemble de commandes limité / choisi, consiste à utiliser un shell restreint. Ref:
http://man.he.net/man1/rbash
Tout d’abord, créez un lien symbolique appelé
rbash
(exécuté en tant qu’utilisateur root).Ensuite, créez simplement un utilisateur normal avec ce shell restreint et configurez son répertoire home dans le dossier souhaité:
Même sans Shell restreint, si vous n'ajoutez pas explicitement cet utilisateur à la liste de sudoer, ni à aucun groupe spécial, il sera limité par défaut.
Avec le shell restreint, les opérations suivantes sont interdites ou non exécutées:
changer de répertoire avec cd
définir ou annuler les valeurs de SHELL, PATH, ENV ou BASH_ENV
spécifier les noms de commande contenant /
spécifiant un nom de fichier contenant un / comme argument de la. commande intégrée
Spécification d'un nom de fichier contenant une barre oblique en tant qu'argument de l'option -p de la commande intégrée hash
Importation des définitions de fonction de l'environnement shell au démarrage
analyser la valeur de SHELLOPTS de l'environnement shell au démarrage
redirection de la sortie à l'aide des opérateurs>,> |, <>,> &, &> et >>
en utilisant la commande intégrée exec pour remplacer le shell par une autre commande
ajout ou suppression de commandes intégrées avec les options -f et -d à la commande active enable
Utilisation de la commande enable enable pour activer les fonctions intégrées du shell désactivé
spécifiant l'option -p à la commande intégrée à la commande
désactiver le mode restreint avec set + r ou set + o restreint.
Ces restrictions sont appliquées après tous les fichiers de démarrage.
De plus, vous pouvez créer un fichier .bash_profile en lecture seule pour cet utilisateur afin de restreindre l'utilisateur à un ensemble de commandes limité / sélectionné,
et faites un lien symbolique aux commandes que vous autorisez dans le dossier ~ / bin vers cet utilisateur:
etc.
HTH
la source