4 votes

Remplacer bash Shell par l'interface cmdline du programme Python

J'ai un programme qui utilise l'outil Python cmd pour les interfaces de ligne de commande.

Maintenant, je veux qu'il fonctionne sur mon serveur Linux à chaque fois qu'un utilisateur normal s'y connecte, de manière à ce que l'utilisateur ne reçoive jamais l'invite par défaut de Linux (c'est-à-dire qu'il ne doit pas pouvoir tuer le programme ou l'envoyer en arrière-plan ou autre).

Pour des raisons de sécurité, le programme ne doit jamais permettre à l'utilisateur d'accéder à l'invite normale. L'utilisateur doit toujours utiliser la ligne cmd du programme pour lancer toutes les commandes. (Le programme a plusieurs filtres intégrés).

J'ai essayé de mettre la commande d'exécution du programme dans /etc/password (remplaçant le bash par défaut Shell par l'exécution du programme cmd) pour l'utilisateur & a également essayé de le mettre dans les utilisateurs .bashrc mais cela ne sert à rien ; l'utilisateur peut toujours avoir accès à l'invite par défaut.

Toute indication à ce sujet peut être très utile.

2voto

technosaurus Points 1042

Vous pouvez remplacer Shell=/bin/sh par votre Shell dans /etc/profile (ou équivalent pour les connexions ssh) - la plupart des émulateurs de terminal et de nombreuses autres applications sonderont env pour obtenir cette valeur afin d'exécuter le Shell par défaut, mais se rabattront sur /bin/sh ou /bin/bash en cas d'échec (vous pouvez cependant vous autoriser à utiliser le Shell, alors intégrez-le dans une vérification user/gid/uid).

utilisez un Shell Shell à la place (ou ajoutez-le simplement au bas de la bashrc sans l'en-tête)

#!/bin/sh
#public domain fake shell
while read -p "$PS1" CMD; do
   case "$CMD" in
      *exit*|*bad_case*|*another bad case*)echo bad command: user info logged etc..;;
      *good case*|*another good case*|*more*)eval "$CMD";;
      *)echo command not supported;;
   esac
done

ou changer les permissions sur le Shell - mais soyez prêt à ce que des choses aléatoires ne fonctionnent pas si vous devez aller aussi loin

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X