Mac OS X에서 ACL을 어떻게 복사합니까?


13

대부분의 유닉스 파생자는 다음을 사용하여 한 파일에서 다른 파일로 ACL을 복사 할 수 있습니다.

getfacl filename1 | setfacl -f - filename2

불행히도 Mac OS X에는 ACL 처리를 chmod로 롤백 했으므로 getfacl 및 setfacl 명령이 없습니다. chmod -E는 stdin에서 ACL 목록을 허용하지만 stdout에서 ACL을 적절한 형식으로 뱉어내는 명령을 찾지 못했습니다. 내가 생각해 낸 최선은 다음과 같습니다.

ls -led filename1 | tail +2 | sed 's/^ *[0-9][0-9]*: *//' | chmod -E filename2

더 강력한 솔루션이 있습니까?

보너스 질문 : 10.6과 함께 제공되지 않는 모듈을 사용하지 않고 파이썬에서 좋은 방법이 있습니까?


따라서 현재 2020 년이며 macOS에는 여전히 getfacl/ 가 없습니다 setfacl. 상당히 놀랍습니다. github.com/jvscode/getfacl 은 10 살입니다. 작동시키지 못했습니다. serverfault.com/a/303752/104173 은 복잡해 보이며 get/setfacl기능 을 교체하려고하는지 확실하지 않습니다 . macOS는 서버 플랫폼이 아니지만 보안 침해가 발생할 수 있습니다. apple.stackexchange.com 에서이 대화를 다시 시작할 가치가 있습니까?
Johnny Utahh

답변:


8

ls -e 존재하는 경우 파일과 연관된 ACL (Access Control List)을 긴 (-l) 출력으로 인쇄하십시오.

이것은 다음과 같은 결과를 제공합니다 ...

drwxr-xr-x@ 19 localadmin   646B Aug  4 00:21  APPBUNDLE
0: user:localadmin allow add_file,add_subdirectory,writeattr,writeextattr,writesecurity
                   ⬆    ⇧                      ⇶                                     ⬆

개인적으로, 나는 "수출"을 가지고 있습니다 ~/.bash_profile

export FILE_ALL="read,write,append,execute,delete,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown"
export DIR_ALL="list,search,add_file,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown"

그런 chmod가능하게 ...

sudo chmod + a "localadmin $ DIR_ALL 허용"/ APPBUNDLE

로부터 chmodman 페이지, 힌트는 실제로 당신이 설명처럼 뭔가를 할 수있을 수 있다는 것을 ... 정보의이 비트가 ..

"ACL은 기호 모드 문법의 확장을 사용하여 조작됩니다. 각 파일에는 순서가 지정된 항목 목록이 포함 된 하나의 ACL이 있습니다. 각 항목은 사용자 또는 그룹을 참조하고 권한 세트를 부여하거나 거부합니다. 그룹이 동일한 이름으로 존재하는 경우 이름 유형을 지정하기 위해 사용자 / 그룹 이름 앞에 "user :"또는 "group :"을 붙일 수 있습니다. "

chmod -E stdin에서 ACL 정보를 개행으로 구분 된 순차적 ACE 목록으로 읽습니다. 정보가 올바르게 구문 분석되면 기존 정보가 교체됩니다.

또한 TinkerToolSystem 뿐만 아니라 ACL의 장점BatchMod에 대해 소리 질러 보겠습니다 .


이것은 나를 위해 일했지만 chmod 명령을 다음 sudo chmod +a "localadmin allow $DIR_ALL" /APPBUNDLE과 같이 변경해야했습니다 : (사용자 이름 allow
E. Moffat


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.