Bagaimana saya bisa mendaftar semua akun pengguna di terminal?

74

Bagaimana saya bisa mendaftar semua akun pengguna lokal di Terminal (apakah masuk atau tidak?) Perintah usersatau whotidak memberikan informasi ini. Versi OS X adalah 10.6.8.

Saya telah melihat perintah yang disarankan ini - dscacheutil -q group

Tetapi hanya mencantumkan grup pengguna domain dan akun non-lokal.

codecowboy
sumber
1
Sebagai pengguna AIX yang lama, saya sangat merindukan perintah manajemen sistem yang mereka masukkan ke dalam unix mereka. Pengguna akan senang memiliki untuk tujuan ini.
bmike

Jawaban:

68

Bagaimana tentang

dscacheutil -q user | grep -A 3 -B 2 -e uid:\ 5'[0-9][0-9]'
Kevin
sumber
Saya suka opsi ini. Ini mengembalikan banyak akun yang dimulai dengan garis bawah. Adakah cara untuk memfilter ini? misalnya _softwareupdate, _mysql
codecowboy
9
Pipa hasilnya melalui grepdscl . list /Users | grep -v ^_.*
user151019
Sangat keren! Saya harus ingat yang ini.
daviesgeek
5
Ini sangat mudah untuk dikomit juga.
Kelly
41

Coba yang ini. Saya menggunakannya untuk menemukan akun tersembunyi yang hilang.

dscl . list /Users | grep -v '^_'
pengguna41486
sumber
3
Itulah yang dikatakan @Mark di sini .
Emil
apa gunanya akun tersembunyi?
SuperUberDuper
Untuk melihat Anda juga, gunakandscl . list /Users UniqueID | grep -v '^_'
Marián Augerný
Bagaimana jika pengguna tidak ada di sana?
cameronroe
10

Akun pengguna sejak 10.6 dikelola oleh OpenDirectory. File backend terkait dengan pengguna untuk OpenDirectory ada di sini:

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

Menjalankan ls *dalam direktori ini akan menghitung semua pengguna lokal yang terdaftar pada sistem. Eksekusi plutil -p <file>.plistakan memungkinkan Anda membaca beberapa properti untuk akun pengguna tertentu (yaitu jalur direktori home saat ini).

Ini agak tidak berdokumen jadi saya menerima downvotes. Namun, metode ini dapat digunakan untuk memeriksa sistem yang tidak berjalan, dan yang pengguna hanya memiliki gambar disk offline.

antonon
sumber
Saya suka, tetapi diperlukan sudo / root untuk bekerja, pengguna admin std mendapat kesalahan izin. dsclbekerja untuk admin std.
JL Peyret
6

dscacheutil mengembalikan lebih dari sekadar pengguna lokal, misalnya setiap pengguna yang saya tanyakan Layanan Direktori untuk juga ditampilkan.

Saya menemukan ini lebih bermanfaat:

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

Meskipun itu juga mengembalikan suka daemon, nobodydan root.

chymb
sumber
4

JMTCW untuk membuat ulang /etc/passwdsetara baris perintah yang ramah (meskipun tidak dalam urutan yang sama):

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

Atau jika Anda lebih suka output yang dipisahkan ruang (tetapi mem-parsing bidang GECOS akan sedikit lebih rumit:

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

Jika tidak ada direktori home pengguna yang dipindahkan maka ls /usersakan dilakukan. Kecuali itu juga akan daftar direktori seperti 'Dibagikan'.

iskra
sumber
2
Tidak pernah melakukan ini. Ada lebih dari Shareditu yang bisa ada di sana.
hamstergene
-3

Anda juga dapat mengetik:

whoyang memberi tahu Anda siapa yang masuk, dan dari mana asalnya. Berguna jika Anda mencari seseorang yang sebenarnya secara fisik di gedung yang sama dengan Anda, atau di beberapa lokasi tertentu lainnya.

wyang memberitahu Anda siapa yang masuk, dan apa yang mereka lakukan. Sangat berguna: bagian 'idle'. Ini memungkinkan Anda untuk melihat apakah mereka benar-benar duduk di sana mengetik di keyboard mereka saat ini.

Jordan
sumber