通过PHP运行需要root访问权限的程序

通过PHP运行需要root访问权限的程序,php,exec,Php,Exec,我正在搜索通过PHP执行一个程序,但它需要根访问,因为它正在访问硬件 是否允许www-data用户执行某些程序并访问某些设备 在sudo group中添加www-data真的不安全吗?我认为将脚本所有者更改为www-data将使脚本可执行 在Linux中,使用chown更改脚本所有者 chown www-data file.txt 这将把file.txt所有者更改为www数据 chown -R www-data /files/work 递归地将目录/files/work以及所有文件和子目录的

我正在搜索通过PHP执行一个程序,但它需要根访问,因为它正在访问硬件

是否允许
www-data
用户执行某些程序并访问某些设备


在sudo group中添加
www-data
真的不安全吗?

我认为将脚本所有者更改为www-data将使脚本可执行

在Linux中,使用chown更改脚本所有者

chown www-data file.txt
这将把file.txt所有者更改为www数据

chown -R www-data /files/work
递归地将目录/files/work以及所有文件和子目录的所有权授予用户www数据

在PHP中,可以使用chown函数更改所有权

<?php

// File name and username to use
$file_name= "foo.php";
$path = "/home/sites/php.net/public_html/sandbox/" . $file_name ;
$user_name = "root";

// Set the user
chown($path, $user_name);

// Check the result
$stat = stat($path);
print_r(posix_getpwuid($stat['uid']));

?>


我认为将脚本所有者更改为www数据将使脚本可执行

在Linux中,使用chown更改脚本所有者

chown www-data file.txt
这将把file.txt所有者更改为www数据

chown -R www-data /files/work
递归地将目录/files/work以及所有文件和子目录的所有权授予用户www数据

在PHP中,可以使用chown函数更改所有权

<?php

// File name and username to use
$file_name= "foo.php";
$path = "/home/sites/php.net/public_html/sandbox/" . $file_name ;
$user_name = "root";

// Set the user
chown($path, $user_name);

// Check the result
$stat = stat($path);
print_r(posix_getpwuid($stat['uid']));

?>


不能使用SUID位吗?@Blaatpraat SUID位来自可执行文件,而不是设备文件,是吗?确实如此。这就是为什么我问,而不是直接输入一个解决方案。我不是那种会说你给用户(www数据)更多权利的人,但这会立即解决问题(就像你的帖子已经说过的那样)。我能想到的是,您创建了另一个脚本(即使在PHP中也是可能的),在该脚本上放置SUID位,并在网页的PHP脚本上使用exec。难道不能使用SUID位吗?@Blaatpraat SUID位来自可执行文件,而不是设备文件,是吗?确实如此。这就是为什么我问,而不是直接输入一个解决方案。我不是那种会说你给用户(www数据)更多权利的人,但这会立即解决问题(就像你的帖子已经说过的那样)。我能想到的是,您创建了另一个脚本(即使在PHP中也是可能的),在该脚本上添加SUID位,并在网页的PHP脚本上使用exec。这是答案的一部分。真正的答案应该像
chmod g+rw设备文件
chown root:www-data设备文件
。然后,确实是chown可执行文件或将组设置为www数据,与设备文件相同。这是答案的一部分。真正的答案应该像
chmod g+rw设备文件
chown root:www-data设备文件
。然后,确实chown可执行文件或将组设置为www数据,与设备文件相同。