例子

例子

我想允许我的 PHP 脚本(由 apache2 托管)使用另一个用户帐户执行命令。

我不希望服务器上托管的另一个网站能够连接到另一个用户帐户。

如果我在 /etc/sudoers 中添加一条规则,那么它将允许网站上的任何人使用该用户。

我想到的解决方案是使用 ssh,使用私钥和公钥。PHP 脚本在所需的用户帐户上启动与托管它的服务器的 ssh 连接。

除了我使用 ssh 的解决方案之外,还有其他方法吗?

此致

答案1

我的直觉告诉我,你正在做的事情是个糟糕的想法。但实际上,你并没有给出足够的背景信息来说明你想要这样做的原因以及实际的用例是什么。

但是你关于sudo这是否是个好主意的想法是错误的。

sudoers 条目定义如下:

  USER HOST = [(RUNAS)] [NOPASSWD:] [!] CMD[,...]

这意味着允许用户以用户身份USER运行(如果指定)。因此,您可以像这样构造您的条目:CMDRUNASsudoers

  www-data YOUR-HOSTNAME = (YOUR-USER) NOPASSWD: /path/to/command

www-data这将允许指定主机上的用户(或者ALL如果您将其指定为)以无需密码的用户身份YOUR-HOSTNAME执行该程序。/path/to/commandYOUR-USER

您还可以提供ALL命令,允许每个命令都YOUR-USER有权访问。

例子

使用您给出的示例值,sudoers 行将由以下内容组成(假设mydeployer为主机名和thedeployer用户名):

  www-data mydeployer = (thedeployer) NOPASSWD: ALL

答案2

您可以使用 sudo 和特定的 sudoers 配置来执行 dat:

从 PHP 执行命令如下

sudo -H -u user2 /your/command parameters

添加到 sudoers(sudo visudo命令)

www-data    ALL=(user2) NOPASSWD: /your/command

这允许 apache 以另一个用户身份运行特定命令

相关内容