데비안의 아파치가 창의 ntfs 파일 시스템에 있는 리소스에 액세스하도록 하는 방법은 무엇입니까?

데비안의 아파치가 창의 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이제 에서 웹 프로젝트를 만들고 /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>

아파치 서비스를 다시 시작합니다:

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

아파치가 마운트된 다른 디스크의 리소스에 액세스하도록 하는 방법은 무엇입니까? 추가 정보:

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에서 사용할 수 있는 특정 디스크 파티션에 웹 응용 프로그램을 구축하고 싶다는 것입니다.
웹 애플리케이션을 ntfs로 설정하면 apache가 win10에서 작동합니다. 재부팅하고 debian으로 전환하면 debian의 apache가 읽거나 쓸 수 없습니다.
ext2/ext3/ext4 중 하나에 웹 애플리케이션을 설정하면 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, 특히 데비안에서는 이름으로 찾을 수 있습니다 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 데스크탑 도구가 루트 권한 없이 해당 특정 디렉토리 트리에 이동식 미디어를 마운트할 수 있도록 데몬이 사용하기 때문일 수 있습니다.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마운트 옵션의 의미는 참고자료를 참조하세요. user,exec,umask=000UserMapping 파일을 사용할 때는 더 이상 이 옵션이 필요하지 않습니다. 실제로는 chmod파일 시스템에서 이 옵션을 사용하는 것을 방해합니다.)

...그런 다음 AliasApache 구성의 줄을 다음과 같이 변경합니다.

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

답변2

Linux가 아닌 파일 시스템

chown, 등 chmodsetfaclLinux 파일 시스템에만 적용됩니다. 근본적인 이유는 해당 파일 시스템에 해당 정보를 저장할 수 있어야 한다는 것입니다. 종종 이것은 불가능하거나 적어도 가능하지 않습니다.

따라서 이러한 파일 시스템의 경우 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웹 애플리케이션을 읽으세요.

sudo systemctl restart apache2

관련 정보