LShell ou Limited Shell est écrit en python pour limiter l'utilisateur pour un ensemble spécifique de commandes et de répertoires. Vous pouvez créer un environnement utilisateur avec un accès limité, vous pouvez également activer les commandes de désactivation via l'accès SSH.
Installer un shell limité
Utilisez la commande suivante pour installer le package LShell sur votre système basé sur Debian. Pour les autres systèmes d'exploitation, vous devez rechercher sur Google le package de lshell pour votre distribution.
$ sudo apt-get install lshell
Basculer l'utilisateur vers LShell
Définissez maintenant le LShell comme shell par défaut pour les utilisateurs pour lesquels vous êtes requis. Par exemple pour changer le shell de l'utilisateur sarah.
$sudo chsh sarah Changing the login shell for sarah Enter the new value, or press ENTER for the default Login Shell [/bin/lshell]:/usr/bin/lshell
Vous pouvez également définir le lshell comme shell par défaut pour l'utilisateur lors de la création du compte utilisateur comme suit.
$ sudo adduser --shell /usr/bin/lshell raj
Configurer LShell
Commencez maintenant par la configuration de lshell. Modifier le fichier de configuration de lshell /etc/lshell.conf . Il y a 4 sections de base dans le fichier de configuration.
[global] : Dans cette section, nous définissons les paramètres qui s'appliquent globalement. Par exemple les journaux.[par défaut] : Dans cette section, nous définissons des valeurs par défaut qui s'appliquent à tous les utilisateurs et groupes. Les paramètres de cette section peuvent être remplacés par des paramètres spécifiques à l'utilisateur et au groupe.[NOM D'UTILISATEUR] : Dans cette section, nous spécifions les paramètres spécifiques à l'utilisateur. Les paramètres de cette section s'appliquent uniquement à l'utilisateur[grp:GROUPNAME] : Dans cette section, nous spécifions les paramètres spécifiques au groupe. Les paramètres de cette section s'appliquent à tous les utilisateurs du groupe
Un [par défaut] profile est appliqué pour tous les utilisateurs utilisant lshell. Vous pouvez créer [nom d'utilisateur] section ou un groupe [grp:groupname] section pour personnaliser les utilisateurs et les préférences spécifiques au groupe.
L'ordre de priorité est Utilisateur>> Groupe>> Par défaut . La section utilisateur a la priorité la plus élevée et la section par défaut a la priorité la plus basse.
[global] logpath : /var/log/lshell/ loglevel : 2[default] allowed : ['ls','pwd','cd','cat','cp'] forbidden : [';', '&', '|','`','>','<', '$(', '${'] sudo_commands : ['ls', 'more'] warning_counter : 2 aliases : {'ll':'ls -l', 'vim':'rvim'} prompt : "%[email protected]%h" timer : 0 path : ['/home', '/usr'] env_path : ':/usr/bin/usr/local/bin' env_vars : {'foo':1, 'bar':'helloworld'} scp : 1 # or 0 sftp : 1 # or 0 overssh : ['rsync','ls'] strict : 0 history_file : "/home/%u/.lshell_history"[grp:wheel] warning_counter : 5 overssh : - ['ls'][raj] allowed : 'all' - ['su','rm','mv'] path : ['/etc', '/usr'] - ['/usr/local'] home_path : '/home/raj'[sarah] allowed : + ['ping'] - ['ls'] path : - ['/usr/local'] strict : 1 scpforce : '/home/sarah/uploads/'
Par exemple, l'utilisateur « rja » et l'utilisateur « sarah » appartiennent tous deux au groupe UNIX « wheel » :
Roue de groupe :
- Les utilisateurs du groupe de roues ont un compteur d'avertissement défini sur 5
- Les utilisateurs du groupe de roues ne sont pas autorisés à utiliser la commande "ls".
Utilisateur raj :
- Peut accéder à /etc et /var mais pas à /usr/local
- Peut accéder à toutes les commandes de son PATH à l'exception des commandes - su, rm, vm
- a un compteur d'avertissement défini sur 5 [par défaut]
- a son chemin d'accès défini sur "/home/raj"
Utilisateur sarah :
- Peut accéder à /home et /usr mais pas à /usr/local
- est autorisée la commande par défaut 'ping' mais pas 'ls'
- strictness est mis à 1 (il n'est pas autorisé à taper une commande inconnue)
Nom de l'option | Explication |
---|---|
répertoire des journaux (par défaut /var/log/lshell/ ) | |
définir le niveau de journalisation sur 0, 1, 2, 3 ou 4 (0 :aucun journal, 1 :le moins détaillé, 4 :consigner toutes les commandes) | |
configurer le nom du fichier journal (la valeur par défaut est %u, c'est-à-dire nom_utilisateur.log) | |
liste des commandes autorisées ou "toutes" pour autoriser toutes les commandes dans le PATH de l'utilisateur | |
une liste de caractères ou de commandes interdits - refuse vim, car il permet d'échapper à lshell | |
une liste des commandes autorisées à utiliser avec sudo(8) | |
nombre d'avertissements lorsque l'utilisateur entre une valeur interdite avant de quitter lshell, défini sur -1 pour désactiver. | |
liste des alias de commande (similaire à la directive alias de bash) | |
texte d'introduction à imprimer (lors de la saisie de lshell) | |
configurez votre invite en utilisant %u ou %h (par défaut :nom d'utilisateur) | |
définir la mise à jour du répertoire actuel de l'invite de tri (par défaut :0) | |
une valeur en secondes pour le minuteur de session | |
liste des chemins pour restreindre l'utilisateur "géographiquement" | |
définir le dossier de départ de votre utilisateur | |
définir la variable d'environnement $PATH de l'utilisateur | |
une liste de chemin ; tous les fichiers exécutables à l'intérieur de ces chemins seront autorisés | |
ajouter des variables d'environnement | |
autoriser ou interdire l'utilisation de scp (réglé sur 1 ou 0) | |
interdire le téléchargement scp | |
interdire le téléchargement scp | |
autoriser ou interdire l'utilisation de sftp (réglé sur 1 ou 0) | |
liste des commandes autorisées à s'exécuter sur ssh | |
rigueur de journalisation. 1 pour toute commande inconnue est considérée comme interdite et 0 comme inconnue | |
forcer l'envoi de fichiers via scp vers un répertoire spécifique | |
taille maximale du fichier d'historique | |
définir le nom du fichier d'historique (la valeur par défaut est /home/%u/.lhistory) | |
définir le script à exécuter lors de la connexion de l'utilisateur |