Özel bir dosya oluşturmak ve içine sihirli bir çerez yazmak için gereken düzenli bir derlenmiş uygulama yazıyorum. Dosyayı doğrudan uygulamadan yazamıyorum, sistem güvenlik modeli, hile yapmak için yükseltilmiş ayrıcalıklara sahip bir yardımcı araç başlatmamı gerektiriyor. Yardımcı araca istediğiniz sayıda argüman sağlayabilirim. Şimdi yardımcı araç olarak hizmet verecek ve dosyayı benim için yaratacak çok basit bir sistem komutu seçmek istiyorum. Bunun gibi bir şey:
/bin/sh -c "/bin/echo -n 'magic' > /some/where/file"
Basit touch
ben dosyasına çerez, bir basit yazmaya gerek olarak kesmek yok echo
dosyayı yazmak için yeniden yönlendirme ihtiyacı olarak iş yapmaz sarıcı kabuk olmadan. Böylesine önemsiz bir görevi yerine getirmek için kabuğu ayrıcalıklarla çağırmak beni rahat hissetmiyor. Dosyayı benim için yazmak için arayabileceğim gerçekten basit, kısıtlanmış bir sistem komutu var mı?
tee
. Teşekkürler!
/bin/sh -c 'echo magic > /path/to/magic/file'
? Bu yürütülebilir bir dosya ve iki argüman olabilir. Son bağımsız değişkeni bir dize olarak (sprintf veya eşdeğeriyle) oluşturmanız gerekir. Bunun sizin için işe yaramamasının bir nedeni var mı? Sorunuzdan, doCommandAsRoot () komutuna akış için girdi almıyor gibi görünüyor, değil mi? Aksi takdirde, son bağımsız değişkeni değiştirebilir ve'cat > /path/to/magic/file'
bir dize oluşturmak yerine verileri iletebilirsiniz.