簡體   English   中英

通過 php-script/apache 掛載

[英]mount by php-script/apache

對於移動備份解決方案 (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 似乎已安裝。 但是 lsblk(作為 pi、root 或 www-data)總是回饋:

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 /media/storage/

test.txt

在基於 Web 界面的安裝之后,這是不可能的。

我沒有想法,有什么幫助嗎? 謝謝!

這里的主要問題可能是服務設置中的 systemd 選項。 apache2 示例: /lib/systemd/system/apache2.servicePrivateTmp=true導致此行為,請參閱此處的詳細信息。

簡而言之:如果在服務的 systemd 設置中啟用 PrivateTmp,則正在為服務設置文件系統命名空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM