Linux 프로그래밍 인터페이스에서 정보 /etc/passwd
:
비밀번호 파일에 동일한 사용자 ID를 가진 여러 레코드가 있을 수 있지만(일반적이지는 않음) 허용됩니다.다중 로그인~을 위한동일한 사용자 ID. 이를 통해 여러 사용자가 서로 다른 비밀번호를 사용하여 동일한 리소스(예: 파일)에 액세스할 수 있습니다.다른 로그인와 함께다양한 그룹의 그룹 ID.
그룹 ID(GID)필드는 첫 번째 그룹의 숫자 ID입니다. 여기서사용자회원이 되세요. 사용자의 다른 그룹 멤버십은 시스템 그룹 파일에 정의됩니다.
에 대한 /etc/group
:
사용자 목록필드는 쉼표로 구분된 목록입니다.사용자 이름그룹의 구성원은 누구입니까? (목록에는 다음이 포함됩니다.사용자 이름 대신에사용자 ID, 앞서 언급한 것처럼 사용자 ID는 비밀번호 파일 내에서 반드시 고유할 필요는 없기 때문입니다. )
존재하다 /etc/passwd
,
그룹 ID 필드는 사용자 이름 또는 사용자 ID에 따라 달라 집니까?
즉, 동일한 사용자 ID의 서로 다른 사용자 이름이 서로 다른 그룹 ID를 가질 수 있습니까, 아니면 동일한 사용자 ID의 모든 사용자 이름이 동일한 그룹 ID를 가져야 합니까?
감사해요.
답변1
사용자 데이터베이스의 핵심 또는 다른 사항은 /etc/passwd
로그인 이름입니다. 이는 로그인할 때 자신을 식별하기 위해 제공하는 전부입니다. 이 키를 사용하면 프로그램은 사용자 데이터베이스에 저장된 다른 모든 정보를 검색할 수 있습니다. 이 경우 사용자 데이터베이스의 다른 사용자는 고려되지 않습니다. 심지어 동일한 사용자 ID를 가진 다른 사용자도 마찬가지입니다. (일반적으로 이 작업은 다음을 통해 수행됩니다.getpwnam
또는getpwnam_r
, 직접 또는통과하다팸. )
따라서 로그인 이름은 저장된 비밀번호, 사용자 ID, (기본) 그룹 ID, GECOS 정보, 홈 디렉토리 및 쉘이 됩니다. 이는 두 명의 사용자가 동일한 사용자 ID를 공유할 수 있지만 홈 디렉토리와 쉘이 서로 다를 수 있음을 의미합니다! (이것은 과거에 루트에 대해 정적으로 연결된 대체 쉘을 제공하기 위해 자주 사용되었습니다. root
ID가 0이고 쉘이 있는 /bin/bash
일반 사용자 나 다른 사용자가 있고 sashroot
ID가 0이고 다른 쉘이 있는 다른 사용자가 있을 수 있습니다. )
그래서 대답은
그룹 ID 필드는 사용자 이름 또는 사용자 ID에 따라 달라 집니까?
예, 사용자 이름에만 의존합니다.
그룹 데이터베이스의 키도 그룹 이름입니다. 이 키를 기반으로 프로그램은 그룹 데이터베이스에 저장된 다른 모든 정보를 다시 검색할 수 있으며 이는 그룹 데이터베이스의 다른 그룹에 관계없이 발생합니다. (사용자의 보조 그룹을 결정할 때 프로세스는 사용자 데이터베이스를 읽는 것보다 더 복잡합니다. 특정 사용자가 속한 그룹을 나열하는 기능이 없으므로 이는 일반적으로 다음과 같은 루프에서 수행됩니다.getgrent
그리고endgrent
.)
따라서 그룹 이름으로 인해 그룹 비밀번호, 그룹 ID 및 그룹 구성원 목록(즉, 사용자 이름 목록)이 생성됩니다. 사용자의 보조 그룹 집합을 만들려면 모든 그룹을 열거하고 사용자의 로그인 이름을 그룹 구성원과 일치시킵니다. 따라서 동일한 사용자 ID를 가진 두 명의 다른 사용자는 서로 다른 기본 그룹을 가질 수 있을 뿐만 아니라 서로 다른 보조 그룹 집합에 속할 수도 있습니다!
그래서 대답은
즉, 동일한 사용자 ID의 서로 다른 사용자 이름이 서로 다른 그룹 ID를 가질 수 있습니까, 아니면 동일한 사용자 ID의 모든 사용자 이름이 동일한 그룹 ID를 가져야 합니까?
사용자 그룹은 사용자 이름에만 의존합니다. 서로 다른 사용자 이름은 사용자 ID를 공유할 수 있지만 기본 그룹과 보조 그룹은 서로 다릅니다.
답변2
그룹 ID 필드는 사용자 이름 또는 사용자 ID에 따라 달라 집니까?
불필요한. /etc/passwd 항목 줄의 각 계정 항목에는 사용자 이름, UID(사용자 ID) 및 GID(그룹 ID)와 같은 필수 필드가 있습니다. 그러나 GID는 어떤 것에도 "의존"하지 않습니다. /etc/group
addgroup 명령을 사용하여 사용자 정의 그룹을 추가 할 수 있습니다 .
즉, 동일한 사용자 ID의 서로 다른 사용자 이름이 서로 다른 그룹 ID를 가질 수 있습니까, 아니면 동일한 사용자 ID의 모든 사용자 이름이 동일한 그룹 ID를 가져야 합니까?
네, 혹시 궁금하시다면 UID와 GID 사이에는 "종속성"이 없습니다. 항목의 GID는 사용자의 기본 그룹 ID를 나타내지만 다음 /etc/passwd
명령을 사용하여 원하는 만큼 많은 그룹에 사용자를 할당할 수 있습니다./etc/group
usermod
sudo usermod -a -G groupname username
기본 GID를 원하는 대로 변경할 수도 있습니다. 기본적으로 사용자와 동일한 이름을 가진 GID가 생성되지만 이는 필수 사항은 아닙니다. 변경할 수 있습니다.