← man/dev_and_programming
git-shell — man git-shell — 80×24
ugur@toprak:~/man/dev_and_programming$man git-shell
Bölüm 1 Geliştirme & Programlama

git-shell

Yalnızca Git SSH erişimi için sınırlandırılmış oturum açma kabuğu

Sözdizimi

        chsh -s $(command -v git-shell) <kullanici>
        git clone <kullanici>@localhost:/path/to/repo.git
        ssh <kullanici>@localhost

Açıklama

Bu kabuk, sınırlandırılmış Git erişimi sağlamak amacıyla SSH hesapları için kullanılan bir oturum açma kabuğudur. Yalnızca çekme/itme (pull/push) işlevselliğini uygulayan sunucu tarafı Git komutlarının ve kullanıcının ev dizinindeki git-shell-commands adlı alt dizinde bulunan özel komutların yürütülmesine izin verir.

Komutlar

git shell, -c seçeneğinden sonra aşağıdaki komutları kabul eder:

git receive-pack <argüman>, git upload-pack <argüman>, git upload-archive <argüman> İstemcinin git push, git fetch veya git archive --remote isteklerini desteklemek için karşılık gelen sunucu tarafı komutunu çağırır.

cvs server Bir CVS sunucusunu taklit eder. Bkz. git-cvsserver(1).

Eğer bir ~/git-shell-commands dizini mevcutsa, git shell kullanıcının ev dizininden "git-shell-commands/ <argümanlar>" komutunu çalıştırarak diğer özel komutları da işleyecektir.

Etkileşimli Kullanım

Varsayılan olarak, yukarıdaki komutlar yalnızca -c seçeneği ile yürütülebilir; kabuk etkileşimli değildir.

Eğer bir ~/git-shell-commands dizini mevcutsa, git shell etkileşimli olarak da çalıştırılabilir (argümansız). git-shell-commands dizininde bir help (yardım) komutu varsa, kullanıcıya izin verilen eylemler hakkında genel bir bakış sunmak için bu komut çalıştırılır. Ardından, kullanıcının git-shell-commands dizinindeki komutlardan herhangi birini girebileceği veya bağlantıyı kapatmak için çıkış yapabileceği bir "git> " istemi sunulur.

Genellikle bu mod, kullanıcıların erişebildikleri depoları listelemelerine, depoları oluşturmalarına, silmelerine, yeniden adlandırmalarına ya da depo açıklamalarını ve izinlerini değiştirmelerine olanak tanıyan bir yönetim arayüzü olarak kullanılır.

Eğer bir no-interactive-login komutu mevcutsa, bu komut çalıştırılır ve etkileşimli kabuk sonlandırılır.

Örnekler

        Etkileşimli girişleri devre dışı bırakmak ve bunun yerine bir karşılama mesajı görüntülemek için:

	   $ chsh -s /usr/bin/git-shell
	   $ mkdir $HOME/git-shell-commands
	   $ cat >$HOME/git-shell-commands/no-interactive-login <<\EOF
	   #!/bin/sh
	   printf '%s\n' "Merhaba $USER! Kimliğinizi başarıyla doğruladınız, ancak ben"
	   printf '%s\n' "etkileşimli kabuk erişimi sağlamıyorum."
	   exit 128
	   EOF
	   $ chmod +x $HOME/git-shell-commands/no-interactive-login

        git-cvsserver erişimini etkinleştirmek için (git-shell-commands dizininin oluşturulması etkileşimli girişlere izin verdiğinden, ön koşul olarak genellikle yukarıdaki no-interactive-login örneğine sahip olunmalıdır):

	   $ cat >$HOME/git-shell-commands/cvs <<\EOF
	   if ! test $# = 1 && test "$1" = "server"
	   then
		   echo >&2 "git-cvsserver yalnızca \"server\" parametresini işler"
		   exit 1
	   fi
	   exec git cvsserver server
	   EOF
	   $ chmod +x $HOME/git-shell-commands/cvs

Ayrıca Bakınız

ssh(1), git-daemon(1), contrib/git-shell-commands/README

Git

git(1) paketinin bir parçasıdır

Git 2.50.1.428.g0e8243 2025-07-22 GIT-SHELL(1)