더 제한적인 umask에도 불구하고 내 홈 디렉토리의 파일이 월드 쓰기 가능으로 작성되는 이유는 무엇입니까?


10

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


3
홈 디렉토리는 어떤 파일 시스템 유형입니까?
mattdm

4
그리고 당신은 어떻게 작성 testfile하고 testdir?
mattdm

3
@mattdm, 당신은 주장하는 것이 옳았습니다 : 그것은 XFS입니다. / home, / var 등을위한 별도의 볼륨이 있다는 것을 잊었습니다. XFS를 자주 사용하지만이 동작을 보지 못했습니다. 어떻게 관련 될 수 있습니까?
rsuarez

2
acl은 umask를 로컬로 대체 할 수 있습니다. 디렉토리가 acl로 마운트되고 있습니까?
Faheem Mitha

3
흠, 분명히 xfs는 항상 acl을 활성화했습니다. 따라서 / etc / fstab에 표시되지 않을 수 있습니다. 파티션 / 디렉토리에서 getfacl을 실행하십시오.
Faheem Mitha

답변:


3

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

이 수수께끼를 해결했다고 생각합니다. 문제는 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 버전과 관련이있을 수도 있습니다. 몰라요.

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


자신의 질문에 대답하는 것은 완벽 합니다.
Keith Thompson

0

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

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

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


지연 돼서 죄송합니다. "touch testfile"과 "mkdir testdir"을 사용하여 비슷한 결과를 테스트했습니다. umask를 그들이 권한을 777로 만들어지기 때문에, "0000"으로 설정 보인다
rsuarez

0

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


1
아니요, 기본 ACL이 없습니다. XFS 볼륨에서만 발생하기 때문에 XFS와 관련이있는 것 같습니다. 어쨌든 고마워
rsuarez

-1

/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를 다시 실행하고 그것이 효과가 있는지 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.