우리는 FreeBSD 10.3 호스팅 서버를 사용하고 있으며 슈퍼유저 권한이 없습니다. 우리 회사의 웹 페이지는 apache2를 실행하는 서버를 사용합니다. 우리 페이지의 이전 관리자가 해당 디렉터리에 ACL 권한을 설정한 것 같은데 우리는 이를 제거하고 싶습니다. 디렉토리 이름이 이라고 가정합니다 foobar
.
이제 결과 ls -al foobar
는 다음과 같습니다.
drwxrwxr-x+ 2 myuser another_user 512 Nov 20 2013 foobar
그리고 권한은 다음과 같습니다.
[myuser@hosting_server]$ getfacl foobar
# file: foobar/
# owner: myuser
# group: another_user
user::rwx
group::rwx
mask::rwx
other::r-x
여기서는 ACL 권한과 권한 목록 끝에 있는 더하기 기호를 제거하려고 합니다. 그래서 우리는 그랬어요
setfacl -b foobar
ACL에 의해 관리되는 특수 권한은 제거되지만 더하기 기호는 제거되지 않습니다 +
.
+
우리의 질문은 "ls -al foobar"에 표시된 것처럼 권한 목록에서 더하기 기호를 제거하는 방법입니다 .
답변1
우리의 문제는 다음을 사용하여 해결되었습니다.
setfacl -bn foobar
핵심은 -n 옵션을 사용하여 디렉토리에서 디렉토리도 제거해야 한다는 것입니다... aclMask의 매뉴얼 페이지는 setfacl
다음과 같습니다.
-n Do not recalculate the permissions associated with the ACL mask
entry. This option is not applicable to NFSv4 ACLs.
이 옵션이 왜 작동하는지 잘 모르겠지만 작동합니다...
d?????????
위의 해결 방법을 수행한 후 권한을 얻으면 아래 두 가지 설명을 시도해 보세요 chmod -R a+rX
.
답변2
재귀 옵션을 사용해 보세요.
setfacl -R -b foobar
-n 옵션이 필요하지 않습니다