사용자가 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을 가지며 시스템 사용자는 일반적으로 이 두 가지 기준을 충족하지 않습니다. 따라서 이러한 기준과 일치하는 사용자를 나열할 수 있습니다.mail
news
Administrator
SYSTEM
LOCAL SERVICE
TrustedInstaller
/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}'