답변:
/ 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
n
옵션이 마음에 들지 않았습니다 . column -ts: /etc/passwd
잘 작동했습니다.
머신에 루트 액세스 권한이 있으면 다음을 수행 할 수 있습니다.
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
않습니까?)
나는 이것이 쉬울 것이라고 생각 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
).
/tmp
FHS 상태 때문에, 더 나은 것 /var/tmp
우리가 정말 다시 부팅 닦아되지 않습니다 필요가 없습니다있다.
cut
. 알파벳순으로 표시sort
됩니다. 그룹 이름이 필요한 경우 join을 사용하여 재생하십시오 (실제로 btw의 열 서브 세트 만 표시 할 수 있음).