Sudo, gerçekten `sudo`ya ihtiyaç duymayan bir komut verildiğinde şifre isteyip istemediğine nasıl karar verir?


10

sudoGerçekten ihtiyaç duymayan bir komuta başvururken sudo,

  • bazen şifremi istemiyor. Örneğin $HOME, altında sudo ls.

  • Ama hatırlıyorum, başka bir komut için bunu yapıyorum, ama hangisini unutuyorum.

Yani merak ediyorum sudoaslında ihtiyacı olmayan bir komutu verildiğinde, bir şifre istemek için karar verir sudo? /etc/sudoersBunu belirtmede bir kural var mı ?

Benim asıl sorun, dubazı dizinler için kullandığım için bazen kullandığımda bazen bazı dizinler için "izin reddedildi" ve bazen değil. Ne olursa olsun başvuruyorum sudove dune olursa olsun bir şifre isteneceğini düşündüm, ama aslında kendi dizinlerimde değil.


15
Bir program karar vermek istiyorum aslında programını çalıştırmadan, yalnızca kök yapabileceği bir şey yapmak ya çağıran kullanıcı erişimi yasak olduğunu bir dosyaya erişmek için teşebbüs, kılık değiştirmiş Sonlanma Problemi olduğunu. Yani sudo'nun böyle yapmadığından emin olabilirsiniz.
zwol

2
+1 çünkü soru yanlış bir kavrayışı temel alsa da, belirtiler açıkça açıklanmıştır ve açık bir cevabı vardır.
18:13

Yanıtlar:


22

Tipik bir yapılandırmada, komut önemsizdir. Sudo'yu ilk kez kullandığınızda şifrenizi girmeniz ve önümüzdeki 15 dakika boyunca söz konusu kabukta şifrenize ihtiyacınız yoktur.

Bilgisayarın bakış açısından, “sudo gerektiren komut” diye bir şey yoktur. Herhangi bir kullanıcı herhangi bir komutu çalıştırmayı deneyebilir. Sonuç, "İzin reddedildi" veya "Böyle bir dosya veya dizin yok" gibi bir hata mesajından başka bir şey olmayabilir, ancak komutu çalıştırmak her zaman mümkündür.

Örneğin, duerişim izniniz olmayan içeriğe sahip bir dizin ağacında çalışırsanız, izin hataları alırsınız. “İzin reddedildi” demek budur. Çalıştırırsanız sudo du, sudo dukök olarak çalışır , bu nedenle izin hataları almazsınız (root hesabının noktası budur: root¹ her zaman izne sahiptir). Çalıştırdığınızda sudo du, dukök olarak çalışır ve başladıktan sudosonra hiç dahil olmaz du. Du'nun izin hatalarıyla karşılaşıp karşılaşmadığı, sudo'nun çalışma şekliyle tamamen alakasızdır.

Yararlı bir şey yapmak için sudo'ya ihtiyaç duyan komutlar vardır . Yararlılık insani bir kavramdır. Komut root olarak çalıştırıldığında yararlı olsa da, hesabınız altında çalıştırılmıyorsa sudo (veya komutu root olarak çalıştırmak için başka yöntemler) kullanmanız gerekir.

Sudo'nun şifrenizi isteyip istemediği iki şeye bağlıdır.

  1. Yapılandırmaya bağlı olarak, sudo, kimlik doğrulamanızın gerekip gerekmediğine karar verir. Varsayılan olarak, sudo bir parola gerektirir. Bu, authenticateseçeneğin false olarak ayarlanması ve NOPASSWDetiketle ilgili bir kuralın olması da dahil olmak üzere çeşitli şekillerde kapatılabilir .
  2. Sudo parolanızı gerektiriyorsa, önbelleğe alınmış bir değer kullanmak içerik olabilir. Bu sudo'nun parolanıza ihtiyaç duymasının nedeni, onu kimin aradığını doğrulamak değil (sudo, kullanıcının ne çağırdığını biliyor) değil, klavyeniz üzerinde kontrolü ele alan birisinin değil de komutlarda olduğunuzu doğrulamaktır. Varsayılan olarak sudo, şifrenizi 15 dakikadan daha kısa bir süre önce girdiyseniz hala komutlarda olduğunuzu düşünmeye isteklidir (bu timeoutseçenekle değiştirilebilir ). Aynı terminalde şifreyi girmeniz gerekir (böylece bir terminalde oturum açmışsanız, o terminali gözetimsiz bırakıp başka bir terminal kullanırsanız, birileri 'tty_tickets

¹ neredeyse, ama bu konu kapsamı dışında.


Yürütülebilir bitin başkaları için değil, yalnızca kök için ayarlanmış dosyaları olabilir. Bu "yürütmek için kök gerekir" kadar düşebilir. (Sadece
nitpicking

@ PaŭloEbermann Bu (nadir) olay hakkında nitpike yapmaktan kaçınmak için “herhangi bir kullanıcı herhangi bir komutu çalıştırmayı deneyebilir ” yazdım . Her zaman bir nitpicker vardır :(
Gilles 'SO- kötü olmayı bırak'

45

sudoçalıştırması istenen komutun başka bir kullanıcı (genellikle kök) olarak çalıştırılması gerekip gerekmediğini bilmiyor, tek bildiği şey onun yapılandırması. Bu, hangi kullanıcıların çalıştırılmasına izin verildiğini sudo, hangi kullanıcıların “hedef” olduğu ve hangi komutlar için; ayrıca bir parola gerekip gerekmediğini, hangisinin gerekli olduğunu ve kimlik doğrulama jetonunun saklanıp saklanmayacağını belirler.

Varsayılan Debian yapılandırmasını kullanıyorsanız, ikincisi burada yer alan sudoşeydir: herhangi bir terminalde ilk kez kullandığınızda şifrenizi soracak, o zaman belirli bir süre için bir kimlik doğrulama jetonu tutacaktır. sudoAynı zaman diliminde aynı terminalde yeniden kullanırsanız , sizden şifre istenmez.


Teşekkürler. Şunu mı sudo du /path/to/some/dirhep benim şifresine ihtiyacınız veya hiçbir zaman, ne olursa olsun her iki olmalıdır /path/to/some/dir?
Tim

12
Evet. Her zaman şifrenize ihtiyaç duyacaktır (veya gerekmeyecektir). Açıkçası, şifrenize ihtiyacı varsa, ancak zaten önbellekte sakladıysa, girmenizi istemez.
dr_

5
Kesinlikle söylemek gerekirse yola bağlı olabilir , çünkü /etc/sudoerskomutları ve argümanlarını belirtebilir. Ancak böyle bir şey eklemediyseniz sudoers(ve eğer varsa, bunun farkında olacağını ummalıyım), argümanlar önemli olmayacaktır (root üzerinden genel erişiminiz varsa komut da sudo).
Stephen Kitt

19
sudoşifrenizi önbellekte saklamaz, yalnızca kimliğinizin bir kez parola kontrolü ile doğrulanmış olduğunu gösterir. Yana sudobir setuid kök programdır, zaten o herkes gibi bir şey çalıştırmak için gereken tüm izinleri var - ama belirtildiği gibi kullanıcıların tam olarak kullanmasına izin sadece güvenilen sudoersdosyası ve kullanmak için, diğer tüm girişimleri reddetmeye . Bu yüzden bu kadar sudoküçük ve çok iyi çalışılmış bir program olması önemlidir .
telcoM

6

sudo gerektirmeyen bir komuta

Bir komutun sudo'ya ihtiyacı olması ya da ihtiyacı yoktur . Koştuğunda

sudo -u user command

sistem çalışır commandşekilde user.

Çağrının başarılı olup olmadığı ve parola sorulup sorulmadığı, güvenlik ilkesine sudoers(genellikle yapılandırılır /etc/sudoers) bağlıdı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.