Git

允許使用者 ‘git’ 通過 sudo 將 ‘git pull’ 作為 ‘www-data’ 執行

  • September 18, 2020

我想允許 git 以使用者“www-data”的身份執行“git pull”。據我所理解

   git ALL=(www-data) git pull

在 /etc/sudoers 中應該可以。

遺憾的是,我收到此行的語法錯誤,並且 visudo 語法突出顯示在“www-data”中的“-”之後立即中斷

在 /etc/sudoers 使用者名中找不到有關禁止的“-”的資訊。有小費嗎?

您需要為“git”命令使用完整路徑名,以下行在 visudo 中不會產生語法錯誤並且可以正常工作。

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

請注意,我使用的是git使用者名,因此,如果您使用的是gitosis或任何其他使用者名,請填寫您的使用者名!

root使用者的控制台中執行以下命令:

visudo

“vi”編輯器將被打開。添加這些行:

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

結果文件(通過呼叫“visudo”在“vi”編輯器中打開)應該如下所示:

# /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

引用自:https://serverfault.com/questions/269359