gpt4 book ai didi

c++ - 如何授予 www-data 用户访问权限以从 apache 运行使用/dev/ttyS1 的进程

转载 作者:太空宇宙 更新时间:2023-11-04 05:15:50 25 4
gpt4 key购买 nike

我有一个发送一些串行数据的程序,称为sendfile。我想使用 apache 从我的网站运行这个程序。

当我这样做时,我在/tmp/error-output.txt 中收到错误

/dev/ttyS1:权限被拒绝

因此,我认为网站用于执行程序的用户不属于 dialout 组。所以...我将 www-data 添加到 dialout 组,但我仍然遇到同样的问题。我错过了什么吗?

谢谢,

史蒂夫

/etc/passwd 的内容

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
proxy:x:13:13:proxy:/bin:/bin/sh
www-data:x:33:33:www-data:/var/www:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
list:x:38:38:Mailing List Manager:/var/list:/bin/sh
irc:x:39:39:ircd:/var/run/ircd:/bin/sh
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh
nobody:x:65534:65534:nobody:/nonexistent:/bin/sh
libuuid:x:100:101::/var/lib/libuuid:/bin/sh
messagebus:x:101:105::/var/run/dbus:/bin/false
ntp:x:102:106::/home/ntp:/bin/false
usbmux:x:103:46:usbmux daemon,,,:/home/usbmux:/bin/false
sshd:x:105:65534::/var/run/sshd:/usr/sbin/nologin
olimex:x:1001:1001:Olimex test User,,,:/home/olimex:/bin/bash
mysql:x:104:112:MySQL Server,,,:/nonexistent:/bin/false
ftp:x:106:113:ftp daemon,,,:/srv/ftp:/bin/false
Debian-exim:x:107:114::/var/spool/exim4:/bin/false

/etc/group 的内容

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:olimex,www-data
fax:x:21:
voice:x:22:
cdrom:x:24:
floppy:x:25:
tape:x:26:
sudo:x:27:olimex
audio:x:29:
dip:x:30:
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:
sasl:x:45:
plugdev:x:46:
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
libuuid:x:101:
crontab:x:102:
fuse:x:103:
netdev:x:104:
messagebus:x:105:
ntp:x:106:
ssh:x:108:
utempter:x:109:
i2c:x:110:
olimex:x:1001:
sambashare:x:107:
rdma:x:111:
mysql:x:112:
ftp:x:113:
Debian-exim:x:114:

我的 PHP 文件的部分内容

    <?php

$file = $_GET["file"];
$default_dir = $row["defaultdir"];
$path = $default_dir . $file;
$program_path = '/home/olimex/c/serial/src/sendfile';
$execution_path = $program_path . " " . $file;
echo "Program Path: " . $program_path . "<br>";
echo "Execution Path: " . $execution_path . "<br>";
echo "My file: " . $file . "<br>";
echo "Default Directory: " . $default_dir . "<br>";
echo "Full path: " . $path . "<br>";

$descriptorspec = array(
0 => array("pipe", "r"),
1 => array("pipe", "w"),
2 => array("file", "/tmp/error-output.txt", "a") );
flush();

$process = proc_open($execution_path, $descriptorspec, $pipes, $cwd);
echo "<pre>";
if (is_resource($process)) {
while ($s = fgets($pipes[1])) {
print $s;
flush();
}
}
echo "</pre>";
echo stream_get_contents($pipes[1]);
fclose($pipes[1]);


?>

ls -l 发送文件

-rwxr-xr-x 1 www-data www-data 35788 4 月 2 日 01:54 发送文件

最佳答案

将 sendfile 移至我的 webroot。

chown www-data:www-data 发送文件

chmod 4755 发送文件

现在似乎可以工作了。

谢谢,

史蒂夫

关于c++ - 如何授予 www-data 用户访问权限以从 apache 运行使用/dev/ttyS1 的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49662407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com