【问题标题】:unable to access '/Users/dida/.config/git/attributes': Permission denied无法访问“/Users/dida/.config/git/attributes”:权限被拒绝
【发布时间】:2017-12-25 13:01:54
【问题描述】:

当我做一些 git 操作时,例如 'git diff' 或 'git add .',它显示警告:

unable to access '/Users/dida/.config/git/attributes': Permission denied 

我想知道我做错了哪个配置,我该如何解决?
用一些命令比较好,我用的是mac命令行

【问题讨论】:

  • 我正在使用这个answer,这个答案对我有用

标签: git permissions


【解决方案1】:

您似乎已经运行了sudo -H 并且sudo 将某些文件的所有权更改为root。取回文件:

sudo chown -R dida /Users/dida

【讨论】:

  • 我,不是 Mac 的经验丰富的用户,我认为“dida”是一个命令行词。不要误会我的错误。在我的情况下是:sudo chown -R hamid /Users/hamid
【解决方案2】:

原因

Git 从多种路径读取配置设置,但其中一些路径无权访问。

由于启动脚本使用带有不重置环境变量选项 (-m) 的 su 命令,Git 尝试读取 root 配置设置而不是配置设置:

/bin/su -m $USER -c "cd $BASE/logs && $BASE/bin/startup.sh &> /dev/null"

Bitbucket 服务器正在使用 /etc/init.d/atlbitbucket 启动脚本以 root 身份启动。由于 init.d 脚本调用了使用 su -m 的 start-bitbucket.sh,这会导致 root 的环境变量被保留,并且 atlbitbucket 没有写入 root 主目录的权限。

Git 是使用默认设置从源代码编译的,这会阻止除编译 Git 的用户之外的任何用户运行它

分辨率

修复执行命令的 Bitbucket Server 用户对文件和目录的权限:

chown <USER>.<GROUP> -R /home/<USER>/.config
chown <USER>.<GROUP> -R /home/<USER>/.gitconfig

(信息)通过您的操作系统中的用户名和组更改 USER.GROUP。

如果 Bitbucket Server 启动脚本有 su 命令,请确保没有使用 -m 选项。

如果 Bitbucket Server 正在使用 /etc/init.d/atlbitbucket start 启动,则切换到使用 service atlbitbucket start 启动 Bitbucket Servering

要让 Bitbucket Server 在启动时自动启动,请运行 chkconfig atlbitbucket on

使用更合理的默认值重新编译 Git:

make prefix=/usr/local/git all
make prefix=/usr/local/git install

也许这篇文章可以帮助你https://confluence.atlassian.com/bitbucketserverkb/permission-denied-on-git-config-file-779171763.html

【讨论】:

  • 对我有用的是如下所示:sudo chown -R $(whoami):staff /Users/username/.config,并且可以访问不可访问的目录.config
【解决方案3】:

警告:无法访问“/Users/raavan/.config/git/ignore”:权限被拒绝 警告:无法访问“/Users/raavan/.config/git/attributes”:权限巢穴

好的!如果你有类似的东西,这就是解决方案。 使用 sudo 命令

sudo git add --all, sudo git commit -m ""

这将在 mac os 中为我工作和工作。

如果有人知道 sudo 命令为何起作用或替代方法,请回复!

【讨论】:

    【解决方案4】:

    git 使用HOMEXDG_CONFIG_HOME 环境设置来查找配置文件。

    确保对您当前的用户正确设置它们(检查id command 的结果)

    id -a
    

    还要检查git config -l --show-origin 以查看在哪里Git 正在尝试访问这些配置文件。

    【讨论】:

      【解决方案5】:

      尝试 sudo -u user --set-home git clone http://github.com/repohere 这对我有用。

      【讨论】:

        【解决方案6】:

        在找到有关该文件的更多信息后,我注意到该文件并非归我的用户(“ubuntu”)所有,而是归“root”所有。

        ls -dl /home/$USER/.config 查找文件的用户和组


        sudo chown $USER -R /home/$USER/.config更新文件的用户 sudo chgrp $USER -R home/$USER/.config/ 将文件的组更新为您当前的用户

        现在,当您再次使用ls 获取文件详细信息时,您会看到信息已更新。

        这为我解决了问题。

        【讨论】:

          猜你喜欢
          • 2021-09-18
          • 1970-01-01
          • 2017-12-02
          • 1970-01-01
          • 2018-12-13
          • 2019-05-27
          • 2020-10-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多