Küçük bir yardımcı program yazıyorum. sudoGerekirse bir şeyleri çalıştırmayı denemek istiyorum .
Yani: dosya izinleri geçerli kullanıcının belirli bir dosya üzerinde çalışmasına sudoizin vermezse (ve kurallar izin verirse) yardımcı programım sudodosyanın sahibi olarak bir şey çalıştırmak istiyorum .
Bu yeteneği önceden kontrol etmeyi umuyorum, çünkü sistem günlüklerinin başarısız sudodenemelerden kaynaklanan gürültü ile dolmamasını tercih ederim . Gibi sudokendisi başarısızlık üzerine raporlar: "Bu olay rapor edilecektir".
Yani, programlama yoluyla kontrol umuyorum: edebilir user <x>çalıştırmak command <y>yoluyla sudo?.
Sorun şu: /etc/sudoersbu eşlemeyi içerirken , kök sahip ve normal kullanıcılar tarafından okunamıyor.
Çalıştırmak için bir alt işlem yumurtlamayı düşünüyordum sudo -l(mevcut kullanıcının sudo-run komutları çıktı). Sonra bunun çıktısını ayrıştırırdım. Ancak, bu biraz kırılgan görünüyor. Çıktı istediğim bilgiyi içeriyor, ancak görünüşe göre insanlar okumak için tasarlandı (programlı tüketim için değil). Çıktının gelecekte veya farklı platformlarda aynı biçimi izleyeceğine dair herhangi bir garanti olup olmadığını bilmiyorum.
sudo -lÇıktının programlı ayrıştırılması güvenli kabul ediliyor mu? Değilse, bir sudo komutunun başarılı olup olmayacağını önceden belirlemek için daha iyi seçenekler var mı?
(X / Y'de arka plan: Bu yardımcı program sınırlı erişimli bir rol hesabı tarafından kullanılmak içindir. Bazı kullanıcıların etkin bir şekilde sınırlı erişim hesabının sudo kuralları aracılığıyla dosyalarında çalışmasına izin vermesini bekliyorum. Ancak kazandım. önceden diğer kullanıcıların hangi sudo kuralının geçerli olduğunu bilmiyorum)