Bagaimana cara memberikan hak shutdown kepada pengguna?


9

Saya menggunakan Ubuntu 11.04. Saya ingin menjalankan skrip yang memeriksa proses yang sedang berjalan dan mematikan sistem saat proses itu berakhir. Untuk melakukan ini, pengguna memerlukan akses shutdown sehingga skrip dapat dieksekusi tanpa memerlukan kata sandi.

Saya merujuk ke halaman ini dan menambahkan teks dalam file sudoers saya. Namun, masih meminta saya kata sandi setiap kali saya mengeksekusi sudo shutdown -h now. Juga, saya mendapatkan kesalahan yang mengatakan hak akses root diperlukan, ketika saya menjalankan shutdown tanpa sudo.

File sudoers saya terlihat seperti ini.

# Cmnd alias specification
Cmnd_Alias      SHUTDOWN = /sbin/shutdown

# User privilege specification
root    ALL=(ALL:ALL) ALL
myusername    ALL = NOPASSWD: SHUTDOWN

Bagaimana saya bisa memberikan izin kepada pengguna untuk menjalankan perintah shutdown tanpa harus memasukkan kata sandi secara manual?

Terima kasih.


1
Bisakah Anda memposting sudoersfile asli dan keseluruhan Anda ?
enzotib

Jawaban:


6

Anda dapat mematikan atau memulai kembali menggunakan HAL atau ConsoleKit yang tidak akan mengharuskan Anda memasukkan nama pengguna / kata sandi:

HAL (versi Ubuntu yang lebih lama):

dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

ConsoleKit (versi Ubuntu yang lebih baru, diuji pada Ubuntu 11.04):

dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop

7

Saya melakukannya seperti dalam jawaban ini , bekerja dengan sempurna untuk saya. Mungkin pendekatan Anda melewatkan visudobagian itu?

Buka baris perintah dan ketik:

sudo visudo 

Di File yang terbuka tambahkan baris berikut di akhir:

yourusername ALL=NOPASSWD: /sbin/halt

Kemudian keluar dari editor dan simpan (CTRL + x).

Sekarang Anda dapat mematikan komputer dari baris perintah, mis. Setelah Anda mengunduh sesuatu:

wget UrlOfTheFileYouWantToDownload ; sudo halt

1

Beberapa waktu lalu saya melakukan ini dengan mengatur suid (Set User ID). Ini membuat program mengeksekusi sebagai pemilik file, bukan pengguna yang menjalankannya. Karena shutdown dimiliki oleh root, ini akan membuat Anda shutdown tanpa sudo.

chmod u+s /sbin/shutdown

Ada implikasi keamanan karena siapa pun dapat menjalankan shutdown. http://en.wikipedia.org/wiki/Setuid


Secara umum, tidak disarankan untuk memodifikasi file, atau metadata file, diinstal dari paket, selain file konfigurasi di /etc.
enzotib

Hmm ... benar! Tapi apa cara resmi itu? Bermain dengan polkit? Tidak begitu baik ...
turbo

sudoadalah cara yang benar, menurut saya, tetapi sayangnya pengguna tidak memberikan kesempatan untuk melihat sudoersfile -nya , dan apa yang salah dengannya.
enzotib

Ini adalah satu-satunya hal yang berhasil untuk saya.
Mark Stewart

0

Sepertinya Anda ingin menjalankan skrip itu sendiri sebagai root. Jika Anda ingin menjalankan skrip yang menunggu sampai selesai dan kemudian mematikan komputer Anda, maka Anda cukup menjalankan skrip dengan sudo. Itu akan menanyakan kata sandi Anda ketika Anda menjalankan skrip, tetapi kemudian skrip itu sendiri bebas untuk mematikan sistem tanpa intervensi lebih lanjut.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.