Sudo kendi kullanıcı adınız ile dosya oluşturdunuz mu?


0

Gibi bir şey yapmak istesem

sudo fdisk -l > test.txt

ancak daha sonra boğulmak zorunda kalmadan test.txt dosyasının kendi kullanıcı kimliğimin altında (ve root değil) olmasını istedim, bunu yapmanın bir yolu var mı?

Özellikle asıl amacım bir python betiğinin bir dizi sudo izin işlemlerini gerçekleştirmesini sağlamak ve çıktıları boşaltmak. Akış şöyle bir şeyse sudo izinlerini ne şekilde sormam gerekir:

somescripts
 \-> runs python script, grabs sudo
      \-> runs operation with sudo permissions
      |     like fdisk -l > test.txt
      \-> runs operation with sudo permissions, reads stdout, writes stdout to file
            like fdisk -l --> reads stdout --> make file --> writes data to file

Teşekkür ederim.

Yanıtlar:


2

Kullanabilirsiniz tee. Yaptığı tee stdin'i bir dosyaya yazmak ve onu stdout'ta da yankı yapmaktır. Bir boru ve sudo ile kullanmak etkin kullanıcıyı çıktı yeniden yönlendirmesi için etkili bir şekilde değiştirir. Borunun sol tarafının aslında stderr'a değil stdout'a yazması gerektiğini unutmayın.

sudo fdisk -l | sudo -u myuser tee <file>

2
$ sudo fdisk -l > test.txt
$ ls -l test.txt
-rw-r--r-- 1 daniel daniel 1848 apr 22 14:20 fd

Daha sonra tarif ettiğiniz gibi yönlendirmeyi kullanırken dosyanın sahipliğini değiştirmek gerekmez.

Kullanırken tee önerildiği gibi, kullanması gerekmeyen aynı yerde sudo -u myuser:

sudo fdisk -l | tee test.txt

yeterli (ancak yukarıdaki gösteriye göre bu durumda gerekli değildir).


Python betiği bağlamında, eğer çalıştırırsanız tüm komut dosyası gibi root üzerinden sudo, sonra yönlendirme aynı zamanda yapılacak root, ama sadece kullanırsanız sudo Betik içindeki önceki komut satırı örneğinde olduğu gibi, yukarıdaki gibi davranır.

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.