%EB%8A%94%20%EC%97%AC%EC%A0%84%ED%9E%88%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%9D%BD%EC%9D%84%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
내 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