Bir sudo komutu için bash process substitution kullanmak istiyorum. ÖrneğinBir sudo komutu için bash process substitution kullanma
, burada olmayan bir sudo benim için çalışıyor komut var:
$ cat <(echo "installed.txt")
installed.txt
Ve burada çalışmıyor emir komuta sudo sürümü:
$ sudo cat <(echo "installed.txt")
cat: /dev/fd/63: Bad file descriptor
sudo adam sayfasını Okuma Sudo, komutu root olarak çalıştırmadan önce stdin/stdout/stderr dosya tanımlayıcılarını kapatır. Bu, bash'un sudo komutunu çalıştırmadan önce betiğin tanımlayıcısını (ve işlem değiştirmeyi gerçekleştirmesini) sağladığını düşünmeme yol açar.
Kökün kabuğunu bash olarak değiştirdim (sh varsayılanı yerine). Kök olarak oturum açıldığında komutun düzgün çalıştığını test ettim. Sadece sudo komutuyla çalışmaz.
Burada yapmaya çalıştığım şeyi elde etmek için uygun teknik nedir? Değerlendirin, teklif, sudo bayrağı, sudoers dosya modu, diğer?
Her şey bir teklidir; Bunu yapmaktan kaçınmak isterim. –
@ClaytonStanley Sonra diğer (çok iyi) cevaplarda verilen çözümleri kullanın ... –