【发布时间】:2022-08-03 22:07:17
【问题描述】:
对于移动备份解决方案 (rpi),我需要安装由 web 界面 (apache/php7.4) 控制的设备。我知道,有风险,但我在 sodoers 中添加了 www-data。
我的问题是,安装似乎工作,来自网络界面的场景,从命令行,设备似乎没有被安装。而且我的备份脚本无法访问这些设备。
为了重现我有一个测试脚本 lsblk.php:
<?php
echo (shell_exec(\"whoami\"));
echo (shell_exec(\"sudo whoami\"));
echo (\"\\n\\numount\\n\");
echo (shell_exec(\"sudo umount /media/storage\"));
echo (shell_exec(\"sudo lsblk\"));
echo (\"\\n\\nmount\\n\");
echo (shell_exec(\"sudo mount /dev/sda1 /media/storage\"));
echo (shell_exec(\"sudo lsblk\"));
?>
由 webinterface 调用,我将其返回给浏览器:
www-data
root
umount
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
`-sda1 8:1 0 931.5G 0 part
mmcblk0 179:0 0 29.7G 0 disk
|-mmcblk0p1 179:1 0 256M 0 part /boot
`-mmcblk0p2 179:2 0 29.5G 0 part /
mount
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
`-sda1 8:1 0 931.5G 0 part /media/storage
mmcblk0 179:0 0 29.7G 0 disk
|-mmcblk0p1 179:1 0 256M 0 part /boot
`-mmcblk0p2 179:2 0 29.5G 0 part /
/media/storage seems to be mounted. But lsblk (as pi, root or www-data) always gives back:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
└─sda1 8:1 0 931.5G 0 part
mmcblk0 179:0 0 29.7G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 29.5G 0 part /
所以它没有安装?
sudo -u www-data php ./lsblk.php 显示与 web 界面相同:
www-data
root
umount
umount: /media/storage: not mounted.
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
└─sda1 8:1 0 931.5G 0 part
mmcblk0 179:0 0 29.7G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 29.5G 0 part /
mount
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
└─sda1 8:1 0 931.5G 0 part /media/storage
mmcblk0 179:0 0 29.7G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 29.5G 0 part /
但是命令行中的 lsblk 现在显示已安装的设备:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
└─sda1 8:1 0 931.5G 0 part /media/storage
mmcblk0 179:0 0 29.7G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 29.5G 0 part /
现在我可以访问存储: ls /媒体/存储/
test.txt
在基于 Web 界面的安装之后,这是不可能的。
我没有想法,有什么帮助吗?谢谢!
-
疯狂,apache-web-applications 可以访问已安装的存储,而其他进程不能。我使用文件浏览器 (github.com/filebrowser/filebrowser)(以 root 身份运行)并且当 mejiro (github.com/dmpop/mejiro) 读取时它看不到任何文件/写权限!
-
作为 www-data 运行文件浏览器没有任何改变。如果我通过命令行安装,它可以工作,如果我通过 apache/php 安装,它就像没有为非 apache 安装......
-
这不应该在Super User 上?