다음 ACL 규칙 설정이 포함된 디렉터리가 있습니다.
cd /nobackupp13/jrwrigh7
getfacl .
알겠어요
# file: .
# owner: jrwrigh7
# group: a1983
user::rwx
group::r-x
group:a1983:r-x
mask::r-x
other::---
default:user::rwx
default:group::r-x
default:group:a1983:r-x
default:mask::r-x
default:other::---
그러나 이 디렉터리에 테스트 파일을 생성하면 mask
기본값이 적용되지 않고 파일에 대한 권한이 다음으로 r--
만 제한됩니다 r-x
.
cd /nobackupp13/jrwrigh7
touch testfile
getfacl testfile
알겠어요
# file: testfile
# owner: jrwrigh7
# group: a1983
user::rw-
group::r-x #effective:r--
group:a1983:r-x #effective:r--
mask::r--
other::---
umask
ACL의 적용을 받는 다고 합니다 (참조https://serverfault.com/q/349145/530204
), 어쨌든 결과는 다음과 같습니다 umask
.
cd /nobackupp13/jrwrigh7
umask
알겠어요
077
이를 차단하는 다른 권한 시스템이 있나요?
궁극적인 목표는 r-x
이 그룹이 이 디렉토리에 생성된 모든 파일을 생성하는 것입니다 a1983
. 제가 이 일을 겪는 이유는 제 연구 그룹이 관리 통제 권한이 없는 컴퓨터에서 서로의 파일에 액세스/실행하는 데 계속 문제가 있기 때문입니다. 우리는 소유자가 설정했는지 여부에 관계없이 모든 스크립트 파일이 실행 가능하도록 보장하고 싶습니다.
답변1
일반 정보
파일을 생성하기 위해 시스템 호출을 할 때 설정이 open()
있습니다 mode
. 파일이 받는 모든 권한은 mode
이 매개변수에서 요청되어야 합니다.
상위 디렉터리에 기본 ACL이 없으면 파일의 권한 mode
은 umask
.
상위 디렉터리에 기본 ACL이 있는 경우 이는 mode
소유자 권한과 다른 모든 사람의 권한을 결정합니다.
다른 모든 ACL 항목은 변경되지 않은 기본 ACL을 사용합니다. 동일한 효과를 얻기 위해 ACL 마스크는 ACL이 명시적으로 설정된 경우와 같이 ACL_USER
, ACL_GROUP
, 항목을 기반으로 계산되지 않고 대신 그룹 부분으로 설정됩니다 .ACL_GROUP
mode
mode
마스크 값은 기본 ACL 및 기본 마스크에 따라 결정됩니다. 여기에는 세 가지 요소 모두에 포함된 권한만 포함됩니다. 따라서 기본 마스크는 일반적으로 축소되지만 다른 값도 축소하는 데 사용할 수 있습니다.
프로그램이 "이상하게" 동작하면 결과가 혼란스러울 수 있습니다. 예를 들어, 모드 를 gcc
사용하여 출력 파일을 만든 666
다음 .chmod()
777
당신의 상황
touch
모드를 사용하여 파일을 만듭니다666
.- 기본 ACL 설정은 다음과 같습니다.
750
- 결과(둘 다 권한 포함)는 입니다
640
.
답변2
파일이 디렉터리나 실행 파일(컴파일러의 출력)이 아닌 경우 실행 권한이 없습니다.
umask는 마스크라는 것을 기억하세요. 권한을 추가하는 것이 아니라 차단할 뿐입니다. 파일을 생성한 프로그램은 패턴을 사용 rw
하고 마스크는 소유 사용자에게 이를 허용하고 w
그룹에서는 차단하며 다른 사용자에서는 모두 차단합니다.