มีคำสั่งให้แสดงรายชื่อกลุ่ม Unix ทั้งหมดหรือไม่? [ปิด]


615

ฉันรู้ว่ามี/etc/groupไฟล์ที่แสดงกลุ่มผู้ใช้ทั้งหมด

ฉันต้องการทราบว่ามีคำสั่งง่าย ๆ ในการแสดงรายชื่อกลุ่มผู้ใช้ทั้งหมดแม้จะทำการแจง/etc/groupไฟล์ที่อ่านได้ทั่วโลก ฉันยินดีที่จะสร้างเว็บเพจผู้ดูแลระบบที่แสดงชื่อกลุ่มบัญชี Linux


6
จนถึงตอนนี้เขาได้ลองใช้stackoverflow.com/questions/14059916/…
ott--

2
"ฉันยินดีที่จะสร้างเว็บเพจที่แสดงผู้ใช้ Linux" - คุณพยายามแก้ไขปัญหาอะไร ดูเหมือนว่าบางสิ่งที่อาจทำให้เกิดปัญหาด้านความปลอดภัย (การเปิดเผยรายชื่อผู้ใช้การเปิดเผยข้อมูลรับรอง)

ฉันพยายามยกตัวอย่างง่ายๆ ฉันต้องการเปิด "หน้าระบบของผู้ดูแลระบบเพื่อแสดงชื่อบัญชี Linux ปัจจุบัน" ใน Linux ฉันสามารถค้นหาคำสั่งเพื่อเพิ่มผู้ใช้ลบผู้ใช้เปลี่ยนผู้ใช้ค้นหากลุ่มของผู้ใช้ที่กำหนด แต่ไม่พบคำสั่งเพื่อค้นหาผู้ใช้ด้วยชื่อส่วน ฉันคิดว่าคำถามนั้นไม่เกี่ยวข้องเลย สิ่งที่ฉันสามารถทำได้เพื่อจำบัญชีกลุ่ม Linux คือทำการค้นหาในไฟล์ / etc / group
cavila

คำตอบ:


871

ในการแสดงรายการกลุ่มโลคัลทั้งหมดที่มีผู้ใช้ที่กำหนดให้ใช้คำสั่งนี้:

cut -d: -f1 /etc/group | sort

สำหรับข้อมูลเพิ่มเติม -> กลุ่ม Unix , คำสั่ง Cut , คำสั่ง sort


3
ใช่ MichaelIT ถูกต้องคำสั่งกลุ่มไม่ได้แสดงรายการทุกกลุ่ม ฉันถามสิ่งนี้เพราะไม่แน่ใจว่ามีคำสั่งอย่างง่ายเช่นกลุ่มเพื่อแสดงรายชื่อกลุ่มทั้งหมดหรือแม้แต่คุณภาพอย่างเช่นกลุ่ม [-a | --all] เพื่อแสดงรายการกลุ่มระบบทั้งหมดโดยไม่ต้องทำการสแกนไฟล์
cavila

1
ตกลงดังนั้นตอนนี้คำตอบคือไม่ จำเป็นต้องใช้การแก้ไขข้อความเพื่อกรองไฟล์กลุ่ม
cavila

3
"cut -d: -f1" คืออะไร
zed

5
@zed cutเป็นอีกคำสั่งที่แยกคอลัมน์เฉพาะจากอินพุต ที่นี่ฉันกำลังแยกฟิลด์ 1 ที่คั่นด้วยฟิลด์:
Arpit

267

หากคุณต้องการให้ทุกกลุ่มรู้จักระบบฉันขอแนะนำให้ใช้getent groupแทนการแยกวิเคราะห์/etc/group:

getent group

เหตุผลก็คือในระบบเครือข่ายกลุ่มอาจไม่เพียง แต่อ่านจาก/etc/groupไฟล์ แต่ยังได้รับผ่าน LDAP หรือสมุดหน้าเหลือง (รายการของกลุ่มที่รู้จักมาจากไฟล์กลุ่มโลคัลและกลุ่มที่ได้รับผ่าน LDAP หรือ YP ในกรณีเหล่านี้)

หากคุณต้องการเพียงชื่อกลุ่มคุณสามารถใช้:

getent group | cut -d: -f1

7
สำหรับ usecases บางรายการอาจใช้ชื่อกลุ่มที่เรียงลำดับแล้ว:getent group | cut -d: -f1 | sort
user1364368

2
getent group | cut -d: -f1 | sort | cat -nหากสายหมายเลขที่ต้องการทำ
MLC

จุดที่ดีสำหรับระบบเครือข่ายเช่น LDAP!
Maziyar

50

บน Linux, macOS และ Unix เพื่อแสดงกลุ่มที่คุณอยู่ให้ใช้:

id -Gn

ซึ่งเทียบเท่ากับgroupsยูทิลิตี้ที่ล้าสมัยบน Unix (ตามคู่มือ Unix )

บน macOS และ Unix แนะนำให้ใช้คำสั่งid -pสำหรับการโต้ตอบปกติ

คำอธิบายของพารามิเตอร์:

-G, --groups- พิมพ์รหัสของกลุ่มทั้งหมด

-n, --name- พิมพ์ชื่อแทนหมายเลขสำหรับ-ugG

-p - สร้างเอาต์พุตที่มนุษย์อ่านได้


10
และid -Gn someusernameส่งคืนรายการกลุ่มสำหรับผู้ใช้ที่ระบุ
น่ากลัว

6
id -Gnz | xargs -0 -I% echo %จะแสดงแต่ละกลุ่มในบรรทัดแยกกัน สิ่งนี้มีประโยชน์หากชื่อกลุ่มมีช่องว่าง
Mark Lakata

1
เป็นวิธีการที่groupsล้าสมัย? แหล่งใดบ้าง? ฉันค้นหา "unix groups command ล้าสมัย" แต่ไม่พบสิ่งใด
Franklin Yu

1
@FranklinYu มันในBSD groupsหน้าคู่มือสำหรับ
kenorb

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