Debian の Apache がウィンドウの ntfs ファイルシステムのリソースにアクセスできるようにするには?

Debian の Apache がウィンドウの ntfs ファイルシステムのリソースにアクセスできるようにするには?

ディスクパーティションはsda4ntfsディスクです。

sudo blkid |grep sda4
/dev/sda4: UUID="0042E54842E54350" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="70f5093c-b320-4325-88bb-97748f522332"

起動すると自動的にインストールされます。

cat /etc/fstab
UUID=0042E54842E54350  /media/debian/0042E54842E54350      ntfs-3g   rw,user,exec,umask=000 0 0

mydocここでWebプロジェクトを作成し、所有/media/debian/0042E54842E54350権とファイルモードを設定します。

sudo chown -R www-data:www-data  /media/debian/0042E54842E54350/mydoc
sudo chmod  755 -R /media/debian/0042E54842E54350/mydoc

すべての設定を次のように作成します。

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

Apacheサービスを再起動します。

sudo systemctl restart apache2

ブラウザに入力してください127.0.0.1/regular

エラーメッセージが発生しました:

Forbidden
You don't have permission to access this resource.

Apache/2.4.25 (Debian) Server at 127.0.0.1 Port 80

ログを確認してください。

sudo cat /var/log/apache2/error.log
[Thu Aug 06 20:13:41.467015 2020] [core:error] [pid 4248] (13)Permission denied: [client 127.0.0.1:53024] AH00035: access to /favicon.ico denied (filesystem path '/media/debian/0042E54842E54350') because search permissions are missing on a component of the path, referer: http://127.0.0.1/regular/os

Apacheにマウントされた他のディスクのリソースにアクセスさせる方法は?追加情報:

sudo chown -R www-data:www-data  /media/debian/0042E54842E54350/mydoc

エラーメッセージはありません。

コメントと回答への回答

$ ls -ld /media{,/debian{,/0042E54842E54350{,/mydoc}}}
drwxr-xr-x  4 root root  4096 Feb  1  2020 /media
drwxr-x---+ 4 root root  4096 Aug  6 21:50 /media/debian
drwxrwxrwx  1 root root 16384 Aug  6 07:55 /media/debian/0042E54842E54350
drwxrwxrwx  1 root root  4096 Aug  6 06:53 /media/debian/0042E54842E54350/mydoc

なぜ所有者を変更できないのです/media/debian/0042E54842E54350/mydocか?

getfacl  -p "/media/debian"
# file: /media/debian
# owner: root
# group: root
user::rwx
user:debian:r-x
group::---
mask::r-x
other::---

本当の問題は、私のコンピュータにデュアルオペレーティングシステム(win10 + debian)があり、win10とdebianで利用可能な特定のディスクパーティションにWebアプリケーションを構築したいということです。
Webアプリケーションをntfsに設定すると、apacheはwin10で動作します。再起動してdebianに切り替えると、debianのapacheは読み書きできません。
ext2/ext3/ext4のいずれかにWebアプリケーションを設定すると、Apacheはdebianで動作します。再起動してwin10に切り替えると、win10のapacheは読み書きできません。
目標を達成する方法はありませんか?

答え1

chownの問題

chownNTFS-3Gドライバは、どのNTFSセキュリティID(単にSID)がLinux UID / GID番号に対応するのか、その逆の場合もまだわからないため、そうすることはできません。

NTFSファイルシステムのメタデータでは、ファイル所有者と他のユーザー/グループは長い文字列であるセキュリティIDで指定されています。 UnixスタイルUID / GID(Unixスタイルファイルシステム用のメタデータ)は単純な整数です。 NTFSメタデータのファイル所有者フィールドにUnixスタイルのUIDまたはGIDを書き込むことは、Windowsおよび正しい形式のNTFSメタデータを必要とする他のNTFSドライバによって「破損したメタデータ」と解釈されます。

UserMappingこの問題を解決するには、サポートされているLinux UID / GID番号と対応するNTFS SIDを定義するファイルを作成する必要があります。

NTFS-3Gドライバは、これらのファイルを生成するのに役立つツールを提供します。単にドライバの作成者が名前を付けたもので、usermap一部のディストリビューションでは他のツールと競合する可能性があります。ntfs-3g.usermap特にDebianでは名前で見つけることができますntfsusermap

また、使用することができますWindows版のユーザーマッピングツール: .ZIP パッケージで解凍してusermap.exeWindows コマンドプロンプトで実行すると、その Windows ユーザー/グループ名とともにドライブに使用されるすべての SID が一覧表示されます。その後、テキストエディタでファイルを開き、Windowsユーザー/グループ名を同じように扱いたいLinuxユーザー/グループ名に変更し、結果ファイルを次のように保存できます/media/debian/0042E54842E54350/.NTFS-3G/UserMapping(Linuxで見ることができます)。

Linuxバージョンのユーザーマップツールの場合、プロセスはほぼ同じですが、LinuxバージョンのツールにはWindowsユーザーデータベースへのアクセス権がないため、ファイル名に基づいてユーザーとグループSIDを直接識別する必要があります。 。代わりに、いくつかのサンプルファイルを表示し、ファイルが属するユーザーまたはグループの名前を識別するように要求します。これは時々退屈かもしれません。

ここでは、usermapツールの使用に関する詳細な手順を確認できます。TuxeraのウェブページからMac用のNTFS-3Gドライバの高度なバージョンを作成し、現在このドライバの管理者であるようです。オープンソースNTFS-3Gドライバ。これはあなたが得ることができる最も権威のあるソースです!

UserMapping正しい場所にファイルがある場合は、NTFSパーティションをアンマウントしてから再度マウントしてNTFSファイルシステムの操作をchown開始します。chgrpただし、Linux UID / GIDと対応するWindows SIDの間にマッピングが構成されているユーザー/グループにのみ適用されます。

別の問題

Hauke Lagingが述べたように、ディレクトリには/media/debian/Apacheユーザーを除いて他の人がそのディレクトリツリーのどのエントリにもアクセスできないようにするACLがあります。これは、ローカルにログオンしたユーザーのGUIデスクトップツールがroot権限なしで特定のディレクトリツリーにリムーバブルメディアをマウントできるようにデーモンが使用するためです。debianwww-data/media/debian/udisksddebian

/media/debianこのACLを回避するには、NTFSファイルシステムを以下の場所以外の場所にマウントすることをお勧めします。このACLは、ユーザーがログインしたときにすべてのディレクトリに適用できるため、ユーザーがログインしているかどうかに関係なく明確にアクセスできる必要があるため、このファイルシステムのカスタムマウントポイントを作成する必要がありますudisksd/media/<username>debian

たとえば、/media/docdriveディレクトリを作成したら、/etc/fstab行を次のように変更できます。

UUID=0042E54842E54350  /media/docdrive      ntfs-3g   rw,defaults,windows_names 0 0

man mount.ntfs-3gマウントオプションの意味については、参考資料を参照してください。UserMappinguser,exec,umask=000ファイルを使用するときは、このオプションは必要ありません。実際には、ファイルchmodシステムでこのオプションを使用するのを妨げます。)

...その後、AliasApache設定の行を次のように変更します。

Alias  /regular  "/media/docdrive/mydoc/build/html"

答え2

Linux以外のファイルシステム

chown、などchmodsetfaclLinuxファイルシステムにのみ適用されます。根本的な理由は、そのファイルシステムにその情報を保存できることです。多くの場合、これは不可能または少なくとも可能ではありません。

したがって、これらのファイルシステムでは、Linuxに公開されるユーザー、グループ、および権限はインストール時に決定されます。構成できるように、umask使用する/etc/fstabユーザーとグループも構成できます。

本当の問題

実際の問題は特権であり、/media/debianNTFSマウントとは何の関係もありません。ディレクトリにアクセスできる唯一の人は、ユーザーrootとグループのメンバーですdebian

答え3

設置準備:

sudo mkdir /mnt/winntfs
sudo mkdir /mnt/winntfs/.NTFS-3G

ユーザーマッピングの作成

sudo ntfsusermap  /dev/sda4

ユーザーの www-data と入力します。グループの www-data と入力します。

これで、次のような結果が得られます。

sudo cat  UserMapping
# Generated by ntfsusermap for Linux, v 1.2.0
:www-data:S-1-5-21-2378563617-2567501716-2196283026-513
www-data:www-data:S-1-5-21-2378563617-2567501716-2196283026-1001

コピーして使用してください:

sudo cp UserMapping  /mnt/winntfs/.NTFS-3G/UserMapping

所有権とファイルモードを設定します。

sudo chown -R www-data:www-data  /mnt/winntfs/mydoc
sudo chmod  755 -R /mnt/winntfs/mydoc

Debian で apache2 設定を設定します。

sudo vim  /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:80>
 ServerName localhost
 DocumentRoot  /mnt/winntfs/mydoc 
 Alias  /regular  "/mnt/winntfs/mydoc/build/html"
 <Directory /mnt/winntfs/mydoc>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
 </Directory>
</VirtualHost>

インストール用にfstabを設定します。

sudo vim /etc/fstab
UUID=0042E54842E54350  /mnt/      ntfs-3g   rw,defaults  0 0

再起動してEnterを押して127.0.0.1Webアプリケーションを読みます。

sudo systemctl restart apache2

関連情報