내 사용자가 소유한 디렉토리가 있습니다 vagrant
. 웹 서버(및 웹 애플리케이션)는 www-data
.
누가 생성했는지에 관계없이 두 사용자 모두 이 디렉터리에서 디렉터리와 파일을 만들고 수정해야 합니다. vagrant
에서 만든 파일을 수정할 수는 있지만 www-data
에서 만든 디렉터리에 새 파일을 만들 수는 없기 때문 입니다 www-data
.
생성된 디렉토리에 적용된 마스크를 변경할 수 없기 때문에 문제가 발생했다고 생각합니다 www-data
.
vagrant@iadev:/var/www/web$ sudo rm -r core/cache
vagrant@iadev:/var/www/web$ mkdir core/cache
vagrant@iadev:/var/www/web$ sudo setfacl -R -m u:www-data:rwX,u:vagrant:rwX core/cache
vagrant@iadev:/var/www/web$ sudo setfacl -dR -m u:www-data:rwX,u:vagrant:rwX core/cache
vagrant@iadev:/var/www/web$ getfacl core/cache
# file: core/cache
# owner: vagrant
# group: vagrant
user::rwx
user:www-data:rwx
user:vagrant:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:www-data:rwx
default:user:vagrant:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
웹 앱을 탐색하고 캐시를 채웁니다.
vagrant@iadev:/var/www/web$ getfacl core/cache/locks/
# file: core/cache/locks/
# owner: www-data
# group: www-data
user::rwx
user:www-data:rwx #effective:r-x
user:vagrant:rwx #effective:r-x
group::rwx #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:user:www-data:rwx
default:user:vagrant:rwx
default:group::rwx
default:mask::rwx
default:other::r-x
vagrant@iadev:/var/www/web$ vi core/cache/locks/test.txt
사용자가 vagrant
파일을 저장하려고 하면 실패합니다 core/cache/locks
. 이것이 문제라는 것을 이해 #effective:r-x
하지만 어떻게 바꾸는지 모르겠습니다.
setfacl
나는 ~30가지 명령 변형을 시도했습니다 ( -n
및 포함 m:rwX
). 이해가 안 되는 부분이 무엇입니까?
답변1
나는 같은 문제를 가지고있다. core/cache/locks/test.txt
ACL의 내용을 확인하려면 다음을 수행하세요.
getfacl core/cache/locks/test.txt
디렉터리 기본 ACL이 방금 생성된 파일에 적용되지 않았을 수 있습니다(출력은 다음과 유사할 수 있음).
# file: test.txt
# owner: www-data
# group: www-data
user::rw-
group::r--
other::r--
Apache를 다시 시작하면 도움이 되었습니다. 새로고침은 되지 않습니다.
반면에 다시 시작할 필요가 없는 또 다른 Apache 인스턴스가 있습니다. 가서 알아보세요.