Parola girme neden pipolu sudo komutunda çalışıyor?


25

Eğer yaparsam:

sudo cat /etc/resolv.conf | less

Daha az (muhtemelen) stdin alsa bile, şifre sormamı sağlayacak. Hangi şifre üzerinden şifre istemi gösteriliyor ve girişi nasıl geri alıyor?

Yanıtlar:


48

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:

  • Bir askpassprogram belirtilirse, örneğin -Aparam içerisinde, o program çağrılır.
  • Aksi takdirde, örneğin bayrakla - özellikle sudookuma talebinde bulunursanız - ve ayrıca soruyu da yazar . MadHatter'ın cevabının geçerli olduğu durum budur.stdin-Sstderr
  • Aksi takdirde, ttymevcut değilse
    • Şifre eko devre dışı bırakılmışsa (varsayılan olarak, visiblepwbayrakla kontrol edilir sudoers) sudobir hata bildirir:no tty present and no askpass program specified
    • Aksi takdirde, sudokullanmaya geri düşecek stdinve stderrbunun özel olarak talep edilmese dahi. MadHatter'ın cevabı da burada geçerli olacak.

10

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.


16
Bu cevap, 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ılan sudoolarak stdin üzerinden şifre istemeyecek ya da komut istemi göstermeyecektir stderr- siz 2>/dev/nullBunu doğrulamaya çalışabilirim . Bunun yerine, sudodoğrudan tty'ye erişir.
Bob,
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.