วิธีแสดงรายการผู้ใช้ทั้งหมดในกลุ่มบน Linux
เผยแพร่แล้ว: 2022-08-29บน Linux ไฟล์มีสิทธิ์สามชุด หนึ่งชุดสำหรับกลุ่มของไฟล์ ก่อนที่คุณจะจัดสรรไฟล์ให้กับกลุ่ม คุณอาจต้องการตรวจสอบว่าใครเป็นสมาชิกกลุ่ม
สิทธิ์ของไฟล์และไดเรกทอรี
ไฟล์และไดเร็กทอรีบน Linux มีชุดสิทธิ์สำหรับเจ้าของ ชุดอื่นสำหรับกลุ่มที่ไฟล์ได้รับการจัดสรร และสิทธิ์สำหรับทุกคนที่ไม่ได้อยู่ในหนึ่งในสองหมวดหมู่ก่อนหน้านี้
สิทธิ์แต่ละชุดกำหนดว่าสมาชิกของหมวดหมู่นั้นสามารถอ่าน เขียน หรือดำเนินการไฟล์ได้หรือไม่ ในกรณีของไดเร็กทอรี การดำเนินการดำเนินการเท่ากับความสามารถในการ cd
ลงในไดเร็กทอรี
กลุ่มเริ่มต้นสำหรับไฟล์หรือไดเร็กทอรีคือกลุ่มเริ่มต้นของเจ้าของ มักจะเป็นคนที่สร้างมันขึ้นมา สิทธิ์ของกลุ่มใช้เพื่ออนุญาตให้กลุ่มผู้ใช้ควบคุมการเข้าถึงไฟล์และไดเร็กทอรีของสมาชิกคนอื่นๆ ในกลุ่มนั้น
ตัวอย่างเช่น คุณอาจมีทีมนักพัฒนา ทีมเอกสาร ทีมวิจัย และอื่นๆ คุณสามารถเพิ่มสมาชิกของแต่ละทีมในกลุ่มที่มีชื่อเหมาะสม เพื่อช่วยในการทำงานร่วมกัน ผู้ใช้สามารถอยู่ในหลายกลุ่มพร้อมกัน
เป็นแผนงานที่เรียบง่ายแต่แข็งแกร่ง แต่ถ้าไฟล์ของคุณมีความละเอียดอ่อน คุณอาจรู้สึกมีความสุขมากขึ้นในการตรวจสอบว่าใครเป็นสมาชิกของกลุ่ม ก่อนที่คุณจะแบ่งปันงานของคุณกับพวกเขา มีหลายวิธีในการทำเช่นนี้ แต่โปรดทราบ สองวิธีที่แนะนำบ่อยที่สุดเป็นปัญหา
ที่เกี่ยวข้อง: วิธีใช้คำสั่ง chgrp บน Linux
ไฟล์ /etc/groups
ไฟล์ “/etc/group” ประกอบด้วยรายการกลุ่มและสมาชิกกลุ่มที่คั่นด้วยเครื่องหมายทวิภาค “ :
” แต่ละบรรทัดมีสี่ฟิลด์
- Name : ชื่อเฉพาะของกลุ่ม
- รหัสผ่าน : ไม่ได้ใช้ สิ่งนี้จะถือ "x" เสมอ
- รหัสกลุ่ม : ตัวระบุกลุ่มเฉพาะ
- ผู้ใช้ : รายชื่อสมาชิกของกลุ่มที่คั่นด้วยเครื่องหมายจุลภาค รายการมักจะว่างเปล่าสำหรับบัญชีระบบและภูต
ในการดัมพ์เนื้อหาของไฟล์ไปที่หน้าต่างเทอร์มินัล คุณสามารถใช้ cat
ได้ แต่จะสะดวกกว่าที่จะเลื่อนดูเนื้อหาของไฟล์โดยใช้ less
.
น้อยกว่า /etc/group
รายการส่วนใหญ่ที่ด้านบนสุดของรายการไม่มีสมาชิกแม้ว่ากลุ่ม "adm" จะมีสองกลุ่มและกลุ่ม "cdrom" จะมีหนึ่งกลุ่ม
หากเราต้องการค้นหากลุ่มที่มีผู้ใช้รายใดรายหนึ่งอยู่ เราสามารถใช้ grep
เพื่อค้นหารายการด้วยชื่อบัญชีผู้ใช้ของพวกเขา นี่ไม่ใช่งานของเราในมือ เราต้องการเห็นทุกคนที่เป็นสมาชิกของกลุ่ม ไม่ใช่กลุ่มที่มีเพียงคนเดียว แต่ก็เป็นอุทาหรณ์ให้เราได้ดู
grep "เดฟ" /etc/group
รายการที่มีสตริง “dave” แสดงรายการสำหรับเรา และซ่อนตัวอยู่ท่ามกลางพวกเขาเป็นสัญญาณว่าสิ่งต่าง ๆ อาจไม่ง่ายอย่างที่เราคิด
เมื่อมีการเพิ่มผู้ใช้ใน Linux การดำเนินการเริ่มต้นคือการจัดกลุ่มที่มีชื่อเดียวกับบัญชีผู้ใช้ นี่คือกลุ่ม หลัก ของพวกเขา กลุ่มอื่นๆ ที่เพิ่มเข้าไปจะเรียกว่ากลุ่ม รอง
ปัญหาคือผู้ใช้ไม่ได้เป็นสมาชิกของ กลุ่มหลัก นั่นเป็นสาเหตุที่กลุ่ม “เดฟ” ไม่แสดงสมาชิกใดๆ แม้ว่าผู้ใช้ “เดฟ” จะเป็นสมาชิกของกลุ่มนั้นก็ตาม
แน่นอน ผู้ดูแลระบบสามารถเปลี่ยนกลุ่มหลักของผู้ใช้ใดๆ เป็นกลุ่มอื่นได้ นั่นหมายความว่าผู้ใช้สามารถเป็นสมาชิกของกลุ่มใดก็ได้ แต่จะไม่อยู่ในรายการดังกล่าวในไฟล์ "/ etc / group" นั่นเป็นประเด็นหนึ่ง
ปัญหาที่สองคือไฟล์ “/etc/group” ไม่ใช่แหล่งความจริงเพียงแหล่งเดียว การติดตั้ง Linux สมัยใหม่อาจเก็บข้อมูลผู้ใช้และกลุ่มไว้ในที่ต่างๆ มากกว่า "/etc/passwd" และ "/etc/group" โดยเฉพาะอย่างยิ่งในสถานการณ์ขององค์กรที่มีการปรับใช้บริการต่างๆ เช่น Lightweight Directory Access Protocol มองแค่ที่เดียวอาจไม่เห็นภาพรวม
ในสถานการณ์ทดสอบของเรา เราสร้างกลุ่มสี่กลุ่มสำหรับแผนกพัฒนา พวกเขาคือ:
- รีสตีม : ทีมวิจัย.
- devteam : ทีมพัฒนา
- pvqteam : ทีมงานตรวจสอบสินค้าและคุณภาพ
- docteam : ทีมเอกสาร
เราเพิ่มคนในทีมเหล่านี้ บางคนอยู่ในมากกว่าหนึ่งทีม หากเราเปิดไฟล์ “/etc/group” ให้ less
และเลื่อนไปที่ด้านล่างของไฟล์ เราจะเห็นกลุ่มและสมาชิกกลุ่มใหม่ อย่างน้อย สมาชิกจำนวนมากเท่าที่ไฟล์ “/ etc / group” รู้
หากเราต้องการแยกกลุ่มเดียว เราสามารถค้นหาโดยใช้ grep
คาเร็ต “ ^
” แทนจุดเริ่มต้นของบรรทัด
grep "^devteam" /etc/group
ซึ่งจะแยกรายการ "devteam" ออกจากไฟล์และแสดงรายการสมาชิกกลุ่มทั้งหมด หรือไม่?
คำสั่งที่ได้รับ
คำสั่ง getent
ตรวจสอบหลายฐานข้อมูลสำหรับข้อมูลกลุ่มผู้ใช้ ไม่ใช่แค่ “/etc/group” เราจะใช้ getent
เพื่อแสดงให้เราเห็นกลุ่มผู้ใช้
รับกลุ่ม
การใช้ getent
กับตัวเลือก group
จะทำให้เกิด—บนเครื่องทดสอบนี้—ให้ผลลัพธ์เหมือนกับการใช้ไฟล์ “/ etc/group” นั่นเป็นเพราะว่าเราไม่ได้ใช้ LDAP หรือบริการตั้งชื่อแบบรวมศูนย์อื่นๆ ดังนั้นจึงไม่มีแหล่งอื่นสำหรับการ getent
ไม่แปลกใจเลยที่ผลลัพธ์จะนับรวมกับผลลัพธ์จากไฟล์ “/etc/group” บางทีสิ่งที่เราเห็นจริงๆ ก็คือความเป็นจริงของสถานการณ์นั้น บางทีทุกอย่างก็ตรงไปตรงมา และในคอมพิวเตอร์เครื่องนี้ สิ่งที่คุณเห็นคือสิ่งที่คุณได้รับ ขอสงวนการตัดสินว่า
คำสั่ง getent
สามารถดูกลุ่มเดียวสำหรับเรา เราจะดูที่กลุ่ม "devteam"
getent กลุ่ม devteam
เราได้ผลลัพธ์เหมือนเดิมทุกประการ มีวิธีขุดให้ลึกกว่านั้น
ที่เกี่ยวข้อง: วิธีการแสดงรายการผู้ใช้ใน Linux
คำสั่งฝา
คำสั่ง lid
เป็นส่วนหนึ่งของชุดเครื่องมือ libuser
ติดตั้งแล้วในคอมพิวเตอร์ทดสอบ Fedora 36 ของเรา แต่ต้องติดตั้งบน Ubuntu 22.04 และ Manjaro 21
นอกจากนี้ คำสั่งนี้เรียกว่า lid
บน Fedora และ Manjaro แต่บน Ubuntu คุณต้องใช้ libuser-lid
ในการติดตั้งคำสั่งบน Ubuntu ให้พิมพ์:
sudo apt ติดตั้ง libuser
บน libuser
มีการติดตั้ง libuser จาก AUR ดังนั้น คุณจะต้องใช้ตัวช่วย AUR ที่คุณชื่นชอบ เราใช้ yay
เย้ libuser
คุณสามารถใช้ libuser-lid
เพื่อแสดงข้อมูลกลุ่มเกี่ยวกับกลุ่มหรือผู้ใช้ หากต้องการแสดงกลุ่มที่บุคคลนั้นอยู่ ให้ส่งชื่อบัญชีผู้ใช้ของพวกเขาในบรรทัดคำสั่ง บน Fedora และ Manjaro อย่าลืมใช้ lid
แทน libuser-lid
sudo libuser-lib dave
หากต้องการดูสมาชิกของกลุ่ม ให้ใช้ตัวเลือก -g
(กลุ่ม) พร้อมกับชื่อกลุ่ม
sudo libuser-lid -g devteam
ดูเถิด ผู้ใช้ที่ชื่อ “ฟรานซิส” ได้ปรากฏตัวขึ้นเป็นสมาชิกของรายการ นี่เป็นครั้งแรกที่เราได้เห็นเขา เขาไม่อยู่ใน "/etc/group" และ getent
ก็ไม่พบเขาเช่นกัน
ลองดูผู้ใช้สองสามรายด้วยคำสั่ง groups
กลุ่ม abigail
กลุ่มเฮย์เดน
กลุ่ม ฟรานซิส
- ผู้ใช้ "abigail" อยู่ในกลุ่มที่เรียกว่า "abigail" และอีกสองกลุ่มคือ "reteam" และ "devteam"
- ผู้ใช้ “เฮย์เดน” อยู่ในกลุ่มที่เรียกว่า “เฮย์เดน” และอีกสองกลุ่มคือ “pvqteam” และ “docteam”
- ผู้ใช้ “francis” อยู่ในกลุ่มเดียว คือกลุ่ม “devteam” เป็นที่น่าสังเกตว่าพวกเขา ไม่ อยู่ในกลุ่มชื่อ “ฟรานซิส”
เราทราบดีว่าผู้ใช้ทุกคนต้องเป็นสมาชิกของกลุ่มหลัก และโดยค่าเริ่มต้น กลุ่มหลักจะมี GID และชื่อที่ตรงกับ UID ของผู้ใช้และชื่อบัญชี ดูเหมือนว่าผู้ใช้ "francis" จะแตกต่างออกไป
ลองใช้คำสั่ง id
และดูว่า UID และ GID บอกอะไรเรา
id abigail
ไอดี ฟรานซิส
ผู้ใช้ “abigail” มี UID 1002 และ GID 1002 อยู่ในสามกลุ่ม หนึ่งในนั้นเรียกว่า “abigail” มี GID เท่ากับ 1002 นี่คือกลุ่มหลัก เริ่มต้น
ผู้ใช้ “francis” มี GID เท่ากับ 1,019 ซึ่งตรงกับ GID ของกลุ่ม “devteam” ผู้ใช้รายนี้ได้รับการกำหนดกลุ่มหลักใหม่ หรือกลุ่ม "devteam" ถูกกำหนดเป็นกลุ่มหลักเมื่อผู้ใช้รายนี้ถูกเพิ่มลงในระบบ
ไม่ว่าจะเป็นตัวใด มีเพียง libuser-lid
ตรวจพบและรายงานการมีอยู่ในกลุ่ม "devteam"
ปีศาจในรายละเอียด
ดังนั้นสิ่งสำคัญคือต้องดูรายละเอียดของแท้
Groups เป็นวิธีที่ยอดเยี่ยมในการทำงานร่วมกัน ตราบใดที่คุณรู้ว่าคุณกำลังเปิดมันกับใคร
ที่เกี่ยวข้อง: วิธีเปลี่ยนข้อมูลผู้ใช้ด้วย chfn และ usermod บน Linux