สั่งให้แสดงรายการผู้ใช้ทั้งหมดด้วย UID หรือไม่


15

ฉันจะแสดงรายการผู้ใช้ทั้งหมดพร้อมกับ UID ของพวกเขาได้อย่างไร ฉันต้องการทำสิ่งนี้จากสถานี


cat / etc / passwd
Panther

คำตอบ:


17

รายการผู้ใช้ทั้งหมดที่มี/homeโฟลเดอร์:

awk -F: '/\/home/ {printf "%s:%s\n",$1,$3}' /etc/passwd

หรือผู้ใช้ทั้งหมดที่มีUID >= 1000:

awk -F: '($3 >= 1000) {printf "%s:%s\n",$1,$3}' /etc/passwd

การรวมกัน

awk -F: '/\/home/ && ($3 >= 1000) {printf "%s:%s\n",$1,$3}' /etc/passwd

หรือสำหรับรายการทั้งหมด

awk -F: '{printf "%s:%s\n",$1,$3}' /etc/passwd

ข้อมูลเพิ่มเติมที่นี่


10

คุณสามารถค้นหาได้ง่ายเพียงแค่ใช้cut:

cut -d: -f1,3 /etc/passwd
  • -d:กำหนดตัวคั่นเป็น:สำหรับcut

  • -f1,3แยกฟิลด์ 1 และ 3 ที่คั่นด้วย:จาก/etc/passwdไฟล์เท่านั้น

ตรวจสอบman cutเพื่อรับแนวคิดเพิ่มเติม

ตัวอย่าง:

$ cut -d: -f1,3 /etc/passwd
root:0
daemon:1
bin:2
sys:3
sync:4
games:5
......

หากคุณได้ldapกำหนดค่าเพื่อรวมldapผู้ใช้ในผลลัพธ์:

getent passwd | cut -d: -f1,3

1
คุณควรใช้getent passwdแทน / etc / passwd เนื่องจากตัวหลังจะไม่รวมผู้ใช้ ldap
Daenyth

@Denenyth คำตอบแรกของฉันคือที่จริงแล้วจากนั้นเพื่อความเรียบง่าย (และไม่พิจารณาldap) ฉันได้ย้ายไปหนึ่งปัจจุบัน te.. หนึ่งแก้ไขไป :)
heemayl

1

อีกทางเลือกหนึ่งในการแสดงรายการผู้ใช้ทั้งหมดรวมถึงข้อมูล UID และ GID

for user in $(cat /etc/passwd | cut -f1 -d":"); do id $users; done 

ไชโย


0

เนื่องจากคุณพยายามที่จะแสดงรายการ UID และชื่อผู้ใช้คำสั่งด้านล่างจะทำงานได้ดีที่สุดบน Solaris พวกเขามีสอง awk

awk -F: '($ 3> = 1,000) {printf "% s:% s", $ 1, $ 3}' / etc / passwd


0

ฉันพบวิธีที่ง่ายที่สุดคือการมี webmin บนเซิร์ฟเวอร์ของคุณและไปที่ระบบ> ผู้ใช้และกลุ่มและที่นั่นคุณมีรายการที่จัดรูปแบบอย่างสวยงามพร้อมชื่อผู้ใช้และกลุ่มทั้งหมดที่มี uid's โฮมไดเร็กตอรี่เป็นต้น

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