ディスクパーティションはsda4
ntfsディスクです。
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の問題
chown
NTFS-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.exe
Windows コマンドプロンプトで実行すると、その 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権限なしで特定のディレクトリツリーにリムーバブルメディアをマウントできるようにデーモンが使用するためです。debian
www-data
/media/debian/
udisksd
debian
/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
システムでこのオプションを使用するのを妨げます。)
...その後、Alias
Apache設定の行を次のように変更します。
Alias /regular "/media/docdrive/mydoc/build/html"
答え2
Linux以外のファイルシステム
chown
、などchmod
はsetfacl
Linuxファイルシステムにのみ適用されます。根本的な理由は、そのファイルシステムにその情報を保存できることです。多くの場合、これは不可能または少なくとも可能ではありません。
したがって、これらのファイルシステムでは、Linuxに公開されるユーザー、グループ、および権限はインストール時に決定されます。構成できるように、umask
使用する/etc/fstab
ユーザーとグループも構成できます。
本当の問題
実際の問題は特権であり、/media/debian
NTFSマウントとは何の関係もありません。ディレクトリにアクセスできる唯一の人は、ユーザー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.1
Webアプリケーションを読みます。
sudo systemctl restart apache2