사용자가 그룹에 있는지 확인하는 방법

사용자가 그룹에 있는지 확인하는 방법

다음 사용자를 white_house 그룹에 추가합니다.

도서관, 트럼프, 카터

usermod -a -G white_house kuku
usermod -a -G white_house trump
usermod -a -G white_house karter

우리 모두 알고 있듯이 사용자가 그룹에 추가되었는지 확인할 수 있습니다.

grep white_house /etc/group

하지만 명령줄이나 더 우아한 방법을 통해 이를 확인할 수 있습니까?

답변1

getent를 사용할 수 있습니다.

getent group white_house 

또는 특정 사용자 그룹을 확인하려면 다음을 사용할 수 있습니다.groups

groups karter

답변2

다음 쉘 함수는 두 개의 매개변수를 허용합니다.

  1. 사용자 이름
  2. 그룹 이름

그룹에 대한 정보를 요청한 getent group다음 해당 결과를 awk에 전달합니다. awk는 사용자 목록(필드 4, 콜론으로 구분)을 가져와 이를 쉼표로 구분된 "사용자" 배열로 추가로 나눕니다. 그런 다음 해당 배열(사용자 이름)의 각 요소를 별도의 줄에 인쇄한 다음 grep지정된 사용자 이름을 확인합니다. 사용자가 발견되면 grep(및 전체 함수)은 0/성공을 반환하고, 그렇지 않으면 1/실패를 반환합니다. grep 플래그의 의미는 다음과 같습니다.

  • -F-- 검색 텍스트를 정규 표현식이 아닌 고정 문자열로 처리합니다.
  • -x-- 검색 텍스트와 일치하려면 전체 줄이 필요합니다("john" 및 "johnson"과 같은 잘못된 긍정 일치 방지).
  • -q-- 화면에 아무것도 인쇄하지 말고 반환 코드를 적절하게 설정하세요.

function useringroup {
  getent group "$2" |
    awk -F: '{split($4, users, ","); for (name in users) print users[name]}' |
      grep -Fxq "$1"
}

다음과 같이 사용하세요:

useringroup myuser mygroup && echo myuser is in mygroup || echo myuser is not in mygroup

답변3

다음을 실행할 수 있습니다 id -Gn user_name.

  • -G이 사용자 이름에 대한 모든 그룹을 표시합니다.
  • -NGID 대신 이름을 표시합니다.

진술이 사실인지 확인해야 하는 경우 다음의 (더 복잡한) 구성이 도움이 될 것입니다 id -Gn user_name | grep group_name && echo "We are good" || echo "user_name is not the member of group_name.

관련 정보