Ubuntu 시스템의 모든 사용자를 나열하는 사용자 친화적 명령?


22

Ubuntu 시스템의 콘솔에 사용자를 나열하는 데 사용할 수있는 사용하기 쉬운 명령이 있습니까?

나는 때 cat /etc/passwd나는 사용자의 하드 읽기 목록을 가져옵니다. 항목이 열로 정렬되고 그룹 이름 옆에 괄호 안에 그룹 이름이있는 알파벳순 목록을 보는 것이 좋습니다.


2
글쎄, / etc / passwd 열로 배열되어 있습니다. 열이 몇 개만 표시되도록하려면 아마도을 사용하십시오 cut. 알파벳순으로 표시 sort됩니다. 그룹 이름이 필요한 경우 join을 사용하여 재생하십시오 (실제로 btw의 열 서브 세트 만 표시 할 수 있음).
njsg 2013

답변:


27

/ 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

고마워,이 명령은 내가 원하는 것을합니다. 초보자에게는 이것이 매우 어려운 일입니다 ... 나는 그들을 위해 별칭을 만드는 방법을 배워야한다고 생각합니다.
M. Dudley

Centos 열에서는 n옵션이 마음에 들지 않았습니다 . column -ts: /etc/passwd잘 작동했습니다.
user1014251

9

머신에 루트 액세스 권한이 있으면 다음을 수행 할 수 있습니다.

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않습니까?)


"나는 독자에게 연습으로 남겨 ...":
엠마누엘 버그

1

우분투에서는 다음과 같습니다.

$ f1, f2 ..., $ f7에 저장된 / etc / passwd의 7 개 필드

while IFS=: read -r f1 f2 f3 f4 f5 f6 f7
do
 echo "User $f1 use $f7 shell and stores files in $f6 directory."
done < /etc/passwd

1

내가하고 내 목적을 위해 작동하는 것은

ls /home

물론, 그것은 실제로 당신에게 사용자의 목록을 제공하지는 않지만 사용자의 홈 디렉토리와 과거의 사용자 디렉토리 목록을 제공하지만 터미널이 존재하지 않는 사용자에 대해 수행하려는 명령은 당신에게 알려주고 제거 할 수있는 힌트가 될 수 있습니다 사용자가 없거나 이동 한 홈 파일!


나는 이것을 좋아한다. 기본 수준에서 작업을 수행합니다.
aalaap

0

나는 이것이 쉬울 것이라고 생각 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
}

tr;를 사용 하여 문자를 다른 문자로 번역하십시오 . sort키 필드에 따라 -k파일로 출력 -o; 제 (필드와 관련하여 가입 -1)과 제 ( -2제 파일 ()에서 파일 출력 특정 필드 -o 1.1뿐만 아니라 제 등) ( ,2.1,2.3).


참고 /tmpFHS 상태 때문에, 더 나은 것 /var/tmp우리가 정말 다시 부팅 닦아되지 않습니다 필요가 없습니다있다.
strugee September
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.