Ketika kami menginstal / menghapus / memperbarui paket atau membuat perubahan apa pun yang memerlukan hak administratif, kami diminta kata sandi pengguna admin yang memiliki sudo
hak istimewa - ini terjadi baik melalui GUI dan terminal.
Namun, jika kita mencoba mematikan dan memulai kembali melalui terminal, itu mengeluh bahwa kita harus root
:
$ reboot
reboot: Need to be root
$ shutdown now
shutdown: Need to be root
Tetapi kami tidak pernah dimintai kata sandi saat kami melakukan tindakan ini melalui roda gigi di kanan atas.
Mengapa ada perbedaan ini?
sudo
shutdown
restart
privileges
Aditya
sumber
sumber
sudo shutdown -h now
tetapi masalahnya adalah bahwa tanpa izin akses untukshutdown
itu tidak pernah berfungsi .. Karena di mana / bagaimana ia akan meminta kata sandi untuk masuk setelah menekan tombol pintas .. Semoga Anda mengerti situasi saya .. :)Jawaban:
Shutdown pada roda gigi memeriksa apakah Anda diizinkan mematikan mesin. Ini dilakukan melalui PolicyKit. Jika shutdown pernyataan ini dalam file
/usr/share/polkit-1/actions/org.freedesktop.consolekit.policy
diperiksa:PolicyKit memicu
dbus-send
perintah. Dalam hal shutdown akan menjadi:Ada daemon yang berjalan di latar belakang dengan hak istimewa root yang memanggil perintah shutdown untuk Anda.
Ketika Anda ingin dapat mematikan mesin "cara lama" melalui baris perintah (
shutdown, reboot, halt, ...
), maka Anda perlu menambahkan bit-suid ke perintah-perintah itu. Namun ketahuilah, semua orang di sistem Anda, yang memiliki akses ke shell kemudian dapat mematikan mesin Anda.sumber
sudo visudo
, tambahkan%sudo ALL = NOPASSWD: /sbin/shutdown, /sbin/poweroff, /sbin/halt, /sbin/reboot
, simpan dan keluar. Dengan cara ini, reboot baris perintah masih akan membutuhkansudo reboot
, tetapi Anda tidak harus memasukkan kata sandi.Ubuntu adalah distribusi dari Sistem Operasi GNU / Linux yang pada gilirannya milik keluarga sistem Unix - arsitektur umum untuk sejumlah Sistem Operasi modern.
Secara tradisional Unix digunakan untuk berjalan di komputer mainframe. Fasilitas komputasi pusat yang melayani dozend atau ratusan pengguna melalui terminal jarak jauh. Karena semua pengguna bergantung pada ketersediaan mainframe, tidak ada pengguna tunggal diizinkan untuk mengeluarkan perintah shutdown. Sebuah ide yang mendasar bagi arsitektur Unix - kernel sistem tidak akan pernah menginisialisasi shutdown kecuali fungsi yang sesuai dipanggil oleh proses superuser.
Dalam sistem desktop kontemporer, pengembang telah melalui rasa sakit tertentu untuk membuat penutupan tersedia untuk pengguna desktop belaka. Teknik yang umum adalah, untuk membiarkan manajer login, yang biasanya berjalan dalam konteks keamanan pengguna root, menangani shutdown dan reboot. Dalam hal ini shell grafis mengeluarkan permintaan kepada manajer login untuk mematikan komputer. Ini melibatkan penggunaan komunikasi antar proses (IPC), biasanya melalui layanan dbus.
Policykit yang disebutkan di atas memperluas proses ini dengan menyediakan kerangka kerja standar di mana manajer login (atau program apa pun yang menyediakan layanan shutdown) dapat memeriksa apa yang pengguna boleh menyebabkan shutdown, dan melalui mana seorang administrator dapat mengkonfigurasi masing-masing izin tersebut.
Beberapa lingkungan desktop tidak menggunakan layanan berbasis IPC melainkan serangkaian program pembantu untuk menyediakan fungsi yang sama atau serupa. Program-program pembantu tersebut akan dipanggil melalui mekanisme, yang memungkinkan untuk berubah ke dalam konteks pengguna super, seperti sudo, suid, atau mekanisme kebijakan yang mirip dengan sudo.
Bagaimanapun, program shutdown tradisional bodoh pada shell tidak bekerja dengan cara ini, itu mengharuskan Anda untuk melihat bahwa itu dijalankan dalam konteks pengguna super.
sumber
Karena Linux umumnya digunakan sebagai server atau serupa, dan SSHing ke dalam kotak linux, bahkan laptop Ubuntu normal, sangat umum.
Masalahnya, Anda mungkin tidak ingin orang dengan akses SSH dapat mematikannya, terutama ketika mungkin ada pengguna lain yang login dari jarak jauh menggunakannya. Seseorang dengan akses ke GUI - yah, dia bisa mematikannya sendiri dengan tombol daya fisik.
Juga, pengguna yang masuk dari jarak jauh tidak akan dapat menyalakannya kembali.
sumber
Hanya jika Anda satu-satunya yang masuk. Jika ada pengguna lain (termasuk pengguna konsol) Anda mungkin harus memasukkan kata sandi root. Ini sama pada OS X dan versi Windows yang lebih baru.
Perintah berikut:
Mengapa
shutdown
perintah itu tidak memeriksa apakah ada yang login? Tampaknya fitur yang tidak biasa jujur. Saya bisa membayangkan kadang-kadang akan menghemat waktu, tetapi konsol yang konsisten sering lebih disukai. Saya tidak ingin perintah terkadang memerlukan kata sandi setelah menjalankannya, dan kadang tidak.Kata ganti saya adalah Dia / Dia
sumber
sudo
kata sandi root / pengguna juga tidak dengan pengguna lain yang masuk melalui GDM atau dengan pengguna lain yang masuk melalui tty.Alasan Anda tidak perlu menjadi root untuk memulai shutdown dari GUI sebagian besar adalah masalah kenyamanan bagi pengguna desktop biasa. Sistem tahu bahwa Anda adalah pengguna yang masuk di konsol, jadi jika Anda mematikan komputer secara tidak sengaja, Anda mungkin dapat menyalakannya kembali.
Untuk pengguna di shell, Anda mungkin harus login jarak jauh, sehingga sistem mengharuskan Anda login sebagai root untuk mengeluarkan perintah shutdown. Ini mencegah pengguna biasa masuk ke server dari mematikannya sementara orang lain menggunakannya, dan sementara tidak ada orang secara fisik di sana untuk memulai komputer kembali.
Alasan shutdown tidak memberikan prompt GUI untuk kata sandi pengguna super mungkin karena tidak ada utilitas nyata yang dapat diperoleh di sana - jika Anda berada di konsol, di mana prompt akan muncul, Anda bisa menggunakan cog- menu wheeel sebagai gantinya. Jika Anda ingin memiliki prompt baris perintah untuk kata sandi pengguna super untuk shutdown, itu sudah tersedia dengan "sudo shutdown".
sumber
Dalam sistem multi-pengguna, hal terakhir yang Anda inginkan adalah pengguna Anda masuk dan dapat me-reboot server secara acak kapan saja, sehingga versi baris perintah Reboot adalah perintah superuser saja, maka Anda perlu menjadi root atau punya hak sudo.
Lakukan juga perintah Stop dan PowerOff.
sumber