최근에는 openSUSE를 사용하여 매우 간단한 테스트 환경을 구축했습니다.
공유 디렉터리를 구성하려고 하면아니요ACL을 사용하지만 어떤 이유로 해당 디렉터리에서 SetGID를 사용하면 사용자당 기본 umask가 022(예: 디렉터리에서는 755, 파일에서는 644)로 설정되어 있는 것으로 나타났습니다.
이 작업은 에서 수행되었습니다 /etc/login.defs
.
나는 일반 사용자의 경우 umask 002(예: 775개의 디렉터리/664개의 파일)를 사용하고 루트 사용자의 경우 022를 사용하는 데 익숙합니다.
향후 모든 useradd에 대해 기본값으로 설정하려면 위 파일에서 useradd에 대한 umask 값을 변경해야 합니까? 시스템에 있는 모든 기존 사용자의 umask를 어떻게 변경합니까(물론 루트 계정 제외)?
답변1
umask 022
(또는 0022
)는 UNIX 시스템에서 일반적으로 사용되는 umask입니다.전통적인 스타일의 사용자 계정 관리. 전통적인 계정 관리 스타일에서는 사용자가 생성되면 사용자에게 팀이나 부서와 같은 기본 그룹이 제공되거나 "사용자"와 같이 단순할 수 있습니다. setgid 디렉터리("팀 디렉터리"라고 부를 수 있음)는 사용자가 명시적으로 쓰기 가능으로 설정하지 않는 한 다른 팀 구성원이 해당 파일에 쓸 수 없기 때문에 예상대로 작동하지 않습니다. 이는 그다지 실용적이지 않습니다. 특히 git 저장소의 경우처럼 파일이 사용자에게 투명하지 않은 경우에는 더욱 그렇습니다. ACL은 이에 대한 완벽한 솔루션을 제공하므로 이는 문제로 간주되지 않습니다.
umask 002
(또는 0002
)는 UNIX 시스템에서 일반적으로 사용되는 umask입니다.UPG - 사용자 개인 그룹. UPG 시스템에 사용자를 추가하면 시스템은 사용자 이름 및 사용자 ID와 동일한 이름 및 그룹 ID를 가진 그룹을 생성합니다. UPG는 사용자 계정 관리에 대한 데비안에서 영감을 받은 접근 방식입니다. 방금 경험한 것처럼 UPG는 사용자가 umask를 재정의하지 않는 한 setgid 디렉터리에 비해 몇 가지 장점이 있습니다. ACL은 덮어쓰이지 않습니다.
가장 좋은 해결책은 사용자 및 그룹 계정을 재구성하고 UPG를 활성화하는 것입니다. 그러면 "안전"합니다.
경고하다!바로가기를 선택하고 umask를 (or ) 대신 (or ) /etc/login.defs
로 간단히 변경하는 경우 기본적으로 모든 사용자가 만든 모든 파일은 이제 동일한 그룹의 다른 모든 사용자가 쓸 수 있다는 점에 유의하세요. 이것은002
0002
022
0022
보안 위험, 따라서 이것은 거의 확실히 당신이 원하는 것이 아닙니다.
UPG 시스템을 도입한 이유 중 하나는 관리자가 setgid 비트( 002
또는 0002
) 대신 umask 022
(또는 0022
)를 구성하여 설명된 보안 위험 없이 프로젝트 협업 작업을 쉽게 촉진할 수 있다는 것입니다.
내가 아는 한, OpenSUSE는 설치 또는 YaST 중에 UPG를 활성화하는 방법을 제공하지 않습니다. UPG를 사용하는 유일한 방법은 명령줄을 사용하여 사용자 계정을 만든 다음 필요한 변경 작업을 수행하는 것 /etc/login.defs
입니다 USERGROUPS_ENAB yes
. 여기에 문제가 있습니다. UPG는 사용자 ID와 그룹 ID가 동일한 경우에만 제대로 작동합니다. 실행 중인 시스템을 변경하는 경우 먼저 기존 그룹의 ID를 변경해야 하며, 여기에는 해당 그룹이 있는 모든 파일에 그룹을 다시 할당하는 작업이 포함되며, LDAP, NFS 및 NIS의 컨텍스트에서 이는 털이 좀 있음.
다음은 제가 setgid와 umask 및 UPG 주제를 처음 접했을 때 도움이 되었던 주제에 대한 추가 자료입니다.
답변2
스레드의 질문에 대답하려면: OpenSuSE는 umask
다른 Linux 배포판에서 채택한 Debian 기반 설정이 아닌 기존 Unix 설정을 사용합니다.
편집 /etc/login.defs
만으로도 충분해야 합니다. 이는 현재 로그인한 사용자에게 영향을 주지 않으며 현재 실행 중인 프로그램에 강제로 변경을 적용할 수 있는 방법도 없습니다. 또한 이를 재정의하는 사용자 ~/.profile
(또는 쉘 등에 .bash_profile
따라 )에는 영향을 미치지 않습니다..login
useradd
이에 관여하지 않습니다. 이는 프로세스별 설정이며 기본값은 로그인 중에 설정됩니다(따라서 login.defs
그렇지 않음 /etc/default/useradd
).
답변3
대부분의 유닉스 시스템에는 022 umask가 있습니다. 이는 기본적으로 사용자만 파일에 쓸 수 있음을 의미합니다.
각 사용자가 자신의 기본 그룹에 속해 있는 시스템의 경우 002 umask를 갖는 것이 유용합니다. 하지만 이 우마스크에는 위험이 도사리고 있습니다. 이는 쓰기 가능한 많은 디렉토리에 대한 지원 문제를 일으키 .ssh
므로 SSH 데몬에서 무시됩니다. 이로 인해 개인 파일이 공유 그룹에 속하게 되면서 노출됩니다. 많은 파일이 잘못된 그룹에 속하게 되므로 기본적으로 그룹 쓰기 가능으로 설정하는 것은 좋은 생각이 아닙니다.
당시에는 umask 및 setgid 디렉토리가 사용자 간 파일 공유를 용이하게 하는 유일한 방법이었기 때문에 다소 번거로웠습니다. 현재 ACL은 다음과 같이 더 나은 성능을 발휘할 수 있습니다.
- 권한 비트는 특정 그룹과 연결됩니다(그룹 권한 집합을 개별적으로 설정하고 해당 권한이 적용되는 그룹을 선택하는 대신).
- 파일 권한은 사용자가 재정의할 수 있는 사용자 설정에 의존하지 않고 디렉터리 권한에만 의존합니다.
- 파일은 여러 그룹에 대한 권한을 설정할 수 있습니다.
- 그룹으로 구성되지 않은 사용자 간에 파일을 공유할 수 있습니다.
Umask는 더 이상 사용되지 않습니다. ACL을 사용하세요.
답변4
예를 들어 RHEL과 (개방형) SuSE의 한 가지 차이점은 RHEL이 다음을 따른다는 것입니다.사용자 비공개 그룹 구성표각 사용자의 기본 그룹은 사용자 이름과 동일한 이름을 가진 비공개 그룹입니다.
(open) 내 기억이 맞다면 SuSE는 모든 사용자의 비공개 그룹을 "users"로 설정합니다.
물론, 사용자 그룹의 구성원이 모든 파일을 읽을 수 있도록 허용하는 umask는 다른 사용자가 그룹의 구성원인 경우 안전하지 않습니다. 이것이 (개방형) SuSE, RHEL 및 기타 시스템 간에 기본 umask가 다른 이유입니다.
따라서 시스템 전체의 umask를 변경하기 전에 보안에 미치는 영향을 확인하십시오!