항상 동일한 UID와 GID 쌍이 있습니까?


11

을 사용하여 파일 / 디렉토리의 소유권을 변경해야합니다 chmod. 소유자의 사용자 이름 만 알고 있지만 기본 그룹 이름을 동시에 변경하고 싶습니다. 이 단계에서는 그룹 이름이 결정되지 않으므로 사용자 이름과 동일하게 입력합니다

chown -R username:username path_to_dir

명령은 다양한 시스템 / 사용자에 대해 실행될 수 있으므로 내 관심사는 Linux에 항상 username (user) : username (group) 쌍을 갖거나 어느 시점 에서이 기본 group_name이 오류를 줄 수 있다는 것입니다.

사용자가 속한 GID를 찾기 시작했지만

id username | tr '(=)' ':' | awk -F: '{print $3}

그러나 지식을 알고 싶습니다. /etc/passwd /etc/groups"종료, 중지, 동기화, opeartor"와 같은 소수의 사용자 를 제외하고 분석 할 때까지 모든 사용자가 그룹으로 나열했습니다.

편집 1 : id -gn username 또한 좋은 옵션입니다


3
두 번째 예에서 찾고 계 id -g username셨습니까?
user1686

1
또는 id -gn usernameID 대신 이름을 인쇄합니다.
Cristian Ciupitu

리눅스에는 많은 "장치 그룹"도 있습니다. 디스크, mem, kmem, 오디오, 비디오 등-해당 사용자가 없습니다.
Baard Kopperud

답변:


20

groupname = username이 존재할 것이라는 보장은 없습니다 .

가장 일반적인 시나리오는 Linux에서 시스템 관리자가 시스템에서 로컬로 새 사용자를 작성하는 것이 그룹에 대한 명시적인 스펙이없는 것입니다. 즉, 그룹은 기본적으로 사용자 이름과 동일하게 작성되고 사용자에게 새로 작성된 그룹의 기본 GID

이것은 다른 시스템 관리자가이 절차를 따를 것이라는 의미는 아니며 다른 이름 지정 서비스를 NIS 또는 LDAP와 같은 믹스에 넣을 경우 기본값으로 지정된 그룹은 사용자 이름과 동일한 그룹 이름을 가진 새 GID와 동일하지 않을 수 있습니다.

따라서 username = groupname이라는 사실에 의존해서는 안됩니다.


또한 로컬 관리자 정책뿐만 아니라 다양한 배포판에 포함 된 도구에 의존 할 수도 있습니다. 많은 사이트에서 제공된 도구가 사용하는 기본값 만 사용합니다. 지난 몇 년 동안 사용했던 대부분의 배포판 useradd에는 기본적으로 동일한 이름을 가진 그룹을 생성하는 스크립트가 제공됩니다. 지난 몇 년 동안 (몇 년 전) 슬랙웨어의 사용자 생성 스크립트는 기본적으로 users모든 사용자가 대신 하나의 그룹으로 구성 되어있었습니다. docs.slackware.com/slackbook:users 는 이것이 여전히 그렇다고 제안합니다.
Jules

11

하지만 사용자 개인 그룹 관용구는 종종 현대적인 리눅스 시스템에서 사용되는, * nix에서 스크립트는 실제로 각 사용자에 대해 고유 한 기본 그룹을 필요로하지 않으며, 같은 공통 기본 그룹을 공유하는 여러 사용자 계정에 대해 확실히 가능 usersstaff.

UPG 관용구가 시행되는 경우에도 특정 UPG의 숫자 GID가 소유자의 UID와 같아야하는 특별한 이유는 없지만 대부분의 계정 생성 도구는 UID와 GID를 순서대로 할당하려고 시도합니다. 유효한. 사용자 및 / 또는 그룹이 여러 시스템에서 일관성을 유지해야하는 경우 (예 : 기존 NFS 공유를 수용하기 위해) ID가 쉽게 벗어날 수 있습니다.


6

Ramesh는 기본적으로 UID와 GID는 일반 사용자와 동일합니다. 그러나 이것이 항상 그런 것은 아니므 로 시스템에 혼란을 초래할 수있는 가정을해서는 안됩니다. 잘못된 그룹에 파일 / 폴더 권한을 할당하는 것은 다소 지저분하지 않습니까?

짧은 대답 : 아니요, UID가 항상 GID와 같지는 않습니다. 여전히 /etc/passwd동일한 줄에 기본 그룹의 UID와 GID가 모두 포함되어 있으므로 추출하기가 쉽습니다.


"기본적으로 UID와 GID는 일반 사용자와 동일합니다"-실제로이 문장은 "일부 인기있는 Linux 배포판에"를 추가하는 경우에만 적용됩니다. 예, Ubuntu et al. 이 방법으로 수행하지만 일반적인 "사용자"그룹을 기본값으로 생각합니다.
jstarek

그렇습니다, 우리가 100 % 정확한 목표라면 당신이 맞습니다. 단일 예외를 놓치지 않기 위해 더 다양한 'if'를 추가해야 할 것입니다. 내 데비안 기반 배포판 (LMDE, Crunchbang, 순수 데비안)은 모두 이런 식으로 작동하며 CentOS 6.5도 있습니다. 엄청난 양의 사용자를 추가 할 필요가 없기 때문에 adduser오히려 사용 하는 경향이 useradd있으며 기본값은 각 새 사용자에 대한 그룹을 생성하도록 /etc/adduser.conf설정되어 USERGROUPS=yes있습니다. 이러한 그룹은 일반적으로 항상 그런 것은 아니지만 그룹을 만든 사용자의 UID와 동일한 GID를 갖습니다.
Erathiel

2

에서 링크, 나는 아래의 정보를 참조하십시오.

UID (사용자 ID)는 Unix 계열 운영 체제에서 각 사용자에게 할당 한 고유 한 양의 정수입니다. 각 사용자는 UID로 시스템에 식별되며 사용자 이름은 일반적으로 사람을위한 인터페이스로만 사용됩니다.

UID는 해당 사용자 이름 및 기타 사용자 별 정보 /etc/passwd와 함께 파일에 저장되며 다음과 같이 cat 명령으로 읽을 수 있습니다.

cat /etc/passwd

세 번째 필드에는 UID가 포함되고 네 번째 필드에는 그룹 ID (GID)가 포함되며 기본적으로 모든 일반 사용자의 UID와 같습니다.

편집하다

그러나 @Karlson이 지적했듯이 UID가 기본적으로 GID와 동일하다는 것은 사실이 아닙니다.

이 명령문은 일반 그룹이 별도로 추가되지 않고 사용자 작성시 그룹이 명시 적으로 지정되지 않은 경우에만 적용됩니다 . 기본적으로 다음에 추가 된 사용자의 gid = max(gid) + 1. * NIX 시스템에 필요한 UID와 GID 간에는 상관 관계가 없으며 일부 경우에 일치합니다.

더 많은 참조

http://www.thegeekstuff.com/2009/06/useradd-adduser-newuser-how-to-create-linux-users


마지막 진술은 완전히 거짓입니다. UID = GID는 로컬 시스템에서 새 사용자를 만들고 GID가 기존 그룹에 명시 적으로 할당되지 않은 경우에만 해당됩니다.
Karlson

아니요, "기본적으로"명확하게 표시되어 있기 때문에 완전히 잘못된 것은 아닙니다. 약간의 설명이 여기에 많이 감사하겠습니다.
Erathiel

1
@Erathiel 기본적으로 GID는 사용자 생성시 할당 된 GID와 같습니다. 사용자가 로컬로 작성 되고 프로그램의 -g플래그에 GID를 지정 useradd하지 않으면 그룹이 작성되며 GID 이동이 발생하지 않으면 UID가됩니다. 그러나, 생성 방법을 모르는 경우 다음과 같은 사실에 의존 할 수 없습니다.uid=123456(ME) gid=777(ABC) groups=777(ABC)
Karlson

일부 시스템에서 useradd는 또한 계정에 대해 동일한 이름의 그룹을 만듭니다. 리눅스의 풍미에 달려 있습니다.
Pete

@ Karlson, 나는 그것이 항상 같을 것이라고 언급하지 않았다. 기본적으로 모든 일반 사용자의 UID와 동일 하게 지정됩니다 .
Ramesh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.