Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 允许非特权用户以其他用户身份运行命令_Git_Bash_Sudo_Privileges - Fatal编程技术网

Git 允许非特权用户以其他用户身份运行命令

Git 允许非特权用户以其他用户身份运行命令,git,bash,sudo,privileges,Git,Bash,Sudo,Privileges,我有以下脚本,当我以自己的sudo权限运行它时,效果非常好: department_wpsites=("/var/www/asiane/wp-ane" "/var/www/english/wp-english") for f in ${department_wpsites[*]} do theme_path="$f/wp-content/themes/dept-theme" cd $theme_path echo ">> Performing 'git pu

我有以下脚本,当我以自己的sudo权限运行它时,效果非常好:

department_wpsites=("/var/www/asiane/wp-ane" "/var/www/english/wp-english")

for f in ${department_wpsites[*]}
do
    theme_path="$f/wp-content/themes/dept-theme"
    cd $theme_path
    echo ">> Performing 'git pull' at $theme_path"
    sudo -u www-data git pull
done

现在我想让我的一个没有sudo特权的下属来管理它。请注意,无论是谁运行脚本,都需要由www-data拥有由git-pull修改/创建的所有文件。如何允许非sudo用户使用此脚本或类似的脚本?

可以调整sudo以允许管理员设置可以由谁运行的脚本。这不像是一刀切的“当我将用户添加到sodoers文件中时,用户自动成为管理员”是强制的。sodoers允许使用细粒度规则,可以帮助您调整规则以满足您的需要,其中将允许单个用户运行单个脚本(而无其他内容)


可以调整sudo,以允许管理员设置who可以运行的内容。这不像是一刀切的“当我将用户添加到sodoers文件中时,用户自动成为管理员”是强制的。sodoers允许使用细粒度规则,可以帮助您调整规则以满足您的需要,其中将允许单个用户运行单个脚本(而无其他内容)


所以我一直在尝试使用sudoers文件,但我认为需要启用的是行
sudo-u www-data-git-pull
(将git-pull作为www-data进行),我的网络管理员说,你不能将sudo命令放在sudoers文件中,我要说的是,它缺少了很多sudo可以做的功能(这不仅仅是为了让用户成为.system上成熟的根用户,而是为了让他们在不授予任何其他权利的情况下运行所需的特定内容)此外,我不会让用户全权在任何地方运行git。我会通过创建一个简单的脚本来缩小它的范围,该脚本将转到所需的位置并运行
git whatever
,其他什么都不运行。没有参数读取,没有任何内容。这样脚本将被绑定。这就是我将在sudoers上设置的脚本。所以我一直没有这样做试图使用sudoers文件,但我认为需要启用的是行
sudo-u www-data-git-pull
(将git-pull作为www-data进行),我的网络管理员说,你没有将sudo命令放在sudoers文件中,我想说,这缺少了很多sudo可以做的功能(这不仅仅是为了让用户成为.system上成熟的根用户,而是为了让他们在不授予任何其他权利的情况下运行所需的特定内容)此外,我不会让用户全权在任何地方运行git。我会通过创建一个简单的脚本来缩小它的范围,该脚本将转到所需的位置并运行
git whatever
,其他什么都不运行。不读取参数,什么都不做。这样脚本将被绑定。这就是我在sudoers上设置的脚本。