더 제한적인 umask에도 불구하고 내 홈 디렉토리의 파일이 월드 쓰기 가능으로 작성되는 이유는 무엇입니까? 없음을 의미합니다. 그러나 $ HOME에 파일을

새 파일과 디렉토리에 대한 권한이 약간 이상하게 작동한다는 것을 깨달았습니다. 우선, 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 설치입니다. 왜 이런 일이 발생하는지에 대한 힌트가 있습니까?



답변

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

이 수수께끼를 해결했다고 생각합니다. 문제는 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이없는 것이 마음에 들지 않을 때 이상하게 동작합니다. 또한 나는 이것이 데비안 / 우분투가 아닌 CentOS에서만 발생하는 것을 보았습니다. 커널의 XFS 버전과 관련이있을 수도 있습니다. 몰라요.

어쨌든, 그것은 나를 위해 사건을 해결합니다. 모든 제안에 감사드립니다 🙂


답변

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

당신은 당신이 어떻게 만드는지에 대답하지 않았습니다 testfile,testdir.

을 사용하여 파일을 touch testfile작성한 후 권한을 나열하고 게시하십시오.


답변

getfacl .테스트 파일을 작성중인 디렉토리에서 a 를 시도 하여 권한에 영향을주는 기본 acl이 있는지 확인하십시오.


답변

/etc/login.defs에서 USERGROUPS_ENAB 변수를 찾으십시오.

사용 중지하기 위해 댓글을 달았습니다. # USERGROUPS_ENAB yes

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

027의 예

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

echo “umask 027”>> ~ / .bashrc이 명령은 프로필의 umask 기본값을 설정합니다

이로 인해 로그 아웃해야합니다.

다시 로그인 후

umask comand를 다시 실행하고 그것이 효과가 있는지 확인하십시오.


답변