r--로 설정된 www-data 사용자에 대한 ACL, Apache(PHP)는 여전히 파일을 읽을 수 없습니다.

r--로 설정된 www-data 사용자에 대한 ACL, Apache(PHP)는 여전히 파일을 읽을 수 없습니다.

내 PHP 스크립트는 완전히 다른 디렉토리에 있는 일부 파일에 액세스해야 합니다.

www-data 사용자에게 읽기 권한을 부여하기 위한 ACL을 설정했지만 PHP file_get_contets() 함수가 "권한이 거부되었습니다"라는 오류를 반환합니다.

ACL이 설정된 사용자 하에서 실행되는 프로그램에 영향을 주지 않고 소유권을 설정하는 것이 유일한 방법이 아닌 한, 해당 디렉토리에 대해 www-data 사용자 또는 그룹을 설정한 경우에만 작동합니다.

ACL 목록:

# owner: user1
# group: group1
# flags: -s-
user::rwx
group::rwx
other::---
default:user::rwx
default:user:www-data:rwx
default:user:user1:rwx
default:user:user2:rwx
default:group::rwx
default:mask::rwx
default:other::---

미리 감사드립니다

답변1

출력에는 디렉터리에 대해 "기본"(상속 가능) ACL을 설정했지만 "일반"(유효) ACL은 설정하지 않은 것으로 표시됩니다. 즉, 접두사가 붙은 항목은 default:새로 생성된 파일에 복사할 목적으로만 존재하지만하지 마라이 디렉토리 자체에 즉시 적용됩니다.

따라서 유일한 유효 권한은 다음과 같습니다. 사용자 "www-data" 및 "user2"와 일치하는 유일한 ACE는 other::---권한을 전혀 부여하지 않는 일반 항목입니다.

# 소유자: user1
# 그룹: 그룹1
# 플래그: -s-
사용자::rwx
그룹::rwx
다른::---

"www-data"는 디렉터리에 +x(트래버스) 권한을 부여하는 ACE와 일치하지 않기 때문에 자체 권한에 관계없이 내부 파일에 액세스할 수 없습니다.

이 문제를 해결하려면 이번에는 'default' 플래그를 추가하지 않고 ACL을 다시 설정하세요.

setfacl -m "u:www-data:rwx" the_directory

관련 정보