Bash 쉘 스크립트에서 폴더를 생성하고 거기에 mysqldump를 저장합니다. 내 스크립트에는 권한과 관련된 명령이 없다고 확신합니다. 다른 사용자가 이러한 파일에 액세스할 수 있도록 ACL을 사용했지만 해당 사용자가 파일에 액세스하려고 하면 권한 거부 문제가 발생했으며 문제는 effective
ACL 권한에 있습니다.
디렉터리의 소유자는 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
rwx
ACL 사용 권한을 부여하려면 uber
다음을 사용할 수 있습니다.
setfacl -m u:uber:rwx,d:u:uber:rwX,o:--- /omega/olabooktmp/gettaxi
폴더에 대한 사용자 uber
권한을 허용하고 및 로도 부여 합니다 . 이전에 폴더에 있던 파일에 대한 권한을 부여하고 파일에 상속된 권한을 부여합니다. 물론 제한을 위해 다른 모든 권한도 제거합니다 . 소유자는 여전히 자체 권한을 갖습니다.rwx
/omega/olabooktmp/gettaxi
rwx
default
d:
X
other
결과:
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' 동작이어야 합니다. (아무도 답변을 해주지 못했는데도 시스템이 포상금을 차감하는군요. 저도 놀랐습니다.)