터미널의 모든 사용자 계정을 어떻게 나열합니까?


74

터미널에 모든 로컬 사용자 계정을 나열하는 방법 (로그인 여부에 관계없이) 명령 users또는 who이 정보를 제공하지 않습니다. OS X 버전은 10.6.8입니다.

이 제안 된 명령을 보았습니다. dscacheutil -q group

그러나 도메인 사용자 그룹과 로컬이 아닌 계정 만 나열합니다.


1
오랫동안 AIX 사용자로서, 그들이 유닉스에 구운 시스템 관리 명령을 놓쳤습니다. lsuser 는이 목적으로 사용하는 것이 좋을 것입니다.
bmike

답변:


68

어때요?

dscacheutil -q user | grep -A 3 -B 2 -e uid:\ 5'[0-9][0-9]'

이 옵션이 마음에 듭니다. 그러나 밑줄로 시작하는 많은 계정을 반환합니다. 이것을 걸러 낼 방법이 있습니까? 예 : _softwareupdate, _mysql
codecowboy

9
파이프 그렙을 통해 결과dscl . list /Users | grep -v ^_.*
user151019

아주 멋지다! 나는 이것을 기억해야 할 것이다.
daviesgeek 21시 58 분

5
이것도 메모리에 커밋하기가 쉽습니다.
Kelly


10

10.6 이후의 사용자 계정은 OpenDirectory에서 관리합니다. OpenDirectory 사용자와 관련된 백엔드 파일은 다음과 같습니다.

/var/db/dslocal/nodes/Default/users

ls *이 디렉토리에서 실행 하면 시스템에 등록 된 모든 로컬 사용자가 열거됩니다. 실행 plutil -p <file>.plist하면 지정된 사용자 계정 (예 : 현재 홈 디렉토리 경로)의 일부 속성을 읽을 수 있습니다.

이것은 다소 문서화되어 있지 않기 때문에 다운 보트를 수락합니다. 그러나이 방법을 사용하여 실행 중이 아니며 사용자에게 오프라인 디스크 이미지 만있는 시스템을 검사 할 수 있습니다.


마음에 들지만 작동하려면 sudo / root가 필요했습니다. std admin 사용자에게 권한 오류가 발생했습니다. dscl표준 관리자에서 작동합니다.
JL Peyret

6

dscacheutil 로컬 서비스 이상을 반환합니다 (예 : 디렉토리 서비스를 요청한 사용자도 표시).

나는 이것이 더 유용하다는 것을 알았다.

dscl . list /Users | grep -v "^_"

daemon, nobody및 의 좋아요도 반환합니다 root.


4

JMTCW는 명령 행에 /etc/passwd상응 하는 명령을 다시 작성합니다 (동일한 순서는 아니지만).

dscacheutil -q user |
    paste -d " "  - - - - - - - - |
    sed 's/^name: //;s/ [^[:space:]]*: /:/g'

또는 공백으로 구분 된 출력을 선호하는 경우 (그러나 GECOS 필드 구문 분석은 조금 더 복잡합니다.

dscacheutil -q user |
    cut -d: -f2 |\
    paste -d " "  - - - - - - - -

2

사용자 홈 디렉토리가 이동되지 않은 경우 ls /users수행됩니다. 제외하면 '공유'와 같은 디렉토리도 나열됩니다.


2
절대 이러지 마 거기에있을 Shared수있는 것보다 훨씬 많은 것이 있습니다.
hamstergene 2009 년

-3

다음을 입력 할 수도 있습니다.

who누가 로그온했는지, 어디에서 왔는지 알려줍니다. 실제로 같은 건물에 있거나 다른 특정 위치에있는 사람을 찾는 경우 유용합니다.

w누가 로그인했는지, 무엇을하고 있는지 알려줍니다. '유휴'부분이 특히 유용합니다. 이를 통해 현재 키보드로 타이핑 할 수 있는지 확인할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.