J'ai installé SSH, mais j'ai constaté que si j'utilisais mon compte d'origine pour me connecter à Ubuntu, il y avait trop d'autorisations.
Je veux contraindre l'utilisateur à ne disposer que d'autorisations pour des dossiers spécifiques sous Ubuntu. Comment puis-je configurer un tel utilisateur?
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 la commande adduser
avec une option --no-create-home
ajoutée et définir les autorisations manuellement (é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 Shell interactive à l’utilisateur, envisagez de suivre ce manuel pour la création d’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 terminal 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 dièse (#
) 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ûr même si vous avez mal configuré quelque chose; de plus, il ne ferme pas votre session en cours avant d'avoir vérifié que vous êtes toujours en mesure de vous connecter), tout devrait fonctionner comme prévu.
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 à utiliser consiste à utiliser un shell restreint. Ref:
Commencez par créer un lien symbolique appelé rbash
(exécuté en tant qu'utilisateur root).
ln -s /bin/bash /bin/rbash
Ensuite, créez simplement un utilisateur normal avec ce shell restreint et configurez son répertoire home dans le dossier souhaité:
useradd -s /bin/rbash -d /home/restricted_folder username
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
analyse de 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ées
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, en option, pour limiter l'utilisateur à un ensemble limité/sélectionné de commandes à utiliser, avec
PATH=$HOME/bin
et faites un lien symbolique aux commandes que vous autorisez dans le dossier ~/bin vers cet utilisateur:
ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm
etc.
HTH