Trên hộp linux, làm cách nào để liệt kê tất cả người dùng có quyền riêng tư gốc (và thậm chí tốt hơn, tất cả người dùng nói chung cùng với họ có root hay không)?
Trên hộp linux, làm cách nào để liệt kê tất cả người dùng có quyền riêng tư gốc (và thậm chí tốt hơn, tất cả người dùng nói chung cùng với họ có root hay không)?
Câu trả lời:
Đừng quên thay đổi mật khẩu root. Nếu bất kỳ người dùng nào có UID 0 ngoài root, họ không nên. Ý kiến tồi. Để kiểm tra:
grep 'x:0:' /etc/passwd
Một lần nữa, bạn không nên làm điều này nhưng để kiểm tra xem người dùng có phải là thành viên của nhóm gốc hay không:
grep root /etc/group
Để xem có ai có thể thực thi các lệnh dưới quyền root hay không, hãy kiểm tra sudoers:
cat /etc/sudoers
Để kiểm tra bit SUID, cho phép các chương trình được thực thi với quyền root:
find / -perm -04000
grep '[^:]*:[^:]*:0:' /etc/passwd
. +1 đặc biệt để kiểm tra SUID.
Để xem ai là UID 0:
getent passwd 0
Để xem ai là trong nhóm root
, wheel
adm
và admin
:
getent group root wheel adm admin
Để liệt kê tất cả người dùng và các nhóm mà họ là thành viên của:
getent passwd | cut -d : -f 1 | xargs groups
getent passwd
thay vào đó, thực sự đúng. Chỉ cần đừng quên kiểm tra / etc / sudoers.
Root thuần là id người dùng "0".
Tất cả người dùng trong hệ thống đều ở trong tệp / etc / passwd:
less /etc/passwd
Những người đã root có "0" làm id người dùng, đó là cột thứ 3. Những người có "0" là nhóm (cột thứ 4) cũng có thể có một số đặc quyền gốc.
Tiếp theo, bạn sẽ muốn xem xét các nhóm và xem ai là thành viên bổ sung của nhóm "root" hoặc "wheel" hoặc "admin":
less /etc/group
Người dùng được liệt kê trong các nhóm đó có thể có một số đặc quyền gốc, đặc biệt thông qua lệnh "sudo".
Điều cuối cùng bạn sẽ muốn kiểm tra là cấu hình "sudo" và xem ai được liệt kê là có quyền để chạy lệnh này. Bản thân tệp này đã được ghi lại rõ ràng vì vậy tôi sẽ không sao chép nó ở đây:
less /etc/sudoers
Điều đó bao gồm các lĩnh vực chính của những người có thể có quyền truy cập root.
consolehelper
và PackageKit
.)
getent passwd
nên liệt kê tất cả người dùng hệ thống (bao gồm cả root), ở định dạng passwd, bất kể cơ sở dữ liệu nơi chúng được xác định.
Để in tất cả người dùng
perl -n -e '@user = split /:/ ; print "@user[0]\n";' < /etc/passwd
Để chỉ in những người dùng có UID 0, như những người khác đã nói, những người dùng có đặc quyền gốc ẩn:
perl -n -e '@user = split /:/ ; print "@user[0]\n" if @user[2] == "0";' < /etc/passwd
getent passwd
thay thế. Đối với ví dụ "in tất cả người dùng" đầu tiên của bạn, thay vào đó hãy thử điều này:getent passwd | perl -naF: -e 'print "$F[0]\n"'
Để có danh sách nhanh tất cả người dùng, hãy thử nhấn tab hai lần (để tự động hoàn thành) sau khi nhập passwd
lệnh theo sau là khoảng trắng. Điều này làm việc với su
lệnh là tốt.
Phải được thực hiện như một người dùng đặc quyền root.