İşletim sistemi bir komutun sudo'ya ihtiyacı olduğunu nasıl biliyor?


16
  1. Yürütülebilir bir dosya çalıştırdığınızda, işletim sistemi bazen izninizi reddeder. Örneğin make install, önek bir sistem yolu olmakla sudoçalışırken, önek sistem dışı bir yol olarak istenmez sudo. İşletim sistemi, yürütülebilir bir dosyayı çalıştırmanın, program bir şey yapmadan önce bile kullanıcının sahip olduğundan daha fazla ayrıcalık gerektireceğine nasıl karar verir?
  2. Bazen, bir programın çalıştırılmasına izin verilmez, ancak program çalıştırılırsa daha fazla şey yapabilir sudo. Örneğin, dubazı sistem dizinlerinde çalışırken , sadece sudobazı dizine erişebilir. İşletim sistemi neden böyle bir programı çalıştırma iznini reddetmiyor veya program çalıştırılmadan önce daha fazla ayrıcalık bildirmek tercih ediliyor?
  3. Çalıştığı zaman sudo, suaynı zamanda çalışacağı ve suçalıştığı zaman sudoda çalışacağı doğru mu? veya ile su, bir kullanıcı ile daha fazlasını yapabilir sudo? İşletim sistemi ne zaman sudove ne zaman sugerekli olduğuna nasıl karar verir ?

Bu soru sizin için cevaplandı mı yoksa daha fazla bilgi mi istiyorsunuz?
ctrl-alt-delor

Yanıtlar:


14
  1. Bazen "İzin reddedildi" iletisi, örneğin yazma erişiminizi reddeden dosya sistemi izinlerinden kaynaklanır. Yürütülebilir dosya / araç, dosya sisteminin ne yapmak istediğinizi yapmanız için yeterli izin verip vermediğini denetler ve dosya sistemi tarafından reddedilirse bir hata atar. Diğer durumlarda, aracın kendisi, kullanmaya devam etmenize izin vermeden önce kullanıcı kimliğinizi kontrol eder.
  2. Bir programı çalıştırdığınızda, programı sudobaşka bir kullanıcının adı altında çalıştırıyorsunuz demektir. Bu kullanıcı, kullanıcılarınızdan "daha fazla şey yapabilir" ve sudoyapılandırma, bu işlemleri diğer kullanıcının adına sudoyapmanıza izin veriyorsa , evet, daha fazla şey yapmanıza olanak tanır. Yine de bu gerekli değildir. sudoKomut satırının başında yapışırsanız , aslında sudo, rootsadece ölümlü olmaktan çok daha fazla şey yapabilirsiniz.
  3. Kesinlikle hayır. Kullanmak sudoiçin kendi kullanıcı şifrenizi girmeniz ve ardından hedef kullanıcı adına bazı şeyler yapmanıza izin verilir. Kullanmak için su, hedef kullanıcının parolasına ihtiyacınız vardır ve parolanız varsa, sistem söz konusu olduğunda hedef kullanıcı haline gelir ve kullanıcının yapabileceği her şeyi yapabilirsiniz.

Ayrıca bakınız


Teşekkürler. "Dosya sistemi izinleri yazma erişimini engelliyor" = "dosyanın erişim modunda kullanıcı için chmod tarafından ayarlanabilecek bir yürütme biti yok mu?
Tümü

1
@Tim Aslında "dosyasının erişim modu hiçbir sahiptir = yazma kullanıcı için biraz seti". Ve evet, elbette bu kutu giderilemeyecek chmodDosyanın sahibi veya iki konum sağladı root.
Joseph R.

Sudo'nun gerekli ve tamamen ve yalnızca yürütme bitinin kullanıcı için ayarlanmamasına bağlı mı? Bkz. Unix.stackexchange.com/q/147052/674
için

@Tim Açıkçası, yürütülebilir dosyayı ilk önce çalıştırabilmek için yürütme bitine ihtiyacınız var.
Joseph R.

1
@JosephR. Açık değil. chmod 400 hello && /lib64/ld-linux-x86-64.so.2 ./hellogüzel bir "Merhaba Dünya!" çıktı.
doneal24

24

Açıkladığınız amaçlar doğrultusunda, işletim sistemi programı ilk olarak çalıştırmak için sudo'ya ihtiyacınız olup olmadığına karar vermez . Bunun yerine, program çalışmaya başladıktan ve geçerli kullanıcının izin vermediği bir şey ( /usr/binyeni bir komut yüklemek için bir dosya yazmak gibi) yapmaya çalıştıktan sonra , işletim sistemi dosya erişimini engeller. Bu koşulu üstlenecek eylem programa bağlıdır; makeçalışmayı durdurur ancak dubir ileti yazdırıldıktan sonra sonraki dosyaya / dizine ilerler.

suVe sudokomutları kök ayrıcalıklarına sahip bir program çalıştırarak iki farklı yolu vardır. Kullanılan seçeneklere bağlı olarak, yeni programı başlatırken ortamın içeriği gibi küçük ayrıntılarda farklılık gösterebilirler. İşletim sisteminin biri veya diğerinin ne zaman çalışabileceğine karar vermesine gerek yoktur.


6

suve sudoayrıcalıklı programlardır. su(başarılı bir kimlik doğrulamasından sonra) gerçek ve etkili kullanıcı ve grup kimliğini sizin yaptığınız kullanıcı olarak sudeğiştirir. Böylece subenzer login. suSadece root değil, herhangi bir kullanıcıya geçmek için kullanılabileceğini unutmayın . sudoayrıca gerçek ve etkili kullanıcı ve grup kimliklerini de değiştirir. Bu noktaya kadar suve sudobenzer (ama ilgisiz), bunun ötesinde çok farklılar.

İle su, hedefin şifresini bilmeniz gerekir ve bir kez kimlik doğrulaması yaptıktan sonra, o kullanıcı olarak ne istersen yapabilirsiniz. Kullanımı suayarlayarak sınırlandırılabilir SU_WHEEL_ONLYiçinde /etc/login.defs. Ayarlanmışsa, yalnızca gruptaki kullanıcılar wheelkullanabilir su, aksi takdirde sınırlandırılmaz. Bunun dışında, suya hep ya hiç.

sudobu konuda tamamen farklı. İle sudoer (çağıran kullanıcı ) yapmasına izin verilen şey konusunda sudooldukça karmaşık politikalar tanımlayabilirsiniz . Örneğin, belirli kullanıcıların yalnızca belirli ayrıcalıklara sahip belirli programları çalıştırabileceği ilkeleri tanımlarken, diğer kullanıcılar başka ayrıcalıklara sahip başka programlar çalıştırabilir./etc/sudoerssudo

Çarpıcı özelliklerinden biri sudo, kullanıcının kendi şifresi ile (hedef yerine) kendi kimliğini doğrulaması gerekecek şekilde yapılandırabilmenizdir . Böylece, sudoyöneticiler arasında çok popüler hale geldi, çünkü kullanıcılara süper kullanıcı şifresini ele almadan sadece tanımlanmış ayrıcalıklı işlemleri yapma yetkisi veriyor, ayrıca bir dereceye kadar hesap verebilirlik elde ediyorsunuz.


2

tl; dr Access, uygulamayı çalıştıran ve sudouygulamaları farklı kullanıcı olarak çalıştıran kullanıcı tarafından belirlenir .

Tam versiyon:

İşletim sistemi bir komutun sudo'ya ihtiyacı olduğunu nasıl biliyor?

Bilmiyor. UNIX izinleri uygulama düzeyinde değil dosya sistemi düzeyinde yönetir: kullanıcıların belirli dosyalara erişmesine izin verilir. Uygulamalar daha sonra kullanıcı adına çalıştırılır - çalışan her işlemin kendisiyle ilişkilendirilmiş kullanıcısı vardır. Bu kullanıcı, söz konusu uygulamanın izinlerini belirlemek için kullanılır. Sudo, uygulamaları diğer kullanıcı adına (başka bir kullanıcıyla ilişkili izinlerle), yani rootsüper kullanıcıyla çalıştırarak çalışır.

Örnekleriniz gelince:

  1. Kullanıcının belirli bir dizine yazma erişimi varsa, make installbu dizine girebilir . Aksi takdirde rootbunu kullanarak yapmış olabilirler sudo.

  2. Bir dizindeki dosyalara duerişemiyorsanız, bunun için çalışan dosyaya da erişemezsiniz. roothemen hemen her dosyaya erişebildiğinden, sudo du( duadına çalıştır root) dosyalara da erişebilir.

Sudo her çalıştığında, su da çalışacak ve su her çalıştığında, sudo'nun da çalışacağı doğru mu?

Evet ve hayır. Evet, eğer program gerçekten çalışıyorsa, hem sudove altında aynı şekilde davranmalıdır su. Bununla birlikte, sudosağlar, /etc/sudoersdosyada saklanan kurallar kümesiyle kimin neyi çalıştırabileceği konusunda daha ayrıntılı denetim sağlar . sudaha basittir - hedef kullanıcının şifresini biliyorsanız, bu kullanıcı adına programlar çalıştırabilirsiniz.

Son not: uygulamanın erişim reddini nasıl ele aldığını (kullanıcıyı iptal ettiği veya yok saydığı veya uyardığı yerlerde) uygulamaya bağlıdır.


1

Henüz kimsenin ✓'si yok, bu yüzden aklıma gelen her şeyi içeren bir cevap oluşturdum.

1 Bir yürütülebilir dosya çalıştırdığınızda, işletim sistemi bazen izninizi reddeder. Örneğin, make install öneki bir sistem yolu varken sudo'ya ihtiyaç duyarken, prefix sistem dışı bir yol olması sudo için istenmez. İşletim sistemi, yürütülebilir bir dosyayı çalıştırmanın, program bir şey yapmadan önce bile kullanıcının sahip olduğundan daha fazla ayrıcalık gerektireceğine nasıl karar verir?

Hayır, yürütülebilir bir dosya başlatıldığında yapılmaz. Yürütülebilir dosya bir şey yapmaya çalıştığında yapılır.

İşletim Sistemi, dosya sistemi izinlerini ve yeteneklerini kontrol eder (bunlar dosya sistemi izinleri kapsamında değildir ve güzel düzey, mknode, bazı düşük düzey ağ öğelerini azaltma, başkalarının işlemlerini öldürme, yeniden başlatma, zamanı ayarlama vb. İçerir). Eğer izinleriniz yoksa, bunu yapamazsınız. Kök, CAP_DAC_OVERRIDE (dosya iznini yoksay) dahil olmak üzere tüm özelliklere sahiptir.

2 Bazen, bir programın çalıştırılmasına izin verilmez, ancak program sudo ile çalıştırılırsa daha fazla şey yapabilir. Örneğin, du bazı sistem dizininde çalıştırıldığında, yalnızca sudo ile bazı dizine erişebilir. İşletim sistemi neden böyle bir programı çalıştırma iznini reddetmiyor veya program çalıştırılmadan önce daha fazla ayrıcalık bildirmek tercih ediliyor?

İşletim sistemi programın ne yapacağını bilemez. Bu nedenle, başlamadan önce izinleri kontrol etmek ve ne yapacağınıza karar vermek programa bağlıdır. Ancak bunu yapmak zorunda değildir.

Not: Android'de bir manifest var, bu uygulamada hangi ayrıcalıkları kullanabileceğini açıkladı. İşletim sistemi, beyan etmediği bir ayrıcalık kullanmaya çalışan herhangi bir uygulamayı öldürür ve işletim sistemi her zaman bir ayrıcalığın onurlandırılabileceğini garanti etmez. ağ erişimi mevcut olmayabilir.

2 sudo her çalıştığında, su da çalışacak ve su her çalıştığında, sudo'nun da çalışacağı doğru mu? veya su ile, bir kullanıcı sudo'dan daha fazlasını yapabilir mi? İşletim sistemi sudo'nun ne zaman ve ne zaman su gerektiğine nasıl karar verir?

sudove sukabaca bir şeyler yapın. Bazı farklılıklar, ortam değişkenlerinin işlenmesi ve diğer güvenlik sorunlarından kaçınmadır. Bununla birlikte, her ikisi de başka bir kullanıcı olmanıza izin veren araçlardır ve her ikisinin de varsayılan bir kök kullanıcısı vardır.

su orijinal araçtır, değiştirdiğiniz kullanıcı / grubun şifresini girmenizi gerektirir.

sudo, daha yenidir ve varsayılan olarak kendi parolanızı girmenizi gerektirir, ancak geçiş yaptığınız kullanıcı / grubun parolasını kabul edecek veya hiç parola kabul etmeyecek şekilde yapılandırılabilir. Ayrıca, bu makinede bu kullanıcı için hangi programla, kimin için çalışacağı, kim için ve bu programla nasıl kimlik doğrulaması yapılacağı konusunda çok fazla yapılandırmaya izin verir. Orada da sudoeditbunun bir parçasıdır sudove farklı bir kullanıcı olarak düzenleme izin ve (yükseltilmiş ayrıcalıklarla keyfi bir işlemi çalıştırmak için editör arıyorsanız exec) alt bombardımanı bir editör üzerinden güvenlik sorununu önlemek için de kullanılabilir.

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.