ACL이 있는 디렉터리에 대해 설명할 수 없는 mv 권한이 거부되었습니다.

ACL이 있는 디렉터리에 대해 설명할 수 없는 mv 권한이 거부되었습니다.

폴더 C 안에 폴더 A가 있습니다(모두 동일한 파일 시스템에 있음). A를 B에서 C로 전송하고 싶지만 권한 거부 오류가 발생합니다.

B 내에서 A를 mv할 수 있습니다(예: A의 이름 바꾸기).

이제 루트 사용자로 A를 C로 전송합니다(성공).

이제 C에서 A를 mv하거나 이름을 바꿀 수 있습니다.

└── [drwxrwx---]  C
    ├── [drwxrwx---]  B
    │   └── [drwxr-x---]  A

getfacl C
# file: C
# owner: root
# group: root
user::rwx
user:myuser:rwx
group::rwx
mask::rwx
other::---

getfacl B
# file: B
# owner: root
# group: root
user::rwx
user:myuser:rwx
group::rwx
mask::rwx
other::---

getfacl A
# file: A
# owner: otheruser
# group: othergroup
user::rwx
user:myuser        #effective:r-x
group::rwx         #effective:r-x
mask::r-x
other::---

mv A ..
mv: cannot move ‘A’ to ‘C’: Permission denied

디렉토리를 이동하려면 현재 상위 디렉토리와 대상 디렉토리에 대한 쓰기 권한만 필요하다는 것을 알고 있기 때문에 이것은 나에게 이해가 되지 않습니다. 두 디렉토리 모두에서 디렉토리 이름을 바꿀 수 있으므로 물론 한 디렉토리에서 다른 디렉토리로 이동할 수 있어야 합니다!

추가 참고 사항:

  1. 이 권한은 B와 C에 존재하고 rwx 권한을 갖는 사용자 항목(myuser)이라는 ACL을 통해 부여됩니다.
  2. 폴더는 Samba 공유에 포함되어 있지만 smb 서비스를 중지하더라도 여전히 동일한 문제가 있으므로 이것이 아무런 영향을 미치지 않을 것이라고 생각합니다.
  3. SELinux가 허용 모드에 있습니다.
  4. A라는 이름의 폴더가 C에 존재하지 않습니다.
  5. sudo chmod g+w A를 수행하면 A를 성공적으로 이동할 수 있습니다. 그런데 이동되는 폴더의 권한이 왜 중요한가요?
  6. 운영 체제는 CentOS 7이고 파일 시스템은 ext4입니다. 파일 시스템은 acl을 통한 명시적 마운트를 지원하지 않습니다(그러나 acl은 이 문제를 제외하면 여전히 작동하는 것 같습니다). une2fs -l은 "기본 설치 옵션: user_xattr acl"을 표시합니다.

답변1

mv A C(상대 대상 경로) 또는 (절대 대상 경로)와 같은 약어를 의미한다고 가정합니다 .mv A ..mv A /some/path.../C

그렇다면 C에 쓸 수 없는 A의 또 다른 인스턴스가 있습니까? 이는 "권한 거부" 오류를 설명할 수 있습니다. 기존 항목에 쓸 수 없으면 콘텐츠를 해당 항목으로 .../C/A이동할 수 없으므로 작업이 실패하게 됩니다..../C/B/Amv

하지만 당신의 명령이mv A C 지정된 경로가 없습니다.이면 명령은 로 이동하는 대신 .../C/B/A으로 이름을 바꾸려고 시도합니다 . 마찬가지로, 쓸 수 없는 기존 콘텐츠 가 있는 경우 오류 메시지 와 함께 작업이 실패하게 됩니다..../C/B/C.../C/A.../C/B/Cmvpermission denied

답변2

https://en.wikipedia.org/wiki/Mv_(유닉스)

한 상위 디렉터리에서 다른 상위 디렉터리로 디렉터리를 이동하려면 이동 중인 디렉터리에 대한 쓰기 권한과 이전 상위 디렉터리 및 새 상위 디렉터리를 수정할 수 있는 권한이 필요합니다. 이는 이름 바꾸기로 인해 디렉토리 항목 ".."(모든 컨텍스트에서 현재 디렉토리의 상위 디렉토리에 대한 별칭으로 사용할 수 있음)의 i 번호가 변경되었기 때문입니다.

관련 정보