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