Linux: bagaimana cara memberi izin pengguna untuk memulai kembali apache?

35

Saya memiliki skrip yang berjalan di bawah pengguna non-root yang, dalam kondisi tertentu, harus memulai kembali apache httpd.

Apa cara paling sederhana bagi saya untuk memungkinkan pengguna melakukan itu?

Saya menggunakan Ubuntu Server 8.04 LTS.

itsadok
sumber

Jawaban:

84

Jawaban singkat:

Menggunakan visudo, tambahkan berikut ini ke file sudoers Anda, ganti nama pengguna dengan nama pengguna yang tepat:

username ALL = /etc/init.d/apache2 

Jika Anda tidak perlu mengetikkan kata sandi sebelum melakukannya, gunakan yang berikut ini:

username ALL = NOPASSWD: /etc/init.d/apache2 

Setelah ini, pengguna 'nama pengguna' dapat menjalankan sudo /etc/init.d/apache2 start(atau menghentikan, memulai kembali, dll)

Jawaban panjang: Anda mungkin ingin mengatur pengguna terpisah untuk ini jika Anda belum melakukannya, dan kemudian mengkonfigurasi file / etc / sudoers untuk memungkinkan pengguna atau grup untuk menjalankan perintah yang Anda inginkan.

Misalnya, untuk mengizinkan pengguna 'ben' untuk menjalankan semua perintah sebagai root yang meminta kata sandi, Anda akan melakukan hal berikut:

ben ALL= ALL

Untuk mengizinkan 'ben' untuk mengeksekusi hanya satu perintah (seperti katakan, rm), Anda akan melakukan hal berikut:

ben ALL= /bin/rm 

Jika Anda menjalankan skrip sebagai pengguna dan tidak ingin meminta kata sandi, Anda akan ingin menggunakan opsi 'NOPASSWD' seperti:

ben ALL=NOPASSWD: /bin/commandname options

Anda dapat melakukan hal yang sama untuk grup dengan mengawali nama grup dengan tanda persentase, seperti:

%supportstaff          ALL= NOPASSWD: /bin/commandname 
epic9x
sumber
2
Dapat usernamedibatasi untuk subset parameter? Katakan start restarttapi tidak stop?
ThorSummoner
yang visudoperintah melakukan pemeriksaan keamanan pada suntingan Anda sehingga Anda tidak melanggar sudo/ superintah secara tidak sengaja: unix.stackexchange.com/a/27595/61349
ThorSummoner
1

Jawaban singkat: sudo.

Panggilan akan terlihat mirip dengan yang berikut: sudo /etc/init.d/apache2 restart

Paling mudah digunakan visudountuk mengatur file / etc / sudoers. Lihat man sudoersdan man visudountuk detailnya.

Zayne S Halsall
sumber
OP mengatakan tentang melakukannya melalui skrip - skrip tidak akan dapat memasukkan kata sandi sehingga jawaban ini tidak masuk akal.
Matt Fletcher
@MattFletcher kecuali Anda menggunakan NOPASSWD
Robin Kanters
0

Anda juga dapat melakukannya dengan menulis pembungkus ke apache2ctl, menetapkan kepemilikan grup ke grup administrasi web dan mengatur bit suid. Ini adalah solusi yang kurang umum daripada visudo, tetapi memungkinkan batasan khusus pada kemampuan pengguna dan pengecekan kesalahan.

Saya menulis alat ini untuk kebutuhan saya sendiri dan telah membagikannya di github: https://github.com/josiahjohnston/ltd_apache2ctl

Josiah Johnston
sumber