预接收挂钩文件,在执行挂钩时显示不需要的消息

时间:2017-12-14 06:48:27

标签: ruby-on-rails git gitlab githooks

GitLab版本 - 9.3.6

最近我添加了用于阻止二进制文件推送的pre-receive挂钩。我可以在我的gitlab测试服务器机器(图片下方)中获得预期的结果

Testing Server side displaying message

我在实时服务器计算机上添加了相同的挂钩文件。但是我在显示消息时还有另外一行(下面)。

Live server side displaying message

实际上,我的钩子工作正常。但是在消息中显示了一条额外的行。我确定,我的钩子文件上没有额外的打印声明。

我的提交消息是

remote: hooks/pre-receive:3: warning: Insecure world writable dir /opt/gitlab/embedded/libexec in PATH, mode 040777        

remote: Hello there! We have restricted the binary files (.exe, .dll, .zip, .7z, .deb, .cab, .gz, .pkg, .iso) that are pushed into GitLab.        
remote: Your changes contain following file(s) from origin commit c7a151fb to a4e7c31c. Kindly remove the following file(s) and try again.        
remote:     NewTest.dll        

如何从该消息行中删除行hooks/pre-receive:3: warning: Insecure world writable dir /opt/gitlab/embedded/libexec in PATH, mode 040777

2 个答案:

答案 0 :(得分:3)

警告表示/opt/gitlab/embedded/libexec是世界可写的。这是一个安全问题,因为它是钩子显然运行的PATH环境的一部分。这意味着任何有权访问服务器的人都可以将可执行文件放入该目录,可能会使用恶意命令隐藏合法命令。如果然后在钩子中使用这些命令,则任何人都可以获得运行钩子的用户的权限。

要解决此问题,您应该使指示的libexec目录不可写:

chmod o-w /opt/gitlab/embedded/libexec

答案 1 :(得分:0)

我使用sudo chmod go-w /opt/gitlabsudo chmod go-w /opt/gitlab/embedded/binsudo chmod go-w /opt/gitlab/embedded

解决了这个问题

我在错误中显示的路径中给出了写权限。最后,它的作品。