Linux: bir kullanıcının apache'yi yeniden başlatması için nasıl izin verilir?


35

Belirli koşullar altında apache httpd'yi yeniden başlatması gereken root olmayan bir kullanıcı altında çalışan bir betiğim var.

Kullanıcının bunu yapmasına izin vermem için en basit yol ne olurdu?

Ubuntu Server 8.04 LTS kullanıyorum.

Yanıtlar:


84

Kısa cevap:

Kullanarak visudo, kullanıcı adınızı doğru kullanıcı adıyla değiştirerek, aşağıdakileri sudoers dosyanıza ekleyin:

username ALL = /etc/init.d/apache2 

Bunu yapmadan önce bir şifre girmeniz gerekmiyorsa, aşağıdakileri kullanın:

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

Bundan sonra, 'kullanıcı adı' kullanıcısı yürütebilir sudo /etc/init.d/apache2 start(veya durdurabilir, yeniden başlatılabilir, vb.)

Uzun cevap: Henüz yapmadıysanız, bunun için ayrı bir kullanıcı ayarlamak isteyeceksiniz ve ardından / etc / sudoers dosyasını bir kullanıcının veya grubun istediğiniz komutu yürütmesine izin verecek şekilde yapılandırın.

Örneğin, 'ben' kullanıcısının tüm komutları parola soran kök olarak çalıştırmasına izin vermek için aşağıdakileri yaparsınız:

ben ALL= ALL

'Ben'in sadece bir komutu çalıştırmasına izin vermek için (söylediği gibi rm), aşağıdakileri yaparsınız:

ben ALL= /bin/rm 

Bir komut dosyasını kullanıcı olarak çalıştırıyorsanız ve bir şifre sormak istemiyorsanız, 'NOPASSWD' seçeneğini şu şekilde kullanmak istersiniz:

ben ALL=NOPASSWD: /bin/commandname options

Aynı şeyi, gruplar için yüzde işareti olan grup adlarının önüne ekleyerek de yapabilirsiniz:

%supportstaff          ALL= NOPASSWD: /bin/commandname 

2
Bir usernameparametre alt grubu ile sınırlandırılabilir mi? Söyle start restartama değil stop?
ThorSummoner 12:15

visudoEğer bozmaması için komut Düzenlemelerinizden güvenlik kontrolleri yapar sudo/ sukazara komutu: unix.stackexchange.com/a/27595/61349
ThorSummoner

1

Kısa cevap: sudo.

Çağrı, aşağıdakine benzer: sudo /etc/init.d/apache2 restart

En kolay visudo/ etc / sudoers dosyasını ayarlamak için kullanmaktır . Bkz man sudoersve man visudodetaylar için.


OP, bir senaryo aracılığıyla bunu yapmaktan bahsetti - senaryo bir şifre giremez, bu yüzden bu cevap hiç mantıklı olmaz.
Matt Fletcher


0

Bunu ayrıca, apache2ctl'ye bir sarıcı yazıp, bir web yönetim grubuna grup sahipliği atayarak ve suid bitini ayarlayarak da gerçekleştirebilirsiniz. Bu, visudo'dan daha az genel bir çözümdür, ancak kullanıcı yetenekleri ve hata kontrolünde özel sınırlamalara izin verir.

Bu aracı kendi ihtiyaçlarım için yazdım ve github'da paylaştım: https://github.com/josiahjohnston/ltd_apache2ctl

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.