允许www-data使用另一个用户 – sudo或ssh

我想允许我的PHP脚本(托pipe与Apache2)执行与另一个用户帐户的命令。

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

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

我来的解决scheme是使用ssh,私钥和公钥。 PHP脚本通过所需的用户帐户与其托pipe的服务器build立ssh连接。

有没有比我的解决scheme与ssh的另一种方式?

最好的祝福

我的直觉告诉我,你在做什么是一个可怕的想法。 但是实际上,你还没有给出足够的背景知道你为什么要这么做,以及这个用例是怎么说的。

但是你对sudo的想法是错误的,这是不是一个好主意。

sudoers条目定义为:

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

这意味着用户USER被允许以用户RUNAS (如果给定)运行CMD 。 所以你可以像这样构build你的sudoers条目:

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

这将允许指定的主机上的用户www-data (或者,如果你把它作为YOUR-HOSTNAME )以没有密码的用户YOUR-USER执行程序/path/to/command

您也可以提供ALL作为命令,允许YOUR-USER可以访问的每个命令。

根据您的示例值,sudoers行将包含以下内容(假定mydeployer作为主机名, thedeployer作为用户名):

  www-data mydeployer = (thedeployer) NOPASSWD: ALL 

你可以使用sudo和特定的sudoersconfiguration来做dat:

从PHP执行命令

 sudo -H -u user2 /your/command parameters 

添加到sudoers( sudo visudo命令)

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

这允许apache作为另一个用户运行一个特定的命令