ฉันจะแสดงรายการบัญชีผู้ใช้ทั้งหมดในเครื่องเทอร์มินัลได้อย่างไร


74

ฉันจะแสดงรายการบัญชีผู้ใช้ภายในทั้งหมดใน Terminal ได้อย่างไร (ไม่ว่าจะเข้าสู่ระบบหรือไม่?) คำสั่ง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
ไพพ์ผลลัพธ์ผ่าน grepdscl . list /Users | grep -v ^_.*
user151019

เจ๋งมาก! ฉันจะต้องจำอันนี้
daviesgeek

5
นี่เป็นสิ่งที่ง่ายที่จะให้ความทรงจำเช่นกัน
Kelly

41

ลองอันนี้. ฉันใช้เพื่อค้นหาบัญชีที่ซ่อนอยู่ที่หายไป

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

3
นั่นเป็นสิ่งที่แม่นยำ @ Mark กล่าวว่าที่นี่
Emil

จุดประสงค์ของบัญชีที่ซ่อนอยู่คืออะไร
SuperUberDuper

หากต้องการดู uid เช่นกันให้ใช้dscl . list /Users UniqueID | grep -v '^_'
MariánČerný

เกิดอะไรขึ้นถ้าผู้ใช้ไม่ได้มี?
cameronroe

10

บัญชีผู้ใช้ตั้งแต่ 10.6 กำลังถูกจัดการโดย OpenDirectory ไฟล์แบ็คเอนด์ที่เกี่ยวข้องกับผู้ใช้สำหรับ OpenDirectory อยู่ที่นี่:

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

การดำเนินการls *ในไดเรกทอรีนี้จะระบุผู้ใช้ภายในทั้งหมดที่ลงทะเบียนในระบบ การดำเนินการplutil -p <file>.plistจะช่วยให้คุณสามารถอ่านคุณสมบัติบางอย่างสำหรับบัญชีผู้ใช้ที่ระบุ (เช่นเส้นทางไดเรกทอรีบ้านปัจจุบัน)

นี่ค่อนข้างไม่มีเอกสารดังนั้นฉันจึงยอมรับ downvotes อย่างไรก็ตามวิธีนี้สามารถใช้เพื่อตรวจสอบระบบที่ไม่ได้ทำงานอยู่และผู้ใช้มีดิสก์อิมเมจออฟไลน์เท่านั้น


ฉันชอบมัน แต่มันต้องใช้ sudo / root ในการทำงานผู้ใช้ที่เป็นผู้ดูแลระบบ std ได้รับข้อผิดพลาดในการอนุญาต dsclทำงานสำหรับผู้ดูแลระบบมาตรฐาน
JL Peyret

6

dscacheutil ส่งคืนมากกว่าผู้ใช้ภายในเท่านั้นตัวอย่างเช่นผู้ใช้ใด ๆ ที่ฉันได้สอบถามบริการไดเรกทอรีเพื่อแสดงเช่นกัน

ฉันพบว่ามีประโยชน์มากกว่านี้:

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

แม้ว่ามันจะยังส่งกลับชอบของdaemon, และnobodyroot


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

-3

คุณยังสามารถพิมพ์:

whoซึ่งจะบอกคุณว่าใครเข้าสู่ระบบและพวกเขามาจากไหน มีประโยชน์หากคุณกำลังมองหาใครสักคนที่อยู่ในอาคารเดียวกันกับคุณหรือในสถานที่อื่น ๆ

wซึ่งจะบอกคุณว่าใครเข้าระบบและสิ่งที่พวกเขากำลังทำ มีประโยชน์อย่างยิ่ง: ส่วน 'ว่าง' วิธีนี้ช่วยให้คุณเห็นว่าพวกเขากำลังนั่งอยู่ที่นั่นจริง ๆ พิมพ์ไปที่แป้นพิมพ์ของพวกเขาในขณะนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.