다음 사용자를 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
다음 쉘 함수는 두 개의 매개변수를 허용합니다.
- 사용자 이름
- 그룹 이름
그룹에 대한 정보를 요청한 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
.