그룹에 사용자 이름을 추가한 후 그룹 및 그룹 USERNAME의 출력이 다릅니다.

그룹에 사용자 이름을 추가한 후 그룹 및 그룹 USERNAME의 출력이 다릅니다.

오늘 이상한 행동을 발견했습니다. 새 그룹에 사용자를 추가하면 다음과 같습니다.

# gpasswd -a test myuser

groups그런 다음 새 bash 세션에 연결하면 결과는 다음과 같습니다 groups myuser.

myuser@mycomputer$ groups
wheel myuser
myuser@mycomputer$ groups myuser
wheel myuser test

재부팅할 때만 출력이 groups동일하게 표시되지만 groups myuser그룹이 반드시 동일한 순서로 표시되는 것은 아닙니다.

그래서 제 질문은 간단합니다. 왜죠?

답변1

새 그룹이 시작될 때까지는 그룹 멤버십 변경 사항이 적용되지 않기 때문입니다.로그인껍데기. 새로운 비로그인 대화형 쉘 세션(새 터미널을 열 때 얻는 세션)을 시작하는 것은 관련이 없습니다.

따라서 를 실행하면 groups사용자가 현재 속한 그룹이 인쇄됩니다. 그러나 이러한 그룹은 사용자가 처음 로그인할 때 설정되며 다시 로그인할 때까지 변경할 수 없습니다. 따라서 groups새 그룹은 포함되지 않습니다.

반면에 시스템은 실행할 때 groups myuser검색하지 않습니다.현재의사용자는 다음에 속합니다지금은, 사용자가 속한 그룹을 찾습니다 myuser. 이는 /etc/group설정 파일을 읽어서 얻은 것입니다(아마도). 사용자가 의 새 그룹에 속하도록 설정되었으므로 /etc/groups이 명령은 사용자가 그룹에 속하지 않더라도 해당 내용도 표시합니다.지금다시 로그인하지 않으셨기 때문에 이미 이 그룹에 속해 계십니다.

답변2

  • 인수 없이 실행 하면 groups현재 그룹 목록이 표시됩니다.프로세스. 일반적으로 목록은 단순히 상위 프로세스에서 상속되지만 , 및 유사하게 변경 login됩니다 newgrp.

  • 인수를 사용하여 실행 하면 groups지정된 그룹에 대해 나열된(사용자 데이터베이스에) 그룹이 표시됩니다.사용자. login다음번에 이 사용자 등에 대해 실행될 때 설정될 그룹 목록 입니다 .

이것이 사용자/그룹 데이터베이스 업데이트가 영향을 미치는 이유입니다.미래로그인 세션 - 이미 실행 중인 프로세스가 변경될 것으로 예상하지 마세요.

관련 정보