답변:
때 폴더에있는 것을 참고 수행 a
이동 b
하는 c
의 폴더 권한이 a
결정 당신이 할 수있는 일을.
이 경우 사용 권한 .
이 가장 중요합니다.
권한이 단순히보다 복잡하다는 것을 관찰하십시오 rwx
. 귀하의 music
폴더는이가 @
마지막에 .
폴더가있다 +
끝.
xattr -h
@ 기호에 대한 복잡한 권한을 결정하는 데 사용 합니다.getfacl
+ 기호의 ACL을 결정하는 데 사용 합니다.ls -la@e
. 대부분의 경우 deny delete
이름 바꾸기를 막는 ACL 이있었습니다 .
해당 디렉토리의 어딘가에 올바른 권한이없는 파일이 하나 이상있는 것처럼 보입니다.
그래서 내가 한 일은 :
sudo chown -R valmar ./Music
sudo chmod -R 755 ./Music
이제 작동합니다.
chmod 755
음악 폴더에서 특별한 '@'권한 을 제거 했을 수 있습니까?
chmod -a 'everyone deny delete' Music
로 할 것 입니다. 엘 캐피 탄에서는 다를 수 있습니다.
여기서 문제는 음악 폴더의 ACL (액세스 제어 목록)과 관련이있을 수 있습니다. ACL은 일반적으로로 나열되는 일반 POSIX에 대한 별도의 권한 시스템 ls -l
입니다. 홈 폴더 및 다른 곳의 일부 다른 디렉토리에도 ACL이 있습니다.
홈 디렉토리 내에서 ACL을 보려면 다음을 사용하십시오.
/bin/ls -le ~
0: group:everyone deny delete
음악 디렉토리 와 같은 규칙이 표시 될 수 있습니다. 언급했듯이로 문제를 무시할 수 있습니다 sudo
. 그렇게하지 않으려면 (또는 할 수없는 경우) 파일의 소유자라는 다른 옵션이 있습니다. 색인 (위의 예에서 0)에 따라 Music 디렉토리의 ACL에서 문제가되는 항목을 제거 할 수 있습니다.
/bin/chmod -a# 0 Music
또는 ACL의 모든 항목을 제거 할 수 있습니다.
/bin/chmod -N Music
이제 일반 POSIX 권한에 따라 디렉토리를 이동할 수 있습니다. 이동 후 ACL을 다시 넣으려면 다음을 사용할 수 있습니다.
/bin/chmod +a "group:everyone deny delete" Music_tmp
그리고 /bin/ls -le
다시 사용 하여 원하는 ACL을 확인하십시오. man chmod
자세한 정보 는 ACL 예제를 확인하십시오 . 특히이 소개는 도움이됩니다.
각 파일에는 정렬 된 항목 목록이 포함 된 하나의 ACL이 있습니다. 각 항목은 사용자 또는 그룹을 나타내며 일련의 권한을 부여하거나 거부합니다. 사용자와 그룹이 동일한 이름으로 존재하는 경우 이름 유형을 지정하기 위해 사용자 / 그룹 이름 앞에 "user :"또는 "group :"을 붙일 수 있습니다.
매뉴얼 페이지 가 주문에 관한 규칙을 설명 하지는 않지만 이 페이지 는 ACL의 주문 규칙을 명확하게 설명합니다. 특히 명시 적 deny
규칙이 명시 적 규칙보다 먼저 적용됩니다 allow
. 따라서 group:everyone deny delete
항목이 제자리에 있으면 allow
규칙 으로 삭제할 수있는 권한을 사용자에게 부여 할 수 없습니다 . everyone
사용자를 포함 하는 그룹 에 대한 권한이 거부되었으므로 해당 규칙이 먼저 적용됩니다.
everyone deny delete
macOS의 기본 홈 디렉토리에 있는 ACL 항목 은 디렉토리를 이동하거나 삭제할 수없는 실제 이유입니다. (또한 OS는 언제라도 다시 만들 수 있음에 유의하십시오.)
제거하려는 디렉토리에서 일련의 프로그램이 실행 중일 때이 문제가 발생했습니다. 디렉토리를 이동하려면 먼저 해당 디렉토리에서 실행중인 모든 프로그램을 종료해야했습니다.
다음 명령에서 프로그램 이름을 선택하는 방법에 매우주의 하십시오. 참조를 위해 다음 명령을 사용했습니다.
ps aux | grep -i [NAME_OF_ANNOYING_PROGRAM] | grep -v grep
# make sure that you are only about to kill the programs you want to kill
ps aux | grep -i [NAME_OF_ANNOYING_PROGRAM] | grep -v grep | awk '{print $2}' | sudo xargs kill -9
sudo mv /usr/local/[DIR_FOR_ANNOYING_PROGRAM] /usr/local/[DIR_FOR_ANNOYING_PROGRAM]2
일반적인 절차는 다음과 같습니다.
kill -9
가 많은 주의 ) 디렉토리에서 모든 프로그램을grep
하고 확인하는 것에 대한 경고를 제공하지 않는 것입니다. 당신이 그에게로 옮기고 무엇이든 먼저 grep
실행중인 모든 프로그램의 풀에서 선택할 것이다 kill
... 루트 권한을