umask가 더 제한적임에도 불구하고 내 홈 디렉토리의 파일이 누구나 쓰기 가능하도록 생성되는 이유는 무엇입니까?

umask가 더 제한적임에도 불구하고 내 홈 디렉토리의 파일이 누구나 쓰기 가능하도록 생성되는 이유는 무엇입니까?

새 파일과 디렉터리에 대한 권한 동작이 약간 이상하다는 것을 깨달았습니다. 첫째, umask는 정답을 반환하는 것 같습니다.

$ umask
0002

이는 내 사용자와 내 그룹이 전체 액세스 권한을 가지며 나머지 세계에는 쓰기 액세스 권한과 suid가 없음을 의미합니다. 하지만 $HOME에 파일을 생성하면 다음과 같습니다.

$ ls -l testfile 
-rw-rw-rw- 1 robe robe 0 mar 16 12:58 testfile

즉, 모든 사람에게 쓰기 권한을 부여합니다. 디렉토리에서도 동일한 일이 발생합니다.

$ ls -ld testdir
drwxrwxrwx 2 robe robe 6 mar 16 13:00 testdir

이건 0002가 아니라 umask 0000과 같은 것 같아요. 기본 0002 또는 0022를 변경한 일부 umask 인스턴스에 대해 모든 /etc를 검색했지만 아무것도 찾지 못했습니다. 이는 기본 CentOS 5.5 설치입니다. 왜 이런 일이 발생하는지 알 수 있나요?

답변1

내 질문에 대답하는 것이 적절한지 모르겠습니다. 그렇지 않은 경우 편집자에게 이에 대한 조언을 요청합니다. 미리 감사드립니다.

나는 미스터리를 해결했다고 생각합니다. 문제는 XFS 볼륨에 기본 ACL이 없다는 것입니다. 다음은 영향을 받는 디렉터리 중 하나인 /srv/backups에 대한 ACL 항목입니다.

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

"mkdir test" 또는 "touch testfile"을 실행할 때마다 777 권한이 부여됩니다. 그래서 나는 이렇게 했습니다:

setfacl -m d:u::rwx /srv/backups

다음과 같이 ACL을 유지합니다.

# file: srv/backups
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:other::r-x

예전에는 ACL이 없었지만 지금은 있습니다. "ls -l"을 실행하면 "+" 기호가 추가된 권한을 볼 수 있습니다. 기적적으로 이제 "mkdir test" 및 "touch testfile"이 예상된 권한으로 작동합니다.

# ls -l testfile 
-rw-r--r-- 1 root root 0 Dec 20 10:00 testfile
# ls -ld testdir
drwxr-xr-x+ 2 root root 6 Dec 20 10:00 testdir

왜 이런 일이 발생하는지 모르겠습니다. XFS는 기본 ACL이 없는 것을 좋아하지 않으며 ACL이 발생하면 이상하게 동작합니다. 또한 Debian/Ubuntu가 아닌 CentOS에서만 이런 일이 발생하는 것을 보았습니다. 아마도 커널의 XFS 버전이나 이와 유사한 것과 관련이 있을 수 있습니다. 전혀 모른다.

어쨌든 이 문제는 해결되었습니다. 모든 제안에 감사드립니다 :-)

답변2

creat 호출은 umask보다 우선하는 권한을 명시적으로 지정할 수 있습니다.

어떻게 만들었는지 답변하지 않으셨습니다 testfile,testdir.

다음을 사용하여 파일을 touch testfile만듭니다 .

답변3

/etc/login.defs에서 USERGROUPS_ENAB 변수를 찾으세요.

비활성화하라고 댓글을 달았습니다 #USERGROUPS_ENAB 예

현재 사용자의 umask도 변경하려면 먼저 이전 절차를 따른 후 다음을 수행해야 합니다.

027을 예로 들어보자

echo "umask 027" >> ~/.bashrc && pkill -KILL -u your_username_here

echo "umask 027" >> ~/.bashrc 이 명령은 구성 파일의 umask 기본값을 설정합니다.

이렇게 하면 강제로 종료됩니다.

다시 로그인 후

umask 명령을 다시 실행하고 작동하는지 확인하세요.

관련 정보