사용자에게 공백이 포함된 여러 그룹 멤버십이 있습니다. 예:
- 내도메인\직원
- 내도메인\직원 관리자
- 내도메인\스태프 슈퍼
사용자 그룹은 다음을 사용하여 반환될 수 있습니다.
id -Gn username | grep -i -o '\bstaff\b'
안타깝게도 사용자가 "mydomain\staff admin" 또는 "mydomain\staff super"의 구성원이지만 "mydomain\staff"가 아닌 경우 조회가 반환됩니다. "mydomain\staff" 그룹 멤버십만 검색하는 방법은 무엇입니까?
요청에 따라 샘플 출력은 다음과 같습니다.
id -Gn username
다음과 같이(모두 한 줄에):
mydomain\staff mydomain\staff 관리자 mydomain\staff super mydomain\다른 그룹
답변1
출력은 공백으로 구분 되므로 id -Gn
사용할 수 없습니다.
id
coreutils 8.22부터 GNU 구현에는 -z
공백으로 구분된 목록 대신 nul로 구분된 목록을 출력하는 옵션이 있으므로 이 작업을 수행할 수 있습니다( grep
이미 사용 중인 것으로 보이는 GNU를 사용하여).
id -Gzn username | grep -Fxz 'mydomain\staff'
또는:
id -Gzn username | grep -z '\\staff$'
staff
누구 에게나필드(그게 무엇이든).
그렇지 않은 경우 다음 명령이 있으면 getent
문제를 리버스 엔지니어링할 수 있습니다.
staff_members=$(getent group 'mydomain\staff' | cut -d : -f 4-)
case ",$staff_members," in
(*,username,*) printf '%s\n' 'username is member of mydomain\staff'
esac