#!/bin/sh # Форс-команда из authorized_keys: command="git-ns ". # Пускает пользователя только в git-операции над репозиториями ЕГО неймспейса. NS="$1" REPOS="${REPOS_DIR:-/repos}" set -- $SSH_ORIGINAL_COMMAND cmd="$1" repo=$(printf '%s' "$2" | tr -d "'\"") repo="${repo#/}" case "$cmd" in git-receive-pack|git-upload-pack|git-upload-archive) ;; *) echo "разрешены только git-команды" >&2; exit 1 ;; esac # без слеша -> свой неймспейс case "$repo" in */*) ;; *) repo="$NS/$repo" ;; esac # запрет выхода в чужой неймспейс case "$repo" in "$NS/"*) ;; *) echo "чужой неймспейс запрещён" >&2; exit 1 ;; esac repo="${repo%/}" exec git-shell -c "$cmd '$REPOS/$repo'"