无法访问“ /root/.config/git/attributes”:“权限>拒绝”


10

在我们的Ubuntu Server中,我们能够以Nginx用户身份进行克隆,/usr/share/nginx/www该用户具有www-data:www-data所有权,并收到如下警告:

”警告:无法访问'/root/.config/git/attributes':权限被拒绝”

我们正在执行命令 sudo -u www-data git clone <repo>.

使用sudo,我们会收到此警告,否则它将正常工作。

我们可以克隆为root用户,没有问题。

.gitconfig仅位于根目录中,请查看内容:

root@geo:~# cat /root/.gitconfig
[user]
        name = pc_user
        email = pcgeopc@gmail.com
root@geo:~#

任何人都可以帮助我们。

我们尝试了各种选项,例如/root/.config/直接手动创建和更改权限等。但是没有任何效果。有人可以帮我吗。

另请参见:

root@geo:/setup/test# ll /setup/
total 16
drwxr-xr-x  4 www-data www-data 4096 Oct  9 00:14 ./
drwxr-xr-x 24 root     root     4096 Oct  9 00:14 ../
drwxr-xr-x  3 www-data www-data 4096 Oct  9 00:14 test/

root@geo:/setup/test# sudo -u www-data git clone -v git@....../test.git
Cloning into 'test'...
remote: Counting objects: 8323, done.
remote: Compressing objects: 100% (6459/6459), done.
remote: Total 8323 (delta 1543), reused 8241 (delta 1500)
Receiving objects: 100% (8323/8323), 39.85 MiB | 19.52 MiB/s, done.
Resolving deltas: 100% (1543/1543), done.
Checking connectivity... done.
warning: unable to access '/root/.config/git/attributes': Permission denied

所以这似乎与git setup有关。谁能指导我们。


我在Ubuntu 14.04上使用此设置。当我在另一个Ubuntu 12.04中进行相同的设置时,它的运行正常。

我也这样做了:

创建一个用户geopc并将其添加到sudoers列表中,当我们以geopc用户身份登录并执行此命令时,sudo -u www-data git clone -v git@....../test.git 它可以完美运行。

所以问题是当我们直接以root用户身份登录Ubuntu 14.04并在出现sudo -u www-data git clone此警告时进行克隆时。但不是在Ubuntu 12.04中。

我们在Ubuntu 14.04上使用git版本1.9.1,我们也将git升级到了版本2.1.1,但相同。


1
文件系统权限通常会阻止所有其他用户(包括www-data)访问下方的文件,这是很典型的/root。如果没有文件系统权限,那么诸如AppArmor或SELinux之类的东西肯定会阻止Web服务器访问/ root。
HBruijn 2014年

似乎没有。我修改了问题,请检查一下。
2014年


我正在使用这个答案,这个答案为我工作。尝试一下
Toir427

Answers:


10

@mu是正确的。这是将root用户www-data的HOME环境变量而不是用户的HOME环境变量传递给脚本的问题。

不过,您只需要将-H开关添加到sudo命令,因此相当简单:

sudo -u www-data -H git clone -v git@....../test.git

1

我认为该HOME变量设置不正确。

Google组线程中

将HOME环境变量设置为,/root以便查看/root/.gitconfig/root/.config/git/config由于非特权用户无法访问/root它而引发错误。

所以解决方案是我将HOME env设置为用户的HOME目录


对我来说,它开始了:HOME = / home / git git daemon ...
rofrol 2015年

-1

您只需要使用root用户以外的其他用户重新启动存储实例。通常,用户将与安装时使用的用户相同。

例如atlstash

这样做会将您的HOME变量设置为/ home / atlstash并解决您的问题

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.