root olmayan hesaptan root işlemleri nasıl yapabilirim?


15

Bir php komut dosyasından hizmetleri yeniden başlatmak istiyorum. www-kullanıcı hesabı altında çalışır.

Bu eylemleri gerçekleştirmenin tercih edilen yolu nedir?

Ben CRON tarafından okunan que'd komutları ile bir dosya oluşturmak yerleştirebilirsiniz keşif, ancak çözüm kaşınıyor.

Düşündüğüm, kök altında çalışan, önceden tanımlanmış "yöntemlere" izin veren küçük bir hizmettir, bu nedenle keyfi kök eylemleri yürütülemez.

Bunun için bir araç var mı?


@MadHatter, Mona Lisa; selamlarını gönderir ;-)
user65297

Yanıtlar:


27

Tekerleği yeniden icat edebilirsiniz, ama dürüst olmak gerekirse, bunun için şifresiz sudo kullanıyorum. Örneğin, izleme sistemimin donanım RAID'ini kontrol etmek için bir komut çalıştırabilmesi gerekir. Bu, kök ayrıcalığı gerektirir, ancak tüm izleme sistemini kök olarak çalıştırmak istemiyorum, bunun yerine sudoersşöyle diyor:

nagios  ALL=(root) NOPASSWD: /usr/lib/nagios/plugins/check_md_raid

ve sudo /usr/lib/nagios/plugins/check_md_raidRAID'i kontrol etmem gerektiğinde komutu izleme kullanıcısı olarak çalıştırın .

Bir sudoers hattınız olabilir.

www-user    ALL=(root) NOPASSWD: /etc/rc.d/init.d/myservice

sonra php yürütmek var sudo /etc/rc.d/init.d/myservice restart.


2
IMO'ya gitmenin yolu budur. Bu işlemi benzer bir görev için kullandım. 3 yıldır üretimde. Hiçbir şey başarısız olmamıştır ve uygulama mantığınızla doğru şekilde tetikleyen PHP kodunu koruduğunuz sürece güvenlik riski neredeyse yoktur.
Andrew Ensley

1
Teşekkürler, sudoers benim için yeni ve hedefe bang. @Andrew, ek bilgi için teşekkürler.
user65297

1
user65927, bu size bir haber değilse beni affet, ancak yerel görgü kuralları, bir soruya tatmin edici bir cevap verdiğinizde, yanındaki onay işaretine tıklayarak onu kabul ettiğinizdir.
MadHatter

1
Ayrıca sudoers dosyanızdaki "Defaults requiretty" satırını da yorumlamanız gerekebilir. Bu adım beni birkaç kez yakaladı. (Örneğin, "Varsayılanlar requiretty" yi "#Defaults requiretty" olarak değiştirin)
steve.lippert

6

Bir göz atın sudo : o (sizin durumunuzda root) başka bir kullanıcı olarak yapılabilir eylem belirlemenizi sağlar.

Örneğin, adresinize ekleyebilirsiniz /etc/sudoers(dosyayı doğrudan kullanmayın visudo)

www-user-account ALL= NOPASSWD: /usr/bin/mypredefinedaction

man sudoDosyanın ayrıntıları ve sözdizimi için bkz .


2
/etc/sudoersdosyayı düzenlerken ÇOK dikkatli olun . Herhangi bir şekilde sözdizimsel olarak yanlışsa, geri değiştirmek kabusa geri dönmeniz gereken bir kabus b / c'dir sudo, ancak s / b'yi sudo'yu sildiniz. Bir kurtarma CD / DVD'si kullanmak zorundasınız ve bölümü manuel olarak monte ediyorsunuz.
puk

1
@puk Aslında ürperticileri düzenlemek için root erişimine ihtiyacınız vardır ve dosyanın zarar görmesi durumunda root olarak giriş yapabilir ve ardından geri yükleyebilirsiniz (yedek kopyadan) veya manuel olarak düzeltebilirsiniz. visudo ayrıca dosyayı yazmadan önce akıl sağlığı kontrolleri yapar.
Matteo

nedir shudders? Doğru visudo akıl sağlığı kontrolleri yapar, ancak hasar yapıldıktan sonra yardımcı olmazlar: P
puk
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.