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.

Amey Jah
sumber
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
Alin Andrei
sumber
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
Christoph
sumber
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

turbo
sumber
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.

Jo-Erlend Schinstad
sumber