해결 방법

해결 방법

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

rwxACL 사용 권한을 부여하려면 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 -)

그리고 ACL은 예상대로 존중됩니다.

나는 또한 이 CP 동작을 설명하기 위해 현상금을 걸었습니다. 아무도 그것을 설명하지 않았습니다. 버그 보고서를 제출할 생각입니다. 즉, 이는 바닐라 cp 동작이 아니라 'cp -p' 동작이어야 합니다. (아무도 답변을 해주지 못했는데도 시스템이 포상금을 차감하는군요. 저도 놀랐습니다.)

관련 정보