我在试着设置一个git服务器。我成功地设置了SSH服务器,现在我试图设置一个匿名git服务,但是它不能正常工作。
我从git图书https://git-scm.com/book/en/v2/Git-on-the-Server-Git-Daemon复制了示例systemd服务文件,只将路径更改为文件所在的位置:
$ cat /etc/systemd/system/git-daemon.service
[Unit]
Description=Start Git Daemon
[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv /srv/src/
Restart=always
RestartSec=500ms
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon
User=git
Group=git
[Install]
WantedBy=multi-user.target然后创建一个git用户和组:
$ sudo useradd -U --system git
$ sudo usermod -d /nonexistent git
$ sudo usermod -s /usr/sbin/nologin git
$ sudo usermod -c git git
$ getent passwd git
git:x:998:998:git:/nonexistent:/usr/sbin/nologin
$ groups git
git : git然后启用并启动服务(我将在下面显示该服务是活动的和正在运行的):
$ sudo systemctl enable git-daemon.service
Created symlink /etc/systemd/system/multi-user.target.wants/git-daemon.service ��� /etc/systemd/system/git-daemon.service.
$ sudo systemctl start git-daemon.service然后创建文件以导出回购:
$ touch /srv/src/alx/libalx.git/git-daemon-export-ok
$ ls -l /srv/src/alx/libalx.git/git-daemon-export-ok
-rw-r--r-- 1 alx alx 0 Jan 7 18:49 /srv/src/alx/libalx.git/git-daemon-export-ok然后试图从中克隆:
$ git clone git://localhost/src/alx/libalx.git
Cloning into 'libalx'...
fatal: remote error: access denied or repository not exported: /src/alx/libalx.git该服务抱怨说它没有白名单(但它是,不是吗?):
$ sudo systemctl status git-daemon.service
��� git-daemon.service - Start Git Daemon
Loaded: loaded (/etc/systemd/system/git-daemon.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-01-07 18:43:52 CET; 24min ago
Main PID: 43138 (git)
Tasks: 2 (limit: 3366)
Memory: 528.0K
CPU: 26ms
CGroup: /system.slice/git-daemon.service
������43138 /usr/bin/git daemon --reuseaddr --base-path=/srv /srv/src/
������43139 /usr/lib/git-core/git-daemon --reuseaddr --base-path=/srv /srv/src/
Jan 07 18:43:52 rpi systemd[1]: Started Start Git Daemon.
Jan 07 18:43:59 rpi git-daemon[43144]: [43144] '/srv/src/alx/libalx.git': not in whitelist
Jan 07 18:50:02 rpi git-daemon[43175]: [43175] '/srv/src/alx/libalx.git': not in whitelist
Jan 07 18:50:03 rpi git-daemon[43176]: [43176] '/srv/src/alx/libalx.git': not in whitelist
Jan 07 18:52:54 rpi git-daemon[43186]: [43186] '/srv/src/alx/libalx.git': not in whitelist为什么我不能通过git://克隆?
如果我通过一个完全无效的路径来克隆,我在客户端得到相同的精确输出,但是在服务器端,日志是不同的:
$ git clone git://localhost/src/ald/sdf/sdf.git
Cloning into 'sdf'...
fatal: remote error: access denied or repository not exported: /src/ald/sdf/sdf.git$ sudo systemctl status git-daemon.service
...
Jan 07 19:13:37 rpi git-daemon[43261]: [43261] '/srv/src/ald/sdf/sdf.git' does not appear to be a git repository发布于 2022-01-08 02:50:33
几分钟前我自己就遇到了这个问题,在解决问题的过程中遇到了你的问题。
从系统文件中git守护进程命令末尾的目录路径中移除尾随斜杠。这似乎会导致白名单出现问题,如/var/log/syslog中显示的错误所示。
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv /srv/src在我做了类似的更改之后,我能够像预期的那样使用git协议。
https://unix.stackexchange.com/questions/685481
复制相似问题