GNU/Linux >> Tutoriels Linux >  >> Linux

Ssh - Ajouter un utilisateur qui ne peut exécuter des scripts qu'à distance ?

Je voudrais créer un utilisateur qui ne peut faire qu'une chose :via ssh, spécifiez un script (et les arguments de ligne de commande du script) qui réside dans un dossier particulier
(aux fins de cette question, appelons-le /local/remote_only_scripts/foo ) et que ce script s'exécute et renvoie sa sortie.

Pour être clair, voici quelques exemples de choses que je ne veux pas que l'utilisateur puisse faire :

  • Se connecter localement au compte.
    L'application de connexion est /bin/login . Ce n'est pas un script dans le /local/remote_only_scripts/foo dossier, il ne doit donc pas être appelé par l'utilisateur.
  • Se connecter à distance au compte. Encore une fois, login ( est-ce que c'est ce qu'appelle ssh ? ) n'est pas un script dans le dossier concerné.
  • Listez le contenu du répertoire. ls est dans /bin/ls . Ce n'est pas un script dans le répertoire approprié.
  • Modifier un fichier dans ce répertoire. emacs, vi, gedit la plupart des autres éditeurs ne sont pas des scripts dans ce répertoire.
  • Afficher le contenu d'un fichier dans ce répertoire.
  • Exécuter un fichier dans ce répertoire qu'il n'a pas l'autorisation d'exécuter.

Notez que ce sont des exemples il y a beaucoup d'autres actions que je ne veux pas que l'utilisateur puisse faire. En considérant une action, demandez "est-ce que cela est fait par un script dans /local/remote_only_scripts/foo ?" si la réponse est non, l'utilisateur ne devrait pas pouvoir le faire. Si la réponse est oui, l'utilisateur devrait pouvoir le faire.

PS :Permettez-moi de clarifier ce que je veux dire par "ajouter un utilisateur". Je ne veux pas dire ajouter un utilisateur à un sous-système ssh. Je veux plutôt dire ajouter un utilisateur au système informatique. Ainsi, par exemple, j'ai un système exécutant Debian stable, appelez-le par son adresse, www.hg.bar.com. Je veux ajouter un utilisateur (via kuser, users-admin ou useradd ou d'une manière similaire) appelez-le hg_guest. hg_guest ne peut pas se connecter localement ou faire l'une des choses dans la liste ci-dessus. Tout ce que hg_guest peut faire, c'est exécuter des scripts "à distance". J'ai dit qu'il devrait pouvoir le faire via ssh, mais en y réfléchissant maintenant, peut-être que lui permettre d'utiliser ssh peut lui permettre de se connecter localement, donc un autre mécanisme peut être nécessaire.

Réponse acceptée :

Il y a une commande option dans le fichier authorized_keys. Cette option semble faire exactement ce que vous voulez.

En relation :Linux – Récupération de données à partir d'un formatage accidentel sur une partition ext4 ?

Notez que ce n'est pas un chroot ou un shell restreint. Il permet d'exécuter uniquement ces commandes via ssh. Avec votre exemple, ce serait :

ssh somehost /local/remote_only_scripts/foo

Pour ce fichier authorised_keys :

command="/local/remote_only_scripts/foo",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ...public key... 

Il existe de nombreuses façons si vous ne voulez pas que votre utilisateur puisse se connecter localement. Vous pouvez soit :

  • définissez simplement son shell sur /bin/false (peut-être aurez-vous besoin de /bin/true puisque ssh a besoin d'une connexion valide)
  • verrouiller son mot de passe, voir passwd -l

MODIFIER  :ajout d'options de restriction supplémentaires et clarification de la manière dont vous supprimez l'accès local.


Linux
  1. Exécuter les scripts Bash en entrant dans un répertoire ?

  2. Ssh – Restreindre un utilisateur Ssh/scp/sftp à un répertoire ?

  3. Comment configurer des clés SSH sur Debian

  4. Comment exécuter SSH et SCP en mode batch (uniquement lorsque la connexion sans mot de passe est activée)

  5. Linux exécuter la commande à distance

Comment puis-je exécuter une série de commandes dans un sous-shell bash en tant qu'autre utilisateur utilisant sudo ?

Puis-je désactiver la dernière connexion SSH et MOTD par utilisateur ?

J'ai foiré mon .bash_profile à distance, impossible de revenir en ssh

Comment restreindre un utilisateur SSH pour autoriser uniquement le tunnel SSH ?

accès au tunneling ssh uniquement

Que peut-on apprendre sur un utilisateur d'une tentative SSH infructueuse ?