해결책

해결책

Bash 쉘 스크립트에서 폴더를 만들고 그 안에 mysqldump를 저장합니다. 내 스크립트에는 권한 관련 명령이 없다고 확신합니다. 다른 사용자가 파일에 액세스할 수 있도록 ACL을 사용했지만 해당 파일에 액세스하려고 시도했을 때 권한 거부 문제가 발생했습니다. 문제는 effectiveACL의 권한에 있었습니다.

디렉터리의 소유자는 이고 ola, 폴더에 액세스하려는 새 사용자는 이며, uber폴더는 입니다.gettaxi

상위 디렉토리 권한

[/omega/olabooktmp]# getfacl .
# file: .
# owner: ola
# group: ola
user::rwx
user:uber:rwx
group::r-x
mask::rwx
other::r-x
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

하위 디렉터리 권한

[/omega/olabooktemp]# getfacl gettaxi/
# file: gettaxi/
# owner: ola
# group: ola
user::rwx
user:uber:rwx       #effective:---
group::r-x          #effective:---
mask::---
other::---
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::r-x

새 디렉토리 gettaxi마스크 권한이 있는 것으로 확인되어 mask::---이것이 문제의 원인이라고 가정하지만 이 문제를 해결하는 방법을 잘 이해할 수 없습니다.

어떤 조언이라도 대단히 감사하겠습니다.

감사해요.

답변1

다음 명령을 사용하여 마스크를 변경할 수 있습니다.

setfacl -m m:rwx filename/directory

답변2

귀하의 질문을 잘 이해하면 사용자가 ola디렉토리에 파일을 생성하고 있습니다./omega/olabooktmp/gettaxi

그리고 이러한 파일에 대한 액세스를 제한하고 사용자에게 액세스 권한을 부여하려고 합니다 uber.

참고: /omega/olabooktmp/gettaxi소유자는 다음과 같습니다.ola

ACL이 없는 경우부터 시작해 보겠습니다.

ls -ld /omega/olabooktmp/gettaxi
drwxr-x--- 2 ola ola 4096 mars  21 08:16 /omega/olabooktmp/gettaxi

ACL 사용 rwx권한을 부여하려면 uber다음을 사용할 수 있습니다.

setfacl -m u:uber:rwx,d:u:uber:rwX,o:--- /omega/olabooktmp/gettaxi

이렇게 하면 폴더에 대한 사용자 권한이 허용되고 uber또한 부여됩니다. 이전에 폴더에 있던 파일에 권한을 부여하고 파일에 상속된 권한을 부여합니다. 물론 다른 모든 권한을 제거하여 제한하세요. 소유자는 여전히 면허증을 가지고 있습니다.rwx/omega/olabooktmp/gettaxirwxdefaultd:Xother

결과:

getfacl /omega/olabooktmp/gettaxi
getfacl: Removing leading '/' from absolute path names
# file: omega/olabooktmp/gettaxi
# owner: ola
# group: ola
user::rwx
user:uber:rwx
group::r-x
mask::rwx
other::---
default:user::rwx
default:user:uber:rwx
default:group::r-x
default:mask::rwx
default:other::---

시험:

ola일부 파일을 만듭니다(루트로 실행).

su - ola -c "for i in {1..3}; do date > /omega/olabooktmp/gettaxi/$RANDOM; done"

결과:

ls -l /omega/olabooktmp/gettaxi/
total 32
-rw-r----- 1 ola users 32 mars  21 08:43 17606
-rw-r----- 1 ola users 32 mars  21 08:43 22286
-rw-r----- 1 ola users 32 mars  21 08:42 31484
-rw-r----- 1 ola users 32 mars  21 08:43 31848
-rw-r----- 1 ola users 32 mars  21 08:42 667
-rw-r----- 1 ola users  4 mars  21 08:16 one
-rw-r----- 1 ola users  6 mars  21 08:16 three
-rw-r----- 1 ola users  4 mars  21 08:16 two

일반 사용자는 접근할 수 없습니다(루트로 실행):

su - debian -c "ls -l /omega/olabooktmp/gettaxi"
ls: cannot open directory '/omega/olabooktmp/gettaxi': Permission denied

하지만 uber는 다음을 수행할 수 있습니다(루트로 실행).

su - uber -c "ls -l /omega/olabooktmp/gettaxi"
total 32
-rw-r----- 1 ola users 32 Mar 21 08:43 17606
-rw-r----- 1 ola users 32 Mar 21 08:43 22286
-rw-r----- 1 ola users 32 Mar 21 08:42 31484
-rw-r----- 1 ola users 32 Mar 21 08:43 31848
-rw-r----- 1 ola users 32 Mar 21 08:42 667
-rw-r----- 1 ola users  4 Mar 21 08:16 one
-rw-r----- 1 ola users  6 Mar 21 08:16 three
-rw-r----- 1 ola users  4 Mar 21 08:16 two

일부 테스트에서 ACL이 손상된 경우 다음을 사용하여 모든 ACL을 제거할 수 있습니다.

setfacl -R -b /omega/olabooktmp/gettaxi

그리고 다시 시작하세요.

답변3

네, 마스크가 권위를 약화시키고 있습니다. 유효 권한은 권한과 마스크의 합입니다. ( user::(사용자를 소유하고) other마스크의 영향을 받지 않습니다).

다음을 사용하여 마스크를 변경할 수 있습니다. 예: setfacl -m m:r-x file-name.

를 수행할 때 ls -l패턴이 로 끝나는 경우 +중간 패턴 비트(전통적으로 그룹 비트)가 마스크입니다.

때때로 모드 비트는 의 그룹 비트를 기반으로 설정됩니다 umask. 언제 이런 일이 발생하는지, 언제 기본 마스크를 사용해야 하는지에 대한 규칙을 마련하지 않았습니다. cp파일 복사 에는 umask.

해결책

사용자가 자신의 그룹을 갖고 있는지 확인하고 이를 기본 그룹으로 설정하세요. 그런 다음 umask으로 설정합니다 007.

답변4

이 동작은 버그라고 생각됩니다. 나는 이것을 지난달에 게시했습니다(unix.stackexchange.com/questions/570795 참조). cp 명령은 소스 파일의 파일 권한을 acl 마스크에 복사합니다. 이것이 cp가 아닌 cp -p에서 기대되는 것입니다. 나는 cat을 사용하여 복사할 수 있다는 것을 알았습니다.

cat afile > bfile

또는 tar 파이프라인을 통해

(cd A; tar -cf -)|(cd B; tar-xf -)

그리고 acls는 예상대로 존중됩니다.

또한 이 CP 동작을 설명하기 위해 현상금을 제공하고 있습니다. 아무도 그것을 설명하지 않습니다. 버그 보고서를 제출하는 것을 고려 중입니다. 즉, 이는 일반적인 cp 동작이 아닌 "cp -p" 동작이어야 합니다. (그리고 아무도 대답을 못했는데 시스템이 보상 포인트를 차감해버렸네요. 저도 놀랐습니다.)

관련 정보