Sudo ile bir komut belirli bir yoldan nasıl çalıştırılır?


0

Uzaktan kumandalı robotlarla otomasyon kuruyorum. Bu botların sadece belirli komutları çalıştırmak için tam olarak izinleri olması şarttır ( sudoerskeyfi komutlara izin vermek için izinleri fazla açamıyorum ).

İyi çalışıyor, ihtiyacım olan birkaç komutu ayarlayabilirim ve şifre sınırlamasını aşabilirim (çünkü sudogirişte şifreleri girme imkânı yoktur ) dosyasındaki NOPASSWDyönergeyle sudoers. Ama bir problem var. Bazı senaryolar, özellikle de bazılarında yazılmışlar ... er, PHP çerçeveleri ... projenin kökü olarak kabul edilen belli bir dizinden çalıştırılmayı bekler.

Bu dizin başka bir kullanıcıya www-dataveya apacheçoğu zaman aittir . Tamam, botu betiği bu kullanıcı olarak çalıştırması için yetkilendirebilirim, ancak cdetkileşimli olmayan bir oturumda doğru yolu bulamıyorum, çünkü dosyaya cdkomut olarak dahil etmek mümkün değil sudoers.

Normalde benim yapacağım şey şunun gibi bir şey cd /var/www/path/to/app && php whatever.php --some argsama sudoersdosyaya bu şablonu kurmanın bir yolunu bulamıyorum , mümkün görünmüyor.

Bunu aşmanın bir yolunu biliyor musun?

Yanıtlar:


0

Tanıdığım tek iş, kodunuzu içeren küçük bir kabuk betiği oluşturmak ve ardından kullanıcının / botun betiği çalıştırmasına izin vermek olacaktır.

sudo cd /var/www/path/to/app && php whatever.php --some args

çalışmayacak çünkü bu iki komut ve sudo bir tane çalıştırmanıza izin veriyor. ama eğer bunu küçük bir betiğe koyarsanız (/var/www/scripts/something/script.sh diyelim):

#!/bin/bash
cd /var/www/path/to/app && php whatever.php --some args

Kullanarak çalıştırabilirsiniz

sudo /var/www/scripts/something/script.sh
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.