Mengapa saya dapat memulai shell root dengan sudo bahkan dengan '! 'dalam entri bayangannya?

9
$cat /etc/passwd |grep -i root
root:x:0:0:root:/root:/bin/bash

$sudo cat /etc/shadow |grep -i root
root:!:17179:0:99999:7:::

Di bidang kedua file bayangan, !berarti pengguna root tidak bisa masuk tetapi mengapa saya bisa masuk ke root oleh sudo su?

Mengapa saya tidak bisa masuk untuk melakukan root pada su rootatau oleh su -?

Sinoosh
sumber
1
"Di bidang kedua file bayangan,! Berarti pengguna root tidak bisa masuk" Tidak, tidak. Di mana Anda mendengar itu?
Lightness Races dalam Orbit
@LightnessRacesinOrbit, apa artinya?
George Udosen
@ George: muru mengutip manual dalam jawabannya dan menjelaskannya secara rinci. Anda harus membaca dokumentasi!
Lightness Races dalam Orbit

Jawaban:

15

Sebuah !di shadowterenkripsi berarti field password entri yang tidak ada password dapat mengotentikasi terhadap itu. Dari man shadow:

If the password field contains some string that is not a valid
result of crypt(3), for instance ! or *, the user will not be able
to use a unix password to log in (but the user may log in the
system by other means).

Seperti yang dikatakan manual, ini tidak berarti bahwa Anda tidak dapat login sebagai root. Ini berarti bahwa Anda tidak dapat masuk sebagai root menggunakan kata sandi untuk akun root. (Anda dapat masuk sebagai root melalui SSH menggunakan kunci SSH, misalnya, jika Anda telah mengonfigurasinya sebelumnya, bahkan jika akun terkunci.)

sudobiasanya mengautentikasi dengan kata sandi Anda , bukan kata sandi. Ini dapat diubah dengan mengatur salah satu targetpw, rootpwatau runaspwdalam sudoers. Jika Anda menetapkan satu opsi ini, dan mencoba menggunakan kata sandi ketika kata sandi terkunci, itu akan gagal .

muru
sumber
Hebat, itu berarti saya bisa beralih ke pengguna mana saja dengan sudo dengan kata sandi saya baik itu pengguna aktif atau pengguna kunci, kan?
Sinoosh
1
@Sinoosh dengan asumsi tidak ada batasan lain, ya
muru
4

Sekarang mari kita lihat perintah yang sesuai:

  1. sudo su:

    • sudomenjalankan perintah su(pengguna pengganti) dengan hak akses root sehingga meskipun /etc/shadowkata atau memilikinya root:!:17179:0:99999:7:::masih menjalankan perintah dengan hak akses root.
  2. su -atau su root:

    • Ini sebenarnya beralih ke pengguna root yang dari /etc/shadowfile tidak bisa masuk sehingga menggunakan perintah ini tidak akan berfungsi. Jika Anda ingin mereka bekerja maka akun root harus dibuka dengan memberikannya kata sandi.

Ringkasan:

su -0r su rootberalih ke root pengguna , tidak ada sehingga tidak bisa terjadi, tetapi sudo sujalankan perintah switch dengan roothak istimewa, jadi dalam kasus ini akan pergi jika Anda berada di sudogrup. Anda sebenarnya tidak masuk sebagai root dalam kasus ini, hanya bertindak sebagai root sehingga ia akan pergi.

Sumber: Apa perbedaan antara 'su -' dan 'su root'?

George Udosen
sumber
Terima kasih, Berarti sudo sutidak melihat bidang lulus dalam file bayangan?
Sinoosh
1
@Sinoosh sudo suadalah cara yang salah untuk menjalankan sudo shatau sudo bash.
Bakuriu