【问题标题】:Permissions difference between sudo su and just being the user? (Specifically with git)sudo su 和只是作为用户之间的权限区别? (特别是 git)
【发布时间】:2013-06-07 22:46:08
【问题描述】:

我遇到了一个奇怪的权限问题。似乎以特定用户身份登录时,我拥有与 sudo su 进入该用户时不同的权限。

使用su变成quantka会导致git权限错误:

sudo su quantka -c "git fetch"
conq: repository access denied.
fatal: The remote end hung up unexpectedly

但只是在 quantka 工作时登录:

quantka@quantka:~$ whoami
quantka
quantka@quantka:~$ git fetch
quantka@quantka:~$ 

为了增加神秘感,这也有效:

quantka@quantka:~$ su quantka -c "git fetch"
Password:

但这不是一个可行的解决方案,因为这需要从脚本运行,无法提示输入密码。

我认为这些应该是相同的?

【问题讨论】:

  • 首先,sudo su 很奇怪。 sudo 所做的是以另一个用户身份执行命令,所以你应该做sudo -u quantka git fetch。其次,sudo 与安全环境混为​​一谈。你的问题似乎是 git 没有找到正确的公钥,但我不确定是什么导致了这个问题……
  • 你说得对,这是一件很奇怪的事情。我这样做的原因(这可能有点令人费解)是因为我真正想做的是使用在启动时运行的脚本(具有 root 权限)调试权限问题。无论如何,我尝试了您的建议 sudo -u quantka git fetch 并得到了相同的权限被拒绝错误。

标签: git ubuntu permissions sudo su


【解决方案1】:

原来这是一个环境变量问题。 ssh 访问远程 git repo 的相关环境变量是SSH_AUTH_SOCK

在 sudo 命令中添加 -E 标志指定应该保留环境变量,所以这样可以:

sudo -E su quantka -c "git fetch"

【讨论】:

    【解决方案2】:

    您的环境可能是问题所在(sudo 清除了部分环境,并保留了其余部分)。

    我会尝试删除 su 并结合使用 sudo 的 -u 标志和 -i 标志来模拟登录条件:

    sudo -u quantka -i git fetch
    

    【讨论】:

    • 奇怪的是,我得到了这个错误:运行sudo -u sookbox -i git fetch 然后fatal: Not a git repository (or any of the parent directories): .git(我和以前在同一个文件夹中,这绝对是一个git repo。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 2016-06-11
    相关资源
    最近更新 更多