【问题标题】:How to give access to www-data user to run process that uses /dev/ttyS1 from apache如何授予 www-data 用户访问权限以运行使用来自 apache 的 /dev/ttyS1 的进程
【发布时间】:2018-04-05 00:32:11
【问题描述】:

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

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

/dev/ttyS1:权限被拒绝

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

谢谢,

史蒂夫

/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 Apr 2 01:54 发送文件

【问题讨论】:

    标签: c++ linux apache


    【解决方案1】:

    将 sendfile 移至我的 webroot。

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

    chmod 4755 发送文件

    现在似乎可以工作了。

    谢谢,

    史蒂夫

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      • 1970-01-01
      • 2014-12-09
      • 2018-03-25
      • 2012-05-15
      • 2012-01-19
      • 2019-01-22
      相关资源
      最近更新 更多