Sudoers dosyasının bu konfigürasyonunda yanlış olan ne?


0

Bir kabuk betiğini başka bir kullanıcı olarak yürütmem gerekiyor, ancak bir şifre sorulmuyor.

Aşağıdaki satırı ekleyerek /etc/sudoersdosyayı düzenledim visudo.

_www  localhost=(otheruser) NOPASSWD:bin/sh /path/to/my/script.sh

Nasıl sudoçalıştığını _wwwanlarsam, kullanıcının otheruserparola girmeden yalnızca yerel ana bilgisayardan benzer bir kullanıcı tarafından çalıştırılmasına izin verildiği anlamına gelir .

Bu doğru mu? Çünkü sistem şifre sormaya devam ediyor.


Bu garip. Örneğinizi visudotest ettiğimde şikayetçiydim. Sorun göreceli yoldu bin/sh. Komut önceden tanımlanmış yoldayken, mutlak yolu /bin/shdoğru cevapta yazıldığı gibi yazmalı veya dizin yolu belirtmemelisiniz sh. Bu sürüme visudo -Vvisudo version 1.8.3p1visudo grammar version 40
sahibim

Yanıtlar:


1

Doğru yoldan koyman gerektiğini düşünüyorum, ilk '/' harfini kaçırıyorsun

_www  localhost=(otheruser) NOPASSWD:/bin/sh /path/to/my/script.sh

Sonra komutu tam olarak dosyada göründüğü gibi deneyin. _Www olarak giriş yaptığınızı varsayalım:

sudo -u otheruser /bin/sh /path/to/my/script.sh

Eğer hala isterse, yanlış bir şey var ...


Gerçekten / bin / sh'a ihtiyacınız var mı? Çoğu kabuk komut içerdiğini üstündeki ..
NickW

1
@NickW: Betiğin ilk satırındaki shebang dizisinden bağımsız olarak kullanıcıyı belirli bir kabuğa zorlamak istiyorsanız bu önemli olabilir.
pabouk

@pabouk Bunu yapmak için bir neden olmamalı, shebang doğru kabuğu işaret etmelidir. Bir kullanıcının kabuğu değiştirdiği için endişeleniyorsanız, önce betiği değiştirme yetkisine sahip olmamalıdırlar.
Stefan Nuxoll

@NickW - Senaryonun bir shebang olduğunu veya izinlerini çalıştırdığını varsayabilir misiniz? Çalıştırılacak komut "sh / path / to / script" ise? OP, komutun ne olduğunu belirtmedi, ancak "./script" yerine tam komutun yerine getirilmesi gerekiyorsa, kesinlikle ikili dosyaya giden tam yol gerekli midir?
arco444

İnsanların kendi seçtiğim bir betiği çalıştırmasına (değiştirmemesine veya okumamasına) izin vermek için sudo güçleri kullanıyorum .. başka amaçlar için kullanmaya karşı hiçbir şey yapmıyor, ancak kullanıcılarım yalnızca bu betiği yazıldığı gibi çalıştırabilir.
Nick

0

İşte sudoers dosyamın çalışan bir satırı:

www-data ALL=(ALL) NOPASSWD: /usr/local/bin/myapp

Bununla birlikte karşılaştığım sorun, bunun benim sunucumda çalışmasını sağladığımda aslında sudoers dosyası olmadığında, çalıştırılabilir uygulamanın web uygulamasından çağrılma şekliydi. PHP veya Python dosyanızdaki sistem çağrısının sözdiziminin doğru olduğundan ve argümanlarınızın doğru bir şekilde iletildiğinden emin olun.

Çalışma örneğim, subprocess.Popenbu snippet'i kullanan ve görünen bir Python dosyasından :

args = '/usr/bin/sudo /usr/local/bin/myapp -v'
p = Popen(args, stdout=PIPE, stderr=STDOUT, shell=True).communicate()

Bu yardımcı olur umarım.

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.