允许 chroot 下的 git 访问

允许 chroot 下的 git 访问

服务器chroot环境已经搭建完成,用户可以通过 访问服务器sftp,除此之外,还需要使用git我正在关注这个链接创建 chroot-jail-ssh-访问,复制/bin/bash /usr/bin/git-shell/home/someuser/bin/bash/home/someuser/usr/bin/git-shell以及l2chroot部分。

/home/someuser/lib#ls -al -R
 total 12 drwxr-xr-x  3 git  git  4096 Jul 24 15:21 . drwxr-xr-x 25
 root root 4096 Jul 24 15:21 .. drwxr-xr-x  2 git  git  4096 Jul 24
 15:21 x86_64-linux-gnu
 
 ./x86_64-linux-gnu: total 2888 drwxr-xr-x 2 git git    4096 Jul 24
 15:21 . drwxr-xr-x 3 git git    4096 Jul 24 15:21 ..
 -rwxr-xr-x 1 git git 1868984 Jul 24 15:21 libc.so.6
 -rw-r--r-- 1 git git   14608 Jul 24 15:21 libdl.so.2
 -rw-r--r-- 1 git git  456632 Jul 24 15:21 libpcre.so.3
 -rwxr-xr-x 1 git git  138696 Jul 24 15:21 libpthread.so.0
 -rw-r--r-- 1 git git   31712 Jul 24 15:21 librt.so.1
 -rw-r--r-- 1 git git  130224 Jul 24 15:21 libselinux.so.1
 -rw-r--r-- 1 git git  167240 Jul 24 15:21 libtinfo.so.5
 -rw-r--r-- 1 git git  104864 Jul 24 15:21 libz.so.1

但是我登录时someuser它抱怨:

Last login: Mon Jul 24 16:59:19 2017 from 114.***.189
**/usr/bin/git-shell: Not a directory**

首先我希望 git 用户能够使用 git。其次我不希望他们能够读取系统上的每个文件。如何实现?

更新: sshd_configsftp 部分

Subsystem sftp internal-sftp -f AUTH -l INFO
Match group sftpusers
  ChrootDirectory %h
  ForceCommand internal-sftp -l INFO -f AUTH
  AllowTcpForwarding no
  X11Forwarding no

Match group git
  ChrootDirectory /home/%u
  X11Forwarding no
  AllowTcpForwarding no

答案1

如果您希望在 chroot 中使用 git(一旦您不允许 shell 访问,就没有理由这样做),则需要将可执行文件包含在 chroot 中。只需从系统中复制一个(包括所有动态链接库)。

答案2

@Shihe Zhang,由于我只有拥有“50 点声誉”才能回复您,所以我将在这里回复...我怀疑您收到的错误/usr/bin/git-shell: Not a directory是由于 chroot 中没有所需的库造成的。

例如,当我运行 时ldd /usr/bin/git-shell,我会在 /lib 和 /lib64 中获得变量库。如果这些被mount --bind放入 chroot。那么我也需要挂载“/dev”。

因此,执行以下操作可解决此问题(至少对我来说):

for i in lib lib64 dev; do mkdir /home/git/$i; mount --bind -o ro /$i /home/git/$i; done

相关内容