path: root/Documentation/git-shell.txt
diff options
authorJeff King <>2017-09-11 15:27:51 (GMT)
committerJunio C Hamano <>2017-09-12 02:05:58 (GMT)
commit9a42c03cb71eaa9d41ba67275de38c997a791c32 (patch)
tree44ee74f0b9e03573523e311e7011c26c5f580e84 /Documentation/git-shell.txt
parent4d4165b80d6b91a255e2847583bd4df98b5d54e1 (diff)
shell: drop git-cvsserver support by default
The git-cvsserver script is old and largely unmaintained these days. But git-shell allows untrusted users to run it out of the box, significantly increasing its attack surface. Let's drop it from git-shell's list of internal handlers so that it cannot be run by default. This is not backwards compatible. But given the age and development activity on CVS-related parts of Git, this is likely to impact very few users, while helping many more (i.e., anybody who runs git-shell and had no intention of supporting CVS). There's no configuration mechanism in git-shell for us to add a boolean and flip it to "off". But there is a mechanism for adding custom commands, and adding CVS support here is fairly trivial. Let's document it to give guidance to anybody who really is still running cvsserver. Signed-off-by: Jeff King <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'Documentation/git-shell.txt')
1 files changed, 16 insertions, 0 deletions
diff --git a/Documentation/git-shell.txt b/Documentation/git-shell.txt
index 2e30a3e..54cf256 100644
--- a/Documentation/git-shell.txt
+++ b/Documentation/git-shell.txt
@@ -79,6 +79,22 @@ EOF
$ chmod +x $HOME/git-shell-commands/no-interactive-login
+To enable git-cvsserver access (which should generally have the
+`no-interactive-login` example above as a prerequisite, as creating
+the git-shell-commands directory allows interactive logins):
+$ cat >$HOME/git-shell-commands/cvs <<\EOF
+if ! test $# = 1 && test "$1" = "server"
+ echo >&2 "git-cvsserver only handles \"server\""
+ exit 1
+exec git cvsserver server
+$ chmod +x $HOME/git-shell-commands/cvs