首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git-daemon说“不在白名单中”,即使git-daemon-export-ok存在。

git-daemon说“不在白名单中”,即使git-daemon-export-ok存在。
EN

Unix & Linux用户
提问于 2022-01-07 18:12:10
回答 1查看 376关注 0票数 0

我在试着设置一个git服务器。我成功地设置了SSH服务器,现在我试图设置一个匿名git服务,但是它不能正常工作。

我从git图书https://git-scm.com/book/en/v2/Git-on-the-Server-Git-Daemon复制了示例systemd服务文件,只将路径更改为文件所在的位置:

代码语言:javascript
复制
$ 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用户和组:

代码语言:javascript
复制
$ 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

然后启用并启动服务(我将在下面显示该服务是活动的和正在运行的):

代码语言:javascript
复制
$ 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

然后创建文件以导出回购:

代码语言:javascript
复制
$ 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

然后试图从中克隆:

代码语言:javascript
复制
$ git clone git://localhost/src/alx/libalx.git
Cloning into 'libalx'...
fatal: remote error: access denied or repository not exported: /src/alx/libalx.git

该服务抱怨说它没有白名单(但它是,不是吗?):

代码语言:javascript
复制
$ 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://克隆?

如果我通过一个完全无效的路径来克隆,我在客户端得到相同的精确输出,但是在服务器端,日志是不同的:

代码语言:javascript
复制
$ 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
代码语言:javascript
复制
$ 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
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-01-08 02:50:33

几分钟前我自己就遇到了这个问题,在解决问题的过程中遇到了你的问题。

从系统文件中git守护进程命令末尾的目录路径中移除尾随斜杠。这似乎会导致白名单出现问题,如/var/log/syslog中显示的错误所示。

代码语言:javascript
复制
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv /srv/src

在我做了类似的更改之后,我能够像预期的那样使用git协议。

票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/685481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档