Wie kann Apache in Debian auf die Ressource im VFAT-Dateisystem von Windows zugreifen?

Wie kann Apache in Debian auf die Ressource im VFAT-Dateisystem von Windows zugreifen?

In der PostZugriff auf Ressourcen im Windows NTFS, wir haben das Problem gelöst, es ist uns gelungen, Apache in Debian dazu zu bringen, auf die Ressource im NTFS-Dateisystem von Windows zuzugreifen, jetzt möchte ich Apache in Debian dazu bringen, auf die Ressource im VFAT-Dateisystem von Windows zuzugreifen.

Die Festplattenpartition sda2wird vfatformatiert.

sudo blkid |grep 995A
/dev/sdb2: LABEL="SHARED" UUID="5E9C-995A" TYPE="vfat" PARTLABEL="Basic data partition" PARTUUID="efdeb9ab-e920-40e6-9d24-df672b8806e9"

Ich schreibe eine Konfiguration, /etc/fstab um es automatisch zu mounten.

UUID=5E9C-995A  /media/debian/SHARED vfat auto ,sync,umask=000 ,rw 0  0

Jetzt /dev/sda2kann es automatisch gemountet werden. Meine Apache-Einstellungen sind debian:

cat /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
 ServerName localhost
 DocumentRoot  /media/debian/SHARED/project 
 Alias  /project  "/media/debian/SHARED/project/build/html"
 <Directory /media/debian/SHARED/project>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
 </Directory>
</VirtualHost>

Berechtigung festlegen für /media/debian/SHARED/project.

sudo chmod -R 644 /media/debian/SHARED/project

Starten Sie meinen Apache neu:

sudo systemctl restart apache2

Zur Eingabe 127.0.0.und 127.0.0.1/projectin Firefox.

Forbidden    
You don't have permission to access this resource.
Apache/2.4.25 (Debian) Server at 127.0.0.1 Port 80

So überprüfen Sie das Protokoll:

sudo cat /var/log/apache2/error.log

[Wed Aug 12 17:11:58.727479 2020] [core:error] [pid 3149] (13)Permission denied: [client 127.0.0.1:56434] AH00035: access to / denied (filesystem path '/media/debian/SHARED') >because search permissions are missing on a component of the path     
[Wed Aug 12 16:53:37.958950 2020] [core:error] [pid 3061] (13)Permission denied: [client 127.0.0.1:56158] AH00035: access to /project/ denied (filesystem path '/media/debian/SHARED') because search permissions are missing on a component of the path

Zeigen Sie den Besitz an/media/debian/SHARED/project

ls -al  /media/debian/SHARED/project
total 304
drwxr-xr-x 14 root root 16384 Aug 12 14:19 .
drwxr-xr-x  4 root root 16384 Jan  1  1970 ..
drwxr-xr-x  4 root root 16384 Aug 12 14:18 build

/media/debian/SHAREDbefindet sich auf vfateiner Festplattenpartition, der Besitzer kann nicht geändert werden chown.

sudo chown -R www-data.www-data /media/debian/SHARED/project
chown: changing ownership of '/media/debian/SHARED/project': Operation not permitted

Wie man Apache dazu bringt, auf die Ressource in der VFAT-Partition zuzugreifen, eine Schritt-für-Schritt-Lösung ist willkommen.

Antwort1

Hier ist eine Antwort auf dietatsächlichProblem, das Sie bereits in Ihrer vorherigen Frage hatten und das angesprochen und erklärt wurde. Sie werden fälschlicherweise zu der Annahme verleitet, das Problem liege ein oder zwei Verzeichnisse hinter dem Verzeichnis, das den Fehler verursacht. Das Problem liegt genau bei /media/debian/.

Vermeiden Sie /media/someuserVerzeichnisse wie /media/debian. Sie werden vom System besonders behandelt, indem Verzeichnisse bei Bedarf dynamisch für jeden Benutzer erstellt werden. Diese Verzeichnisse sind für den Benutzer privat, der „den Sitz innehat“, und der Apache-Prozess kann standardmäßig nicht darauf zugreifen. Es ist sogar möglich, dass ein Neustart oder ein einfaches Abmelden/Anmelden ihre Zugriffsrechte zurücksetzt und Apache httpd nicht mehr darauf zugreifen kann, selbst wenn dies vorher möglich war.

Erstellen Sie das Mountpoint-Verzeichnis einfach woanders. Es könnte sich in einem neuen Verzeichnis namens /srv/oder befinden /data/(oder vielleicht sogar in, /var/www/aber davon würde ich abraten).

Also zum Beispiel als Root:

mkdir -p /srv/media/SHARED

Ändern Sie dann alle Ihre Apache-Einstellungen, sodass auf statt auf /etc/fstabverweist ./srv/media/SHARED/media/debian/SHARED

Da es keine Konflikte mit den Tools gibt, die die Benutzerrechte dynamisch handhaben, wie es in der Fall ist /media/debian, gibt es für den Apache-HTTPD-Benutzer www-data keine Berechtigungsprobleme beim Zugriff auf /srv/media/SHARED.

Wenn dies das zuvor beabsichtigte Ziel war, wird dieses Verzeichnis möglicherweise nicht direkt in der GUI des Benutzers angezeigt, da es sich nicht im für diesen Benutzer reservierten Verzeichnis befindet. Fügen Sie einfach einen symbolischen Link oder eine andere Desktop-Methode hinzu, die auf oder debianverweist ./srv/media/srv/media/SHARED


Es kann immer noch Probleme geben, da VFAT ein sehr eingeschränktes Dateisystem ist: Dies Operation not permittedist ein normaler und erwarteter Fehler bei VFAT fürchownUndchmodund kann nicht anders behoben werden, als indem man VFAT nicht verwendet. httpd (vielleicht abhängig von einigen Optionen) könnte eine spezielle Interpretation für Dateien mit Ausführungsrechten haben. Wenn ein solcher Fall auftritt, wäre dies ein separates Problem, das einfach gelöst werden könnte, indem man bei POSIX-Dateisystemen bleibt oder zumindest bei NTFS, das mit verwendet wirdntfs-3gmit Optimierungen (.NTFS-3G/UserMapping), um Zugriffsrechte zu verwalten. Vermeiden Sie VFAT oder ExFAT.

verwandte Informationen