Linux 서버의 모든 사용자 이름을 나열하는 명령

Linux 서버의 모든 사용자 이름을 나열하는 명령

사용자가 Linux 서버에서 인증된 사용자의 모든 사용자 이름 목록을 생성할 수 있도록 하는 명령은 무엇입니까? 나는 열심히 노력했다

getent passwd | cut -d : -f 1 | xargs groups 

그리고

less /etc/passwd 

그리고

grep 'x:0:' /etc/passwd 

그리고

getent passwd

그리고

grep "/bin/bash" /etc/passwd | cut -d: -f1

그러나 위의 어느 것도 내가 원하는 것을 제공하지 않습니다. 그것은 단지 사용자 이름 목록일 뿐입니다.

어떤 도움이라도 대단히 감사하겠습니다.

답변1

첫 번째 시도를 사용하고 삭제하세요 | xargs groups. 그러나 현실적으로 그것은 충분히 기본적이며 이 사이트에 적합하지 않습니다...

답변2

awk(1)은 또 다른 유용한 도구입니다. awk는 지정된 구분 기호를 기반으로 텍스트 줄에서 개별 필드를 구문 분석할 수 있습니다. /etc/passwd의 경우 구분 기호는 콜론이므로 awk 명령줄에 "-F:"를 전달합니다. 다시 말하지만, 사용자 이름은 줄의 첫 번째 필드이고 awk의 숫자 필드는 1부터 시작하므로 "print $1"을 지정하여 awk에게 각 줄의 첫 번째 필드를 인쇄하도록 지시합니다.

awk -F: '{ print $1 }' < /etc/passwd

이는 passwd 파일의 모든 필드를 인쇄하도록 쉽게 조정할 수 있습니다. 다음은 각 사용자 이름(필드 1), 공백, 로그인 쉘(필드 7)의 목록입니다.

awk -F: '{ print $1, $7 }' < /etc/passwd

답변3

그러면 셸을 소유한 사용자별로 사용자가 필터링됩니다.

getent passwd | egrep  '(/bin/bash)|(/bin/zsh)|(/bin/sh)' | cut -f1 -d:

답변4

승인된 사용자 목록을 요청하고 이 목록이 모든 사용자 목록의 하위 집합임을 명시했지만 승인된 사용자와 승인되지 않은 사용자를 구별하는 데 사용할 기준을 결정하지 않았습니다.

시스템(Unix 및 Windows)에는 일반적으로 사전 정의된 표준 내장 사용자( root및 Unix bin및 Windows)가 함께 제공됩니다. Unix에서 "실제" 사용자(실제 사람에게 할당됨)는 일반적으로 GID ≥ 500을 가지며 시스템 사용자는 일반적으로 이 두 가지 기준을 충족하지 않습니다. 따라서 이러한 기준과 일치하는 사용자를 나열할 수 있습니다.mailnewsAdministratorSYSTEMLOCAL SERVICETrustedInstaller/home/etc/passwd

awk -F: '$6 ~ /^\/home/ && $3 >= 500 {print $1}' /etc/passwd

getent passwd에 없는 사용자가 생성된 경우 /etc/passwd해당 사용자를 연결할 수 있습니다.

getent passwd | awk -F: '$6 ~ /^\/home/ && $3 >= 500 {print $1}'

또는 다음을 결합하세요.

getent passwd | sort -u - /etc/passwd | awk -F: '$6 ~ /^\/home/ && $3 >= 500 {print $1}'

참고: 이 답변은 다음을 기반으로 합니다.답변(현재는 삭제되었으며 10K만 있음)케마.

관련 정보