Bagaimana cara mendaftar semua pengguna dengan root?
35
Pada kotak linux, bagaimana cara mendaftar semua pengguna yang memiliki hak root (dan bahkan lebih baik, semua pengguna secara umum bersama dengan apakah mereka memiliki root atau tidak)?
Bisakah Anda lebih spesifik dengan apa yang Anda maksud dengan "root privilege"? Maksud Anda pengguna dengan UID = 0?
Chris S
Pengguna memiliki kemampuan untuk melakukan apa saja. Pada dasarnya - Saya perlu membuat daftar pengguna bersama dengan grup yang menjadi anggotanya jika memungkinkan.
Eric
2
Jika saya tahu di mana komputer Anda berada, saya bisa berjalan dan menarik kabel listrik. Itu akan memenuhi syarat sebagai "melakukan apa saja" yang berarti saya ada di daftar Anda. Rafiq telah mendaftarkan tiga hal paling umum, tetapi mungkin ada lebih banyak dan kami tahu tentang sistem Anda atau bagaimana pengaturannya.
Chris S
Jawaban:
42
Jangan lupa untuk mengubah kata sandi root. Jika ada pengguna yang memiliki UID 0 selain root, mereka seharusnya tidak. Ide buruk. Untuk memeriksa:
grep 'x:0:' /etc/passwd
Sekali lagi, Anda tidak harus melakukan ini tetapi untuk memeriksa apakah pengguna adalah anggota dari grup root:
grep root /etc/group
Untuk melihat apakah ada yang bisa menjalankan perintah sebagai root, periksa sudoers:
cat /etc/sudoers
Untuk memeriksa bit SUID, yang memungkinkan program dijalankan dengan hak akses root:
Sebenarnya, yang pertama hanya berfungsi jika file kata sandi bayangan ada di pengguna. Saya setuju bahwa hampir selalu demikian, akhir-akhir ini, tetapi untuk berjaga-jaga, saya melakukan pekerjaan perl cepat yang secara eksplisit memeriksa bidang 3.
MadHatter mendukung Monica
4
Ini adalah pola yang lebih baik dari yang pertama: grep '[^:]*:[^:]*:0:' /etc/passwd. +1 secara khusus untuk memeriksa SUID.
Dijeda sampai pemberitahuan lebih lanjut.
33
Untuk melihat siapa yang UID 0:
getent passwd 0
Untuk melihat siapa yang ada dalam kelompok root, wheeladmdan admin:
getent group root wheel adm admin
Untuk membuat daftar semua pengguna dan grup mereka adalah anggota:
Tidak seperti semua jawaban lain yang salah bergantung pada file / etc / passwd, yang ini, menggunakan getent passwdsebaliknya, sebenarnya benar. Jangan lupa untuk memeriksa / etc / sudoers.
mivk
Terima kasih untuk ini. Jauh lebih jelas. Bagi saya ini adalah jawaban yang diterima.
Fiddy Bux
6
Root murni adalah id pengguna "0".
Semua pengguna dalam sistem berada di file / etc / passwd:
less /etc/passwd
Mereka yang root memiliki "0" sebagai id pengguna, yang merupakan kolom ke-3. Yang dengan "0" sebagai grup (kolom ke-4) mungkin juga memiliki beberapa hak root.
Selanjutnya, Anda akan ingin melihat grup, dan melihat siapa yang merupakan anggota tambahan dari grup "root" atau "wheel" atau "admin":
less /etc/group
Pengguna yang terdaftar dalam grup tersebut dapat memiliki beberapa hak akses root, terutama melalui perintah "sudo".
Hal terakhir yang ingin Anda periksa adalah konfigurasi "sudo" dan lihat siapa yang terdaftar memiliki otorisasi untuk menjalankan perintah ini. File ini sendiri didokumentasikan dengan baik sehingga saya tidak akan mereproduksi di sini:
less /etc/sudoers
Itu mencakup area utama yang bisa memiliki akses root.
Lihat juga serverfault.com/questions/205598/... untuk beberapa tempat lagi di mana hak-hak eskalasi hak istimewa dapat diberikan. (Yaitu, consolehelperdan PackageKit.)
mattdm
2
Semua pengguna pasti TIDAK dijamin berada di / etc / passwd. Mereka mungkin di LDAP, misalnya. Tetapi getent passwdharus mencantumkan semua pengguna sistem (termasuk root), dalam format passwd, terlepas dari basis data di mana mereka didefinisikan.
Itu bagus, tapi perhatikan batasannya (saya yakin MadHatter sudah mengetahui hal ini) - ini tidak akan memeriksa grup dan tidak akan memeriksa sudoer. Itu hanya akan memeriksa, seperti katanya, root implisit.
Rafiq Maniar
2
Jangan parse / etc / passwd. Pengguna dapat didefinisikan di tempat lain. Gunakan getent passwdsebagai gantinya. Untuk contoh "cetak semua pengguna" pertama Anda, coba ini:getent passwd | perl -naF: -e 'print "$F[0]\n"'
mivk
2
Untuk daftar cepat semua pengguna, coba tekan tab dua kali (untuk melengkapi otomatis) setelah mengetik passwdperintah yang diikuti oleh spasi. Ini berfungsi dengan superintah juga.
Jawaban:
Jangan lupa untuk mengubah kata sandi root. Jika ada pengguna yang memiliki UID 0 selain root, mereka seharusnya tidak. Ide buruk. Untuk memeriksa:
grep 'x:0:' /etc/passwd
Sekali lagi, Anda tidak harus melakukan ini tetapi untuk memeriksa apakah pengguna adalah anggota dari grup root:
grep root /etc/group
Untuk melihat apakah ada yang bisa menjalankan perintah sebagai root, periksa sudoers:
cat /etc/sudoers
Untuk memeriksa bit SUID, yang memungkinkan program dijalankan dengan hak akses root:
find / -perm -04000
sumber
grep '[^:]*:[^:]*:0:' /etc/passwd
. +1 secara khusus untuk memeriksa SUID.Untuk melihat siapa yang UID 0:
Untuk melihat siapa yang ada dalam kelompok
root
,wheel
adm
danadmin
:Untuk membuat daftar semua pengguna dan grup mereka adalah anggota:
sumber
getent passwd
sebaliknya, sebenarnya benar. Jangan lupa untuk memeriksa / etc / sudoers.Root murni adalah id pengguna "0".
Semua pengguna dalam sistem berada di file / etc / passwd:
Mereka yang root memiliki "0" sebagai id pengguna, yang merupakan kolom ke-3. Yang dengan "0" sebagai grup (kolom ke-4) mungkin juga memiliki beberapa hak root.
Selanjutnya, Anda akan ingin melihat grup, dan melihat siapa yang merupakan anggota tambahan dari grup "root" atau "wheel" atau "admin":
Pengguna yang terdaftar dalam grup tersebut dapat memiliki beberapa hak akses root, terutama melalui perintah "sudo".
Hal terakhir yang ingin Anda periksa adalah konfigurasi "sudo" dan lihat siapa yang terdaftar memiliki otorisasi untuk menjalankan perintah ini. File ini sendiri didokumentasikan dengan baik sehingga saya tidak akan mereproduksi di sini:
Itu mencakup area utama yang bisa memiliki akses root.
sumber
consolehelper
danPackageKit
.)getent passwd
harus mencantumkan semua pengguna sistem (termasuk root), dalam format passwd, terlepas dari basis data di mana mereka didefinisikan.Untuk mencetak semua pengguna
Untuk mencetak hanya pengguna dengan UID 0, seperti yang dikatakan orang lain, pengguna dengan hak akses root implisit:
sumber
getent passwd
sebagai gantinya. Untuk contoh "cetak semua pengguna" pertama Anda, coba ini:getent passwd | perl -naF: -e 'print "$F[0]\n"'
Untuk daftar cepat semua pengguna, coba tekan tab dua kali (untuk melengkapi otomatis) setelah mengetik
passwd
perintah yang diikuti oleh spasi. Ini berfungsi dengansu
perintah juga.Harus dilakukan sebagai pengguna root-privilege.
sumber
Itu mengganggu saya bahwa tidak ada jawaban satu-baris ... Jika Anda ingin mendaftar semua akun UID 0 (root) gunakan yang berikut ini:
Terbaik,
sumber