如何让用户无需密码即可使用 sudo?

如何让用户无需密码即可使用 sudo?

我有一个这样的 php 脚本:

<?php
#echo exec('whoami');

$output = shell_exec('bash /usr/local/svn/bash_repo/make-live');
echo "$output";
?>

make-live 脚本包含以下内容:

#!/bin/bash

cd /var/www-cake

sudo svn checkout file:///usr/local/svn/bash_repo/repo/

echo "Head revision has been pushed to live server"

因此,该脚本的 PHP 用户www-data需要 nopasswd。我被告知需要添加:

www-数据 ALL=NOPASSWD: /usr/local/svn/bash_repo/make-live

允许 sudoers 这样做。首先我运行sudo visudo,但我没有使用 vi 的经验,所以我尝试在 gedit 中打开它,export EDITOR=gedit && sudo -E visudo然后只打开一个空的 sudoers.tmp 文件。我添加了该行并保存了它。但它没有保存。

所以我尝试sudo visudo在这个部分下方添加一行:

# User privilege specification
root    ALL=(ALL) ALL
www-data ALL=NOPASSWD: /usr/local/svn/bash_repo/make-live

我关闭了 sudoers 并重新打开以验证它是否已保存。我甚至重新启动了 apache。

我运行了 php 文件但它仍然不起作用。

我错过了什么?

答案1

将您的 apache 用户添加www-data到 sudoers,然后更糟糕的是添加无密码选项是一个非常糟糕的想法。让 apache 用户能够以 root 身份执行任何操作是一个安全问题,您应该避免这样做。

您需要做的是更改 /var/www-cake 的权限,以便 www-data 可以在svn checkout没有 sudo 的情况下运行时对其进行写入。

尝试这个:sudo chown www-data:www-data /var/www-cake

删除 sudo 并重试。

相关内容