어떻게 작동하나요?

어떻게 작동하나요?

Ubuntu 시스템 콘솔에 사용자를 나열하는 데 사용할 수 있는 사용자 친화적인 명령이 있습니까?

cat /etc/passwd읽기 어려운 사용자 목록을 받았을 때 . 항목이 열에 정렬되어 있고 그룹 ID 옆에 괄호 안에 그룹 이름이 있는 알파벳순 목록을 보는 것이 좋을 것입니다.

답변1

/etc/passwd 파일의 좋은 출력을 얻는 좋은 방법:

$ column -nts: /etc/passwd

이제 다음과 같이 정렬할 수 있습니다.

$ column -nts: /etc/passwd | sort

마지막 열에는 그룹 이름이 포함됩니다(대괄호 제외).

$ paste -d: /etc/passwd <(groups $(cut -d: -f1 /etc/passwd) | sed 's/.*: //') | column -nts: | sort

답변2

컴퓨터에 대한 루트 액세스 권한이 있으면 다음을 수행할 수 있습니다.

sudo grep -vE '^[^*!]+:[*!]:' /etc/shadow | sort | cut -d: -f1 | while read user; do id $user; done | column -ts' ,' | vi '+set nowrap' -

어떻게 작동하나요?

섀도우 파일을 읽으려면 루트가 되십시오. 사용자가 비밀번호를 설정했는지(인간 사용자) 확인하려면 루트 권한만 필요합니다. 그렇지 않으면 cat /etc/passwd대신 다음을 수행 할 수 있습니다 sudo grep ....

sudo 

비밀번호를 설정한 사용자만 표시:

grep -vE '^[^*!]+:[*!]:' /etc/shadow

사용자 이름으로 정렬:

sort 

사용자 이름을 제외한 모든 정보를 삭제합니다.

cut -d: -f1

사용자 이름을 반복하고 그룹 정보로 보강합니다.

while read user; do id $user; done

입력 형식을 열로 지정합니다.

column -ts' ,'

vi를 사용하여 결과를 확인하세요.

vi '+set nowrap' - 

루트 액세스 권한이 없는 경우,

다음과 같이 시도해 보세요.

cut -d: -f1 /etc/passwd | sort | while read user; do id $user; done | sed 's/\(\()\|^\)[^(]*(\|)\)/ /g' | column -t

출력은 약간 다르지만 독자가 이 답변의 두 부분을 결합하여 완전히 작동하는 연습으로 남겨 두겠습니다. (당신은 단지 사랑이 아닌가요 sed?)

답변3

내가 한 일과 내 목적에 맞는 일은

ls /home

물론 이것은 실제로 사용자 목록을 제공하는 것이 아니라 사용자의 홈 디렉터리와 과거 사용자 디렉터리 목록을 제공하지만 터미널이 존재하지 않는 사용자에 대해 실행하려는 명령은 이를 알려줄 것입니다. 사용자 기본 파일을 삭제하지 않거나 이동하라는 메시지가 나타날 수도 있습니다!

답변4

쉬울 줄 알았는데 join파일 join을 정리해야 해요조인 필드에서. 따라서 임시 파일 해결 방법(?)이 필요합니다. 출력은 사용자별로 정렬되어 사용자, 그룹 및 그룹 ID를 표시합니다.

uag () {
  TEMP_GROUPS=/var/tmp/sorted_groups
  TEMP_USERS=/var/tmp/sorted_users
  cat /etc/group  | tr ":" " " | sort -k 3 -o $TEMP_GROUPS
  cat /etc/passwd | tr ":" " " | sort -k 4 -o $TEMP_USERS
  join -1 4 -2 3 -o 1.1,2.1,2.3 $TEMP_USERS $TEMP_GROUPS | sort
  rm $TEMP_GROUPS $TEMP_USERS
}

trsort키 필드에 따라 한 문자를 다른 문자로 변환하려면 -k, 파일로 출력하고, -o첫 번째() 파일과 두 번째() 파일의 필드를 연결하고 -1, 첫 번째 파일()과 두 번째 -2일부 필드 .-o 1.1,2.1,2.3

관련 정보