Izinkan tamu tertentu untuk menjalankan perintah tertentu

19

Saya ingin membuat pengguna baru di beberapa host Debian / Ubuntu saya yang dapat memperbarui server menggunakan perintah apt-get updatedan apt-get dist-upgrade, tetapi saya tidak ingin memberi mereka akses sudo penuh untuk dapat melakukan hal lain. Apakah ini mungkin? Mungkin ada cara untuk membuat skrip yang tidak dapat diedit tetapi dapat dieksekusi, yang akan dieksekusi sebagai pengguna root?

Programster
sumber
2
Lihat man sudoersdan sudo cat /etc/sudoers.
goldilocks
Terima kasih @goldilocks Saya selalu berpikir file sudoers hanya untuk memungkinkan orang diberikan akses root sebelumnya.
Programster

Jawaban:

30

Sudodan /etc/sudoersfile tidak hanya untuk memberikan pengguna akses root penuh.

Anda dapat mengedit file sudoers dengan pengguna sudo yang ada, dengan perintah sudo visudo

Anda dapat mengelompokkan perintah yang ingin Anda beri akses seperti di bawah ini:

Cmnd_Alias SHUTDOWN_CMDS = /sbin/poweroff, /sbin/halt, /sbin/reboot
Cmnd_Alias UPDATE_COMMANDS = /usr/bin/apt-get

Anda kemudian dapat memberikan hak pengguna khusus untuk perintah-perintah seperti:

[User's name] ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS, UPDATE_COMMANDS

Ini bisa dilihat pada gambar di bawah ini masukkan deskripsi gambar di sini:

Sekarang jika Anda mencoba sudo apt-get updateatau sudo apt-get dist-upgradeperintah itu akan dijalankan tanpa meminta kata sandi . Jika Anda ingin dimintai kata sandi, hapus NOPASSWDbit tempat Anda memberikan akses kepada pengguna ke grup perintah.

Jika Anda mencoba menjalankan hal lain sebagai sudopengguna, Anda akan dimintai kata sandi dan gagal.

Referensi

Programster
sumber
6
Perhatikan bahwa memberi pengguna izin untuk menjalankan apt-get, atau bahkan sekadar apt-get upgrade, memberi mereka akses root penuh ! Banyak skrip pemutakhiran memungkinkan pengguna interaktif untuk mengeksekusi shell, misalnya ketika file konfigurasi telah berubah. Agar aman, batasi apt-getperintah tertentu, dan paksakan agar tidak interaktif. Lihat Apakah aman bagi pengguna ssh saya untuk diberikan sudo tanpa kata sandi untuk apt-get updatedan apt-get upgrade?
Gilles 'SANGAT berhenti menjadi jahat'
Dalam kasus saya, saya harus meletakkan garis setelah%sudo ...
Aleksey
Apakah ada cara untuk melakukannya hanya dari baris perintah?
Kamil Dziedzic