URL: https://linuxfr.org/users/glandos/journaux/restreindre-rsync-avec-git-shell Title: Restreindre rsync avec git-shell Authors: Glandos Date: 2021年05月21日T10:59:57+02:00 License: CC By-SA Tags: rsync, git-shell et rrsync Score: 34 Un bon petit journal technique parce que j'ai pas trouvé comment faire ailleurs. J'ai un serveur avec un compte `git` dont le shell de connexion est positionné sur `git-shell`. Ce dernier n'accepte que les commandes utilisées par git, afin de s'assurer que personne ne fasse des choses non autorisées. Mon besoin vient de s'agrandir (_Félicitations !_), et j'ai besoin de faire de l'envoi de fichier à l'aide de rsync. `git-shell` mentionne la possibilité d'ajouter des commandes personnalisées. Parfait. De son côté, rsync fournit [rrsync](https://ftp.samba.org/pub/unpacked/rsync/support/rrsync) pour restreindre les répertoires visibles sur le serveur. Re-parfait. Et là, c'est le drame. `rrsync` veut, et vérifie, qu'il est bien lancé par une session ssh. Je regarde le code, et j'en déduis qu'il se base sur la variable `SSH_ORIGINAL_COMMAND`. Donc c'est parti pour lui _faire croire_ qu'il est en terrain connu. Donc il faut créer un fichier `~/git-shell-commands/rsync` **exécutable**, avec ça dedans : ```sh #!/bin/sh export SSH_ORIGINAL_COMMAND="rsync $@" exec $HOME/bin/rrsync /srv/git/rsync_files/ $@ ``` C'est pas long, et c'est fini. Bien sûr, il faut adapter. `$HOME/bin/rrsync` est l'emplacement (non standard) du script, et `/srv/git/rsync_files/` correspond à mon serveur. Tous les appels à `rsync fichiers git@monserveur:répertoire` finiront dans `/srv/git/rsync_files/répertoire/`. Évidemment, c'est le bricolage du jour. Si vous y voyez des grosses boulettes, n'hésitez pas à le signaler.

AltStyle によって変換されたページ (->オリジナル) /