From 966b62d9bd7e483f1e9484a5a99d8c2db475171c Mon Sep 17 00:00:00 2001 From: prospanclaudebot Date: Fri, 10 Jul 2026 22:10:31 +0000 Subject: initial import: pacan-git --- ssh/git-ns | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100755 ssh/git-ns (limited to 'ssh/git-ns') diff --git a/ssh/git-ns b/ssh/git-ns new file mode 100755 index 0000000..f8b6b0b --- /dev/null +++ b/ssh/git-ns @@ -0,0 +1,25 @@ +#!/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'" -- cgit v1.2.3