แสดงผู้ใช้ทั้งหมดและกลุ่ม / ในทางกลับกัน


70

ฉันรู้ว่าฉันมีกลุ่มและผู้ใช้ที่มีอยู่ แต่ฉันไม่แน่ใจเกี่ยวกับการเชื่อมโยงของพวกเขา มีคำสั่งเชลล์ที่ฉันสามารถใช้เพื่อแสดงรายการผู้ใช้ทั้งหมดหรือทุกกลุ่มและคำสั่งเพื่อแสดงรายการกลุ่ม / ผู้ใช้ทั้งหมดสำหรับผู้ใช้ / กลุ่มที่ระบุหรือไม่?

ดังนั้นสิ่งที่ต้องการshowusersจะแสดงรายการผู้ใช้ทั้งหมดและshowgroups -u thisuserจะแสดงกลุ่มทั้งหมดที่มีthisuserอยู่ในนั้น


ไม่มีคำสั่งดังกล่าว คุณต้องเขียนสคริปต์ด้วยตัวเอง
Chris

แล้วcat /etc/passwd
Sudip Bhandari

คำตอบ:


93

ผู้ใช้ทั้งหมด:

$ getent passwd

ทุกกลุ่ม:

$ getent group

กลุ่มทั้งหมดที่มีผู้ใช้เฉพาะ:

$ getent group | grep username

ฉันพบว่ามีผู้ใช้ชื่อspeech-dispatcherที่เป็นของกลุ่มเสียง (ตามgroups speech-dispatcher) แต่มันไม่ได้อยู่ภายใต้getent groupคำสั่ง! อะไรคือปัญหา?
PHP Learner

3
@PHPLearner หากคุณมีคำถามอื่นโปรดโพสต์คำถามไม่ใช่ความคิดเห็น
EEAA

+1 เนื่องจากสิ่งนี้จะแสดงรายการผู้ใช้ / กลุ่มที่ไม่พบใน/etc/passwd& /etc/groupไฟล์ดั้งเดิมเช่นเมื่อระบบถูกกำหนดค่าให้ใช้ไดเรกทอรีกลางเช่น NIS และ LDAP หรือฐานข้อมูลผู้ใช้ / กลุ่มทางเลือกอื่น ๆ ตราบใดที่สนับสนุนการแจงนับผู้ใช้ / กลุ่ม .
HBruijn

สิ่งนี้จะไม่ส่งคืนผู้ใช้และกลุ่มทั้งหมดในการกำหนดค่า ldap หรือ sssd หากการแจงนับถูกปิดใช้งาน
Jens Timmerman

16

รายชื่อผู้ใช้และกลุ่ม:

for user in $(awk -F: '{print $1}' /etc/passwd); do groups $user; done

รายชื่อกลุ่มและผู้ใช้:

cat /etc/group | awk -F: '{print $1, $3, $4}' | while read group gid members; do
    members=$members,$(awk -F: "\$4 == $gid {print \",\" \$1}" /etc/passwd);
    echo "$group: $members" | sed 's/,,*/ /g';
done

1
ในขณะที่อาจจะใช้งานได้ดูเหมือนว่าซับซ้อนไปหน่อยใช่ไหมเมื่อมีคำสั่ง one-shot ง่ายๆที่ดีอย่างสมบูรณ์ในการทำเช่นนี้
EEAA

แน่นอนมันจะไม่ได้รับอะไรเลยที่อาศัยอยู่ในพื้นที่เก็บข้อมูลส่วนกลาง และนั่นคือข้อมูลที่คุณต้องการเห็นอย่างแน่นอน
Magellan

ยอดเยี่ยมมีประโยชน์มากมันจะดีกว่าที่จะพูดถึงว่าพวกเขาแยกคำสั่ง
Mian Asbat Ahmad

5

หากคุณไม่สนใจผู้ใช้ระยะไกลเช่น LDAP หรือ NIS เพื่อแสดงรายชื่อผู้ใช้และกลุ่มที่เกี่ยวข้องในวิธีง่ายๆ:

cut -d: -f1 /etc/passwd | xargs groups

เอาท์พุท;

root : root
myuser : root www-data fuse 
anotheruser : anotheruser   cdrom floppy audio dip video plugdev scanner bluetooth netdev

1
ปัญหานี้มีปัญหาเช่นเดียวกับคำตอบของ Chang โดยจะไม่สนใจผู้ใช้ / กลุ่มที่มีต้นกำเนิดในฐานข้อมูลเช่น LDAP, NIS, ฯลฯ
MadHatter

นี่เป็นข้อมูลที่ละเอียดมากในรูปแบบที่ชัดเจนอย่างไม่น่าเชื่อดังนั้นจึงเป็นขั้นตอนแรกที่มีประโยชน์ มันช่วยเขย่าเบา ๆ หน่วยความจำของฉันเกี่ยวกับไวยากรณ์ของ / etc / group และ / etc / passwd!
Chris Woods

3

รายชื่อผู้ใช้ทั้งหมด

cut -d':' -f 1 /etc/passwd

หรือ

awk -F ':' '{print $1}' /etc/passwd

ในขณะที่cat / etc / passwdแสดงผู้ใช้ทั้งหมด (และสิ่งอื่น ๆ อีกมากมาย) cut -d ':' -f 1เป็นวิธีที่ง่ายในการแยกแต่ละบรรทัดด้วย ':' เป็นตัวคั่นและแยกเฉพาะฟิลด์แรก (ผู้ใช้ ) ค่อนข้างเหมือนกันกับรุ่น awk

รายชื่อกลุ่มทั้งหมด

cut -d':' -f 1 /etc/group

หรือ

awk -F ':' '{print $1}' /etc/group

คาดเดาสิ่งที่คล้ายกันมากกับรายชื่อผู้ใช้ เพียงแยกวิเคราะห์/ etc / groupแทน

อีกวิธีหนึ่งที่น่าสนใจอาจจะใกล้ชิดกับสิ่ง OP อยากเป็นcompgen ไม่แน่ใจเกี่ยวกับปัญหาความเข้ากันได้

compgen -u
compgen -g

2
สวัสดี Elliot Baily ยินดีต้อนรับสู่ Server Fault! โปรดทราบว่าคำถามนี้มีอายุมากกว่า 5 ปีและมีคำตอบที่ถูกต้องและเป็นที่ยอมรับแล้ว นอกจากนี้โปรดทราบว่าโซลูชันของคุณจะทำงานเฉพาะเมื่อผู้ใช้ถูกเก็บไว้ใน / etc / passwd; คำตอบที่ยอมรับยังใช้ได้กับฐานข้อมูลผู้ใช้อื่น ๆ (เช่น NIS หรือ LDAP) หากคุณต้องการที่จะตอบคำถามเก่า ๆ (ซึ่งดีมาก!) คุณอาจต้องการดูรายการคำถามที่ยังไม่ได้ตอบ - มีคำถามมากมายที่มองหาความรัก!
marcelm

-1

สำหรับเดเบียน

cat /etc/passwd # show all users
cat /etc/group # show all groups
cat /etc/passwd | grep group # show all users with specified group

2
ในทางตรงกันข้ามกับได้รับการยอมรับแล้วนี้ไม่ได้แสดงรายการผู้ใช้ / กลุ่มที่มาจากฐานข้อมูลผู้ใช้ระยะไกลเช่น LDAP, NIS ฯลฯ ....
HBruijn

-2

แบบนี้:

sudo cat /etc/gshadow |grep group
sudo cat /etc/gshadow |grep username

1
เลขที่/etc/gshadowไม่ได้มีสมาชิกในกลุ่ม ( /etc/groupไม่) และตอบรับจาก 4.5 ปีที่ผ่านมามากขึ้นโดยทั่วไปแล้วในขณะที่มันยังจับกลุ่มระยะไกล
สเวน

-2

ใช้คำสั่งนี้เพื่อรับกลุ่มและผู้ใช้ทั้งหมดในกลุ่มนั้น

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