Karena Ubuntu secara default menonaktifkan akun root, mengapa juga tidak menonaktifkan akses shell root?

12

Default saat ini untuk akun root /etc/passwdadalah root:x:0:0:root:/root:/bin/bash.

Mengapa tidak mengaturnya root:x:0:0:root:/root:/usr/sbin/nologin?

lihat
sumber
7
Jadi itu bisa Anda lakukan sudo -i?
AlexP
12
"Menonaktifkan akun root" adalah sedikit uraian yang longgar: apa yang sebenarnya dinonaktifkan adalah otentikasi berbasis kata sandi dari akun root
steeldriver
1
@AlexP memang saya baru saja mengujinya, sudo -i tidak bekerja dengan root set ke / usr / sbin / nologin.
loongyh

Jawaban:

19

Jika itu masalahnya, Anda hanya akan dapat menjalankan perintah dengan sudosatu per satu, tetapi Anda tidak akan dapat memulai shell root. Shell root nyaman dalam banyak kasus, misalnya jika Anda berencana untuk menjalankan beberapa perintah sebagai root dalam satu baris.

Khususnya, Anda tidak bisa lari sudo -i, seperti yang dicatat AlexP. Dari man sudo:

-i, --login    Run the shell specified by the target user's password database entry as a login shell.
Alberto Santini
sumber
7
Tidak sudo /bin/bashberhasil melakukan itu?
Federico Poloni
5
@FedericoPoloni yang akan lebih seperti sudo -ssaya pikir (shell root, tetapi bukan shell login root ). Ini poin yang bagus - dan pada kenyataannya sudo -stampaknya bekerja bahkan ketika cangkang root/usr/sbin/nologin
steeldriver
1
Anda dapat menonaktifkan -i, -s, /bin/bash, dan sebagainya dengan hanya memungkinkan daftar putih perintah, lihat dokumentasi untuk file sudoers. Ini sangat halus, sehingga memungkinkan untuk memungkinkan pengguna untuk menjalankan /etc/init.d/someservice restartsebagai root tanpa mengizinkan mereka untuk menjalankan /etc/init.d/someservice stop. Tetapi default ubuntu hanya untuk tidak menetapkan kata sandi rootdan memungkinkan pengguna admin melakukan semuanya dengan sudo. Mungkin alasannya adalah a) lebih dari satu pengguna admin dan b) Pengguna admin tidak perlu mengingat kata sandi kedua untuk akun root.
allo
8

Selain jawaban sudo Alberto Santini, ada jawaban lain (jauh lebih baik). Jika shell root diatur ke sesuatu yang bukan shell, booting pengguna tunggal tidak berfungsi. Ada pemulihan suloginuntuk hal-hal seperti cangkang yang tidak ada atau cangkang yang benar-benar rusak, tetapi itu tidak akan berfungsi jika cangkang tersebut tampaknya cangkang yang valid tetapi sebenarnya bukan cangkang.

Anda masih dapat sudolangsung mendapatkan shell dengan menentukan shell sudoagar perlindungannya bahkan tidak bagus.

Joshua
sumber