บนกล่องลินุกซ์ฉันจะแสดงรายการผู้ใช้ทั้งหมดที่มีระดับรากที่ดีกว่าได้อย่างไร
บนกล่องลินุกซ์ฉันจะแสดงรายการผู้ใช้ทั้งหมดที่มีระดับรากที่ดีกว่าได้อย่างไร
คำตอบ:
อย่าลืมเปลี่ยนรหัสผ่านรูท หากผู้ใช้รายใดมี UID 0 ที่นอกเหนือจากรูทพวกเขาไม่ควรทำ ความคิดที่ไม่ดี เพื่อตรวจสอบ:
grep 'x:0:' /etc/passwd
อีกครั้งคุณไม่ควรทำเช่นนี้ แต่เพื่อตรวจสอบว่าผู้ใช้เป็นสมาชิกของกลุ่มรากหรือไม่:
grep root /etc/group
หากต้องการดูว่าใครสามารถใช้คำสั่งเป็นรูทได้ให้ตรวจสอบ sudoers:
cat /etc/sudoers
วิธีตรวจสอบ SUID bit ซึ่งอนุญาตให้โปรแกรมดำเนินการด้วยสิทธิ์พิเศษ:
find / -perm -04000
grep '[^:]*:[^:]*:0:' /etc/passwd
. +1 โดยเฉพาะอย่างยิ่งสำหรับการตรวจสอบสำหรับ SUID
เพื่อดูว่าใครเป็นโพสต์ 0:
getent passwd 0
เพื่อดูว่าใครอยู่ในกลุ่มroot
, wheel
adm
และadmin
:
getent group root wheel adm admin
ในการแสดงรายการผู้ใช้ทั้งหมดและกลุ่มที่เป็นสมาชิกของ:
getent passwd | cut -d : -f 1 | xargs groups
getent passwd
แทนถูกต้องจริง อย่าลืมตรวจสอบ / etc / sudoers
Pure root คือ ID ผู้ใช้ "0"
ผู้ใช้ทั้งหมดในระบบอยู่ในไฟล์ / etc / passwd:
less /etc/passwd
ผู้ที่เป็นรูทจะมี "0" เป็น ID ผู้ใช้ซึ่งเป็นคอลัมน์ที่ 3 ผู้ที่มี "0" เป็นกลุ่ม (คอลัมน์ที่ 4) อาจมีสิทธิ์พิเศษบางอย่างเช่นกัน
ถัดไปคุณจะต้องดูกลุ่มและดูว่าใครเป็นสมาชิกเพิ่มเติมของกลุ่ม "root" หรือ "wheel" หรือ "admin":
less /etc/group
ผู้ใช้ที่แสดงรายการในกลุ่มเหล่านั้นอาจมีสิทธิ์ใช้งานรูทบางอย่างโดยเฉพาะอย่างยิ่งผ่านคำสั่ง "sudo"
สิ่งสุดท้ายที่คุณต้องการตรวจสอบคือ "sudo" config และดูว่าใครอยู่ในรายการว่ามีสิทธิ์ในการเรียกใช้คำสั่งนี้ ไฟล์นี้มีการบันทึกไว้อย่างดีดังนั้นฉันจะไม่ทำซ้ำที่นี่:
less /etc/sudoers
ซึ่งครอบคลุมพื้นที่หลักของผู้ที่สามารถเข้าถึงรูทได้
consolehelper
และPackageKit
.)
getent passwd
ควรแสดงรายการผู้ใช้ระบบทั้งหมด (รวมถึงรูท) ในรูปแบบ passwd โดยไม่คำนึงถึงฐานข้อมูลที่กำหนดไว้
เพื่อพิมพ์ผู้ใช้ทั้งหมด
perl -n -e '@user = split /:/ ; print "@user[0]\n";' < /etc/passwd
หากต้องการพิมพ์เฉพาะผู้ใช้ที่มีโพสต์ UID ตามที่คนอื่นพูดผู้ใช้ที่มีสิทธิ์ใช้งานรูทแบบปริยาย:
perl -n -e '@user = split /:/ ; print "@user[0]\n" if @user[2] == "0";' < /etc/passwd
getent passwd
แทน สำหรับตัวอย่าง "พิมพ์ผู้ใช้ทั้งหมด" เป็นครั้งแรกให้ลองทำสิ่งนี้:getent passwd | perl -naF: -e 'print "$F[0]\n"'
สำหรับรายการย่อของผู้ใช้ทั้งหมดลองกดปุ่มแท็บสองครั้ง (เพื่อเติมให้อัตโนมัติ) หลังจากพิมพ์passwd
คำสั่งแล้วเว้นวรรค ใช้งานได้กับsu
คำสั่งเช่นกัน
ต้องทำในฐานะผู้ใช้ที่มีสิทธิ์ใช้งานรูท
มันน่ารำคาญสำหรับฉันที่ไม่มีคำตอบแบบใช้สายเดียว ... หากคุณต้องการแสดงรายการบัญชี UID 0 (root) ทั้งหมดให้ใช้รายการต่อไปนี้:
cat /etc/passwd | cut -f1,3,4 -d":" | grep"0:0" | cut -f1 -d":" | awk '{print $1}'
ที่ดีที่สุด