Belirli koşullar altında Apache httpd yeniden başlatmanız gereken kök olmayan bir kullanıcı altında çalışan bir komut dosyası var.
Kullanıcının bunu yapmasına izin vermemin en basit yolu ne olurdu?
Ubuntu Server 8.04 LTS kullanıyorum.
Kısa cevap:
visudo
kullanarak, kullanıcı adını uygun kullanıcı adıyla değiştirerek sudoers dosyanıza aşağıdakileri ekleyin:
username ALL = /etc/init.d/Apache2
Bunu yapmadan önce bir parola girmeniz gerekmiyorsa, aşağıdakileri kullanın:
username ALL = NOPASSWD: /etc/init.d/Apache2
Bundan sonra, 'kullanıcı adı' kullanıcı Sudo /etc/init.d/Apache2 start
(veya durdurma, yeniden başlatma vb.)
Uzun yanıt: Henüz yapmadıysanız bunun için ayrı bir kullanıcı ayarlamak ve/etc/sudoers dosyasını bir kullanıcının veya grubun istediğiniz komutu yürütmesine izin verecek şekilde yapılandırmak isteyeceksiniz.
Örneğin, 'ben' kullanıcısının tüm komutları parola isteyen kök komut olarak yürütmesine izin vermek için aşağıdakileri yaparsınız:
ben ALL= ALL
'Ben'in yalnızca bir komut yürütmesine izin vermek için (örneğin, rm
gibi) aşağıdakileri yaparsınız:
ben ALL= /bin/rm
Bir komut dosyasını kullanıcı olarak çalıştırıyorsanız ve parola sormak istemiyorsanız, 'NOPASSWD' seçeneğini aşağıdaki gibi kullanmak istersiniz:
ben ALL=NOPASSWD: /bin/commandname options
Grup isimlerini yüzde işaretiyle ön ek uygulayarak gruplar için aynı şeyi yapabilirsiniz, örneğin:
%supportstaff ALL= NOPASSWD: /bin/commandname
Kısa cevap: Sudo.
Çağrı aşağıdakine benzer: Sudo /etc/init.d/Apache2 restart
En kolayı,/etc/sudoers dosyasını ayarlamak için visudo
kullanmaktır. Görmek man sudoers
ve man visudo
detaylar için.
Bunu Apache2ctl'e bir paketleyici yazarak, 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ü üzerinde ö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