Yanıtlar:
Aslında, tipik bir çağırma sudoparolayı hiç okumaz stdin. Bunun yerine, sudokontrol terminaline (a ttyveya pty, /dev/ttyözel dosya aracılığıyla ) doğrudan erişecek ve istemi çıktıracak ve karakterleri doğrudan okuyacaktır. Bu tgetpass.c, sudokaynaktaki dosyada görülebilir .
Birkaç başka senaryo var:
askpassprogram belirtilirse, örneğin -Aparam içerisinde, o program çağrılır.sudookuma talebinde bulunursanız - ve ayrıca soruyu da yazar . MadHatter'ın cevabının geçerli olduğu durum budur.stdin-Sstderrttymevcut
değilsevisiblepwbayrakla kontrol edilir sudoers) sudobir hata bildirir:no tty present and no askpass program specifiedsudokullanmaya geri düşecek stdinve stderrbunun özel olarak talep edilmese dahi. MadHatter'ın cevabı da burada geçerli olacak.Boru sudo catstdout'unu stdin'e bağlar less, bu nedenle sudo catstdin etkilenmez ve şifreyi alabilir.
İstemi gelince, sudo catstderr üzerinde gider ; bash’de, bunu kullanarak stdout ile yeniden yönlendirmeyi deneyin.
sudo cat /etc/resolv.conf |& less
ve cevabın ne kadar farklı olduğunu görün.
sudostdin'in hala '' '' '' '' '' komutu '' '' '' '' '' '' '' '' '' '' '' 'W-G--B -B-BFBF \' ' Bu cevap doğru stdin' s hala terminal komutuna example komutu ile bağlı olsa da, bu onun şifresini nasıl doğrudan aldıkları ile doğrudan ilgili değildir: varsayılansudoolarak stdin üzerinden şifre istemeyecek ya da komut istemi göstermeyecektirstderr- siz2>/dev/nullBunu doğrulamaya çalışabilirim . Bunun yerine,sudodoğrudan tty'ye erişir.