Izin mematikan Linux

8

Misalkan Anda menginstal lingkungan desktop, katakanlah ubuntu atau debian. Anda dapat mematikan sistem dengan mengklik tombol di suatu tempat di menu sistem Anda sebagai pengguna normal. Anda tidak perlu beralih ke pengguna super untuk mencapai itu.

Namun di lingkungan desktop yang sama, jika saya membuka terminal (katakan gnome-terminal) sebagai pengguna normal, dan ketik

shutdown -h now

Saya akan diminta oleh

shutdown: need to be root

Satu-satunya cara untuk mematikan adalah dengan menambahkan perintah dengan sudo.

Adakah yang bisa menjelaskan mengapa demikian?

Terima kasih KC

K.Chen
sumber

Jawaban:

8

Pertanyaan yang diajukan oleh K.Chen adalah: mengapa saya membutuhkan hak sudo ketika saya melakukannya dari CLI, ahile saya tidak membutuhkan hak istimewa seperti itu ketika saya melakukannya dari GUI.

Bagian pertama dari jawabannya adalah bahwa orang-orang yang mendesain Lingkungan Desktop, seperti Gnome, KDE, Xfce, Mate, Cinnamon, ... mencoba menyederhanakan pekerjaan penggunanya, dan mereka mengonfigurasi penutupan dan me-reboot tanpa memerlukan kredensial sudo. Ini, kebetulan, menyiratkan bahwa harus ada urutan shutdown yang tidak melibatkan shutdown program, yang memang memerlukan hak sudo (tidak ada jalan lain).

Saya tidak tahu secara detail bagaimana masing-masing DE melakukannya, tetapi saya tahu bahwa ada cara yang lembut untuk menjatuhkan, atau restart / shutdown / hibernasi sistem Anda, yang tidak memerlukan hak root. Anda dapat menemukan posting asli di posting Arch Linux Forum . Intinya, itu sama dengan mengeluarkan perintah-perintah ini:

berhenti

 #!/bin/bash
 dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit"/org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

reboot

 #!/bin/bash
 dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit"  /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart

dbus-suspend

 #!/bin/bash
 dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Suspend

hibernasi

 #!/bin/bash
 dbus-send --system --print-reply --dest="org.freedesktop.UPower" /org/freedesktop/UPower org.freedesktop.UPower.Hibernate 

Dugaan saya adalah bahwa tombol GUI menggunakan kira-kira perintah ini. Yang pasti harus melihat ke dalam kode, tapi saya yakin ini adalah taruhan yang aman.

MariusMatutiae
sumber
1
Jika seseorang login jarak jauh ke mesin yang juga memiliki lingkungan desktop yang berjalan, dapatkah ia mengeluarkan perintah ini dan berhasil mematikan / reboot / menangguhkan / hibernasi?
gerrit
Ada sisi jahat dari pertanyaan ini, saya percaya beberapa kebijaksanaan harus dilakukan.
MariusMatutiae
1
Mengapa berbahaya Jika itu bisa disalahgunakan, pengurus harus tahu dan kemudian tahu bagaimana melindunginya.
gerrit
Saya tidak mengatakan Anda jahat, tetapi bahwa penggunaan jahat bisa dibuat dari info ini. Saya sudah menyesal telah membagikannya ... Mungkin saya seharusnya melakukan seperti @Matteo
MariusMatutiae
5

Alasan di balik keputusan desain ini bukan teknis (Anda bisa memiliki shutdownperintah yang tidak istimewa atau memerlukan kata sandi di GUI).

  • Saat menggunakan lingkungan desktop, pengguna seharusnya memiliki akses fisik ke mesin. Maka lebih baik membiarkan shutdown bersih daripada membiarkan pengguna menekan tombol daya atau mencabut kabel listrik.

  • Saat menggunakan shell, pengguna bisa menjadi pengguna jarak jauh dan untuk menghindari shutdown jarak jauh, lebih banyak hak istimewa diminta.

Ini bukan aturan tetapi hanya default berdasarkan asumsi: Anda dapat memiliki pengguna lokal di shell dan pengguna jarak jauh dengan lingkungan desktop. Jika Anda ingin memilih perilaku default, Anda dapat mengkonfigurasi sistem Anda sesuai.

Matteo
sumber
Saya mengerti maksud Anda, @Matteo. Tapi seperti yang dikatakan MariusMatutiae, di bawah tenda DE pasti memanggil beberapa program selain "shutdown" untuk shutdown tanpa hak superuser. Anda punya petunjuk apa itu?
K.Chen
1

Sudo (superuser do) memungkinkan administrator sistem untuk memberikan pengguna tertentu (atau grup pengguna) kemampuan untuk menjalankan beberapa (atau semua) perintah sebagai root saat mencatat semua perintah dan argumen. perintah shutdown -h atau init 0 dapat digunakan untuk mematikan mesin. Tetapi kedua perintah tersebut membutuhkan root privilege untuk dieksekusi.

Perintah yang terletak di / sbin harus memiliki hak akses root untuk menjalankannya. Untuk menemukan lokasi perintah shutdown,

ketik yang shutdown di terminal.

Semoga sekarang keraguan Anda jelas :)

Unnikrishnan
sumber