วิธีแสดงรายการผู้ใช้ใน Linux

เผยแพร่แล้ว: 2022-06-25
แล็ปท็อป Linux แสดง bash prompt
fatmawati achmad zaenuri/Shutterstock.com

Linux เป็นระบบปฏิบัติการที่มีผู้ใช้หลายคน ดังนั้นการสร้างบัญชีผู้ใช้จำนวนมากจึงเป็นเรื่องง่าย เมื่อเวลาผ่านไป การติดตามว่าต้องใช้บัญชีใดเป็นเรื่องง่าย รายชื่อบัญชีผู้ใช้ช่วยให้คุณจัดการได้

บัญชีผู้ใช้

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

ในระบบที่ไม่ว่าง คุณจะลืมได้ง่ายว่าบัญชีใดที่คุณสร้าง และบัญชีใดที่ไม่ต้องการอีกต่อไป จากมุมมองด้านความปลอดภัย ไม่ควรรักษาบัญชีผู้ใช้ที่คุณไม่ต้องกำหนดค่าและเข้าถึงได้บนคอมพิวเตอร์ของคุณอีกต่อไป คุณควรลบผู้ใช้เหล่านั้น

แม้ว่าคุณจะไม่มีบุคคลอื่นใช้คอมพิวเตอร์ของคุณ คุณก็อาจสร้างบัญชีบางบัญชีเพื่อเรียนรู้วิธีการใช้งาน หรือเพื่อเรียนรู้และฝึกฝนกระบวนการดูแลระบบ

วิธีลบผู้ใช้บน Linux (และลบทุกร่องรอย)
ที่เกี่ยวข้อง วิธีการลบผู้ใช้บน Linux (และลบทุกร่องรอย)

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

แสดงรายการผู้ใช้ด้วยคำสั่ง cat

รายชื่อผู้ใช้ที่กำหนดค่าไว้จะคงอยู่พร้อมกับข้อมูลเกี่ยวกับผู้ใช้แต่ละรายในไฟล์ “/etc/passwd” นี่คือไฟล์ข้อความที่ผู้ใช้ทั่วไปสามารถแสดงรายการไปที่หน้าต่างเทอร์มินัล คุณไม่จำเป็นต้องใช้ sudo เพื่อค้นหาไฟล์ “/etc/passwd”

วิธีเปลี่ยนข้อมูลผู้ใช้ด้วย chfn และ usermod บน Linux
ที่เกี่ยวข้อง วิธีการเปลี่ยนข้อมูลผู้ใช้ด้วย chfn และ usermod บน Linux

เราสามารถใช้คำสั่ง cat เพื่อส่งเนื้อหาของไฟล์ “/ etc / passwd” ไปยังหน้าต่างเทอร์มินัล นี่จะแสดงเนื้อหาทั้งหมดของไฟล์ ซึ่งหมายความว่าคุณจะเห็นรายการสำหรับบัญชีผู้ใช้ที่เป็นของกระบวนการและระบบ ไม่ใช่ของบุคคล

 แมว /etc/passwd 

การส่งเนื้อหาของไฟล์ /etc/passwd ไปยังหน้าต่างเทอร์มินัลด้วย cat

มีรายงานข้อมูลที่หนาแน่นสำหรับบัญชีผู้ใช้แต่ละบัญชี

เนื้อหาของไฟล์ /etc/passwd

ข้อมูลสำหรับบัญชีผู้ใช้ที่เรียกว่า “dave” มีข้อมูลเหล่านี้ โดยมีเครื่องหมายทวิภาค “ : ” คั่นกลาง

  • dave : ชื่อบัญชีผู้ใช้ มักจะเป็นชื่อของผู้เป็นเจ้าของบัญชี
  • x : ครั้งหนึ่ง นี่ถือเป็นรหัสผ่านของบัญชี ปัจจุบัน รหัสผ่านถูกเก็บไว้ในไฟล์ “/etc/shadow” “x” หมายถึงรหัสผ่านอยู่ในไฟล์นั้น
  • 1000 : ID ผู้ใช้สำหรับบัญชีนี้ บัญชีผู้ใช้ทั้งหมดมีรหัสตัวเลขที่ไม่ซ้ำกัน บัญชีผู้ใช้ทั่วไปมักจะเริ่มต้นที่ 1,000 โดยบัญชีใหม่แต่ละบัญชีจะมี ID ฟรีตัวถัดไป เช่น 1001, 1002 เป็นต้น
  • 1000 : ID กลุ่มของกลุ่มเริ่มต้นที่ผู้ใช้เป็นสมาชิก ในสถานการณ์ปกติ กลุ่มเริ่มต้นมีค่าเท่ากับ ID ผู้ใช้
  • dave,,, : ชุดของข้อมูลเพิ่มเติมเกี่ยวกับผู้ใช้ ฟิลด์นี้มีข้อมูลที่มีเครื่องหมายจุลภาค “ , ” คั่นกลาง พวกเขาสามารถเก็บสิ่งต่าง ๆ เช่นชื่อเต็มของผู้ใช้ หมายเลขโทรศัพท์สำนักงาน และหมายเลขโทรศัพท์ของพวกเขา รายการสำหรับบัญชีผู้ใช้ "mary" แสดงชื่อเต็มของเธอคือ Mary Quinn
  • /home/dave : พาธไปยังโฮมโฟลเดอร์ของผู้ใช้
  • /bin/bash : เชลล์เริ่มต้นสำหรับผู้ใช้รายนี้

หากเราไพพ์เอาต์พุตจากคำสั่งนี้ผ่านยูทิลิตี้ wc และใช้ตัวเลือก -l (บรรทัด) เราสามารถนับบรรทัดในไฟล์ได้ ซึ่งจะทำให้เรามีจำนวนบัญชีที่กำหนดค่าไว้ในคอมพิวเตอร์เครื่องนี้

 cat /etc/passwd | wc -l 

การนับจำนวนบัญชีในไฟล์ /etc/passwd

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

ด้วยบัญชีจำนวนมากนั้น การใช้ less ในการดูไฟล์ “/etc/passwd” จะสะดวกกว่า

 น้อยกว่า /etc/passwd 

การเปิดไฟล์ /etc/passwd ใน less

การใช้ less ยังช่วยให้คุณค้นหาภายในผลลัพธ์ หากคุณต้องการค้นหาบัญชีผู้ใช้เฉพาะ

ค้นหาบัญชี mary ในไฟล์ /etc/passwd ใน less

คำสั่ง awk

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

วิธีใช้คำสั่ง awk บน Linux
วิธีใช้คำสั่ง awk บน Linux

เราจะบอกให้ awk ใช้โคลอน “:” เป็นตัวคั่นฟิลด์ และพิมพ์ฟิลด์แรก เราจะใช้ตัวเลือก -F (ตัวคั่นฟิลด์)

 awk -F: '{พิมพ์ $1}' /etc/passwd 

คำสั่ง awk เพื่อเลือกเฉพาะชื่อผู้ใช้จากไฟล์ /etc/passwd

ชื่อบัญชีผู้ใช้จะถูกเขียนลงในหน้าต่างเทอร์มินัลโดยไม่มีข้อมูลบัญชีอื่นใด

ชื่อบัญชีผู้ใช้ที่แสดงในหน้าต่างเทอร์มินัล

คำสั่งตัด

เราสามารถทำสิ่งเดียวกันได้โดยใช้คำสั่ง cut เราจำเป็นต้องใช้ตัวเลือก -d (ตัวคั่น) และขอให้เลือกเฉพาะฟิลด์แรกเท่านั้น โดยใช้ตัวเลือก -f (ฟิลด์)

 cutr -d: -f1 

ใช้คำสั่ง cut เพื่อแสดงเฉพาะชื่อผู้ใช้จากไฟล์ /etc/passwd

รายการนี้จะแสดงรายการบัญชีผู้ใช้ทั้งหมด รวมทั้งระบบและบัญชีอื่นที่ไม่ใช่ของมนุษย์

คำสั่ง compgen

คำสั่ง compgen สามารถใช้กับตัวเลือก -u (ผู้ใช้) เพื่อแสดงรายการบัญชีผู้ใช้ เราจะไพพ์ผลลัพธ์ผ่านคำสั่ง column เพื่อแสดงรายการบัญชีผู้ใช้ในคอลัมน์ แทนที่จะเป็นรายการยาวที่มีชื่อผู้ใช้เดียวต่อบรรทัด

 compgen -u | คอลัมน์ 

การใช้คำสั่ง compgen และคอลัมน์เพื่อแสดงรายการชื่อบัญชีผู้ใช้จากไฟล์ /etc/passwd ในคอลัมน์

อีกครั้ง บัญชีผู้ใช้แรกที่แสดงรายการเป็นของกระบวนการ ไม่ใช่มนุษย์

UID MIN และ UID MAX

บัญชีผู้ใช้จะได้รับ ID ตัวเลข ซึ่งเราเห็นก่อนหน้านี้ โดยปกติ บัญชีผู้ใช้ทั่วไปเริ่มต้นที่ 1,000 และบัญชีผู้ใช้ระบบที่ไม่ใช่ของมนุษย์เริ่มต้นที่ 0 ID ของบัญชีรูทคือ 0

หากเราสามารถตรวจสอบ ID ผู้ใช้ที่ต่ำที่สุดและสูงสุดได้ เราก็สามารถใช้ข้อมูลนั้นเพื่อเลือกบัญชีผู้ใช้ที่อยู่ระหว่างสองค่านั้น ซึ่งจะทำให้เราเลือกเฉพาะบัญชีผู้ใช้ที่เป็นของคนจริงเท่านั้น

Linux ติดตามค่าทั้งสองนี้โดยใช้พารามิเตอร์การกำหนดค่าที่เรียกว่า UID_MIN และ UID_MAX สิ่งเหล่านี้ถูกเก็บไว้ในไฟล์ “/etc/login.defs” เราสามารถเห็นค่าเหล่านี้ได้อย่างง่ายดายโดยใช้ grep

เราจะใช้ตัวเลือก -E (extended regex) สตริงการค้นหาของเราจะค้นหาบรรทัดที่ขึ้นต้นด้วย “UID_MIN” หรือ “UID_MAX” ในไฟล์ “/etc/login.defs” คาเร็ต “ ^ ” แทนจุดเริ่มต้นของบรรทัด

 grep -E '^UID_MIN|^UID_MAX' /etc/login.defs 

ช่วงสำหรับ ID ผู้ใช้บนคอมพิวเตอร์เครื่องนี้อยู่ระหว่าง 1,000 ถึง 60,000

ที่เกี่ยวข้อง: วิธีใช้นิพจน์ทั่วไป (regexes) บน Linux

คำสั่งที่ได้รับ

คำสั่ง getent อ่านข้อมูลจากฐานข้อมูลระบบ เราสามารถบอกให้แสดงรายการในไฟล์ "/ etc / passwd" โดยใช้ "passwd" เป็นพารามิเตอร์

 รับรหัสผ่าน 

การใช้ getent เพื่อดัมพ์ไฟล์ /etc/passwd ไปยังหน้าต่างเทอร์มินัล

สิ่งนี้ทำให้เราอ่านข้อมูลแบบเดียวกับที่เราสามารถใช้ cat ได้ แต่จุด getent คือการยอมรับค่าที่เรียกว่า "กุญแจ" คีย์กำหนดว่าข้อมูล getent ที่ได้รับรายงาน หากเราต้องการดูรายการสำหรับผู้ใช้คนเดียว เราสามารถส่งชื่อบัญชีผู้ใช้ของพวกเขาในบรรทัดคำสั่งได้

 getent passwd Sarah

โปรดทราบว่าชื่อบัญชีผู้ใช้จะคำนึงถึงขนาดตัวพิมพ์

 getent passwd sarah 

กำลังมองหาบัญชีผู้ใช้เดียวกับ getent

นอกจากนี้เรายังสามารถส่งผ่านในขีดจำกัดบนและล่างของรหัสบัญชีผู้ใช้ที่เราต้องการดู หากต้องการดูบัญชีผู้ใช้ทั่วไปทั้งหมด เราสามารถใช้ค่าจาก UID_MIN และ UID_MAX

 รับรหัสผ่าน {1000000..60000} 

การใช้ ID บัญชีบนและล่างกับ getent

การดำเนินการนี้ต้องใช้เวลา ในที่สุด คุณจะกลับไปที่พรอมต์คำสั่ง

เนื้อหาของไฟล์ /etc/passwd ที่ส่งไปยังหน้าต่างเทอร์มินัลโดย getent

เหตุผลในการดำเนินการนานคือการที่ getent พยายามค้นหารายการที่ตรงกันสำหรับค่าบัญชีผู้ใช้ทั้งหมดสูงสุดถึง 60000

มาดูกันว่า ID บัญชีผู้ใช้สูงสุดคืออะไร เราจะใช้คำสั่ง cut แต่คราวนี้เราจะขอช่องที่สามคือช่อง ID ผู้ใช้ เราจะไพพ์เอาต์พุตผ่าน sort และใช้ตัวเลือก -g (การเรียงลำดับตัวเลขทั่วไป)

 ตัด -d: -f3 /etc/passwd | sort -g 

คำสั่งให้ไพพ์เอาต์พุตจากคำสั่งตัดเป็นคำสั่ง sort

ค่า ID สูงสุดของบัญชีผู้ใช้ที่เป็นมนุษย์คือ 1401

รายการที่เรียงลำดับของ ID บัญชีผู้ใช้

ID ผู้ใช้ 65534 ถูกกำหนดให้กับแนวคิดระบบของ "ไม่มีใคร"

 รับรหัสผ่าน {65534..65534} 

ไม่มีผู้ใช้ระบบ มี ID 65534

เราจึงรู้ว่าแทนที่จะใช้ค่า UID_MAX ที่ 60000 ในคอมพิวเตอร์เครื่องนี้ เราสามารถใช้ค่าที่เหมือนจริงมากขึ้น เช่น 1500 ได้ ซึ่งจะทำให้ทุกอย่างเร็วขึ้นอย่างดี นอกจากนี้เรายังจะส่งเอาต์พุตผ่านการ cut เพื่อแยกเฉพาะชื่อบัญชีผู้ใช้

ได้รับ passwd {1000..1500} | ตัด -d: -f1

ผลลัพธ์ของ getent ไปป์ผ่านการตัดเพื่อแสดงรายการชื่อบัญชีผู้ใช้

ผู้ใช้อยู่ในรายการและเราจะกลับไปที่พรอมต์คำสั่งทันที

แทนที่จะวางท่อเอาต์พุตผ่าน cut ให้ไพพ์เอาต์พุตผ่าน wc แล้วนับจำนวนบรรทัดอีกครั้ง ซึ่งจะทำให้เรามีจำนวนบัญชีผู้ใช้ "จริง"

 ได้รับ passwd {1000..1500} | wc -l 

การนับบัญชีผู้ใช้ทั่วไปด้วย getent และ wc

ตอนนี้เราเห็นแล้วว่าในคอมพิวเตอร์เครื่องนี้ แน่นอนว่ามีบัญชีผู้ใช้ที่กำหนดค่าไว้ 400 บัญชีที่มนุษย์เป็นเจ้าของ

พลังและความเรียบง่าย

หนึ่งในเทคนิคเหล่านี้แน่นอนว่าจะเหมาะกับความต้องการของคุณเมื่อคุณต้องการตรวจสอบบัญชีผู้ใช้บนคอมพิวเตอร์ Linux คำสั่งเหล่านี้ควรมีอยู่ในการแจกแจงทั้งหมด และไม่มีคำสั่งใดที่ต้องมีการเข้าถึง sudo ดังนั้นจึงมีให้สำหรับผู้ใช้ทุกคน

ที่เกี่ยวข้อง: วิธีควบคุมการเข้าถึง sudo บน Linux