mercredi 17 mai 2017

Utilisation de git-shell

Un utilisateur qui va travailler avec un repository Git via SSH n'est pas censé disposer de toutes les possibilités offertes à utilisateur "normal".

Pour limiter les actions d'un utilisateur Git propose un "shell restreint" appelé "git-shell".
Il permet d'exécuter uniquement des actions Git sur le serveur.

Seules les commandes suivantes peuvent être exécutées via git-shell :
  - git receive-pack <argument>
  - git upload-pack <argument>
  - git upload-archive <argument>
ce qui permet au client Git de réaliser les opérations suivantes :
  - git push
  - git fetch
  - git archive


Vérification de "git-shell"

L'objectif est de remplacer le shell standard de certains utilisateurs ("bash", "sh", etc) par "git-shell".
"git-shell" doit donc être installé sur le serveur (ce qui doit être le cas, il est fourni avec git)
et faire partie de la liste des "shells" utilisables.

Vérifier que git-shell est bien installé sur le serveur :
$ which git-shell
/usr/bin/git-shell
ou
$ command -v git-shell
/usr/bin/git-shell

Lorsqu'on exécute "git-shell" il affiche le message suivant :
  fatal: Interactive git shell is not enabled.
Ce qui est normal puisque "git-shell" n'est pas un "shell interactif"

Vérifier que "git-shell" fait partie de la liste des shells utilisables
$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash

Pour l'ajouter :
$ su
$ vi /etc/shells
Ajouter le path complet ( par exemple "/usr/bin/git-shell" )


Mise en place de "git-shell" pour un utilisateur 

Il suffit de changer le shell de l'utilisateur courant :
$ chsh -s /usr/bin/git-shell
Password:

A partir de maintenant l'utilisateur n'a plus de "shell interactif",
toute tentative de "login" sera refusée.
Lorsqu'il tentera de se connecter via SSH le serveur affichera le message suivant :
  fatal: Interactive git shell is not enabled.
  hint: ~/git-shell-commands should exist and have read and execute acc

Un "su user-name" n'est donc plus possible non plus.

Aucun commentaire:

Enregistrer un commentaire