允许用户'git'通过sudo将'git pull'作为'www-data'运行


12

我想允许git以用户“ www-data”的身份运行“ git pull”。据我了解git ALL =(www-data)git pull / etc / sudoers应该可以做到。

可悲的是,我在此行中收到语法错误,而visudo语法高亮在“ www-data”中的“-”之后中断

在/ etc / sudoers用户名中找不到有关禁止的'-'的信息。有小费吗?

Answers:


11

您需要为'git'命令使用完整路径名,以下几行在visudo中不会产生语法错误,并且可以正常工作。

git ALL = (www-data) /usr/bin/git pull


6
@本和你没有分享?
agrublev

9

请注意,我使用的是git用户名,因此,如果您使用的是gitosis或任何其他用户名,请填写您的用户名!

在具有root用户的控制台中执行以下命令:

visudo

将打开“ vi”编辑器。添加这些行:

Defaults:git    !authenticate
git ALL=(www-data) ALL

结果文件(在“ vi”编辑器中通过调用“ visudo”打开)应如下所示:

# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults    env_reset
Defaults:git    !authenticate

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL
git ALL=(www-data) ALL


# Allow members of group sudo to execute any command
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL
#
#includedir /etc/sudoers.d

然后按CTRL + O保存文件,然后按Enter接受文件名(bla bla bla),然后按CTRL + X关闭“ vi”编辑器。

瞧!现在git用户可以以www-data用户身份执行命令:

sudo -u www-data git pull origin master
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.