Kapatma ve yeniden başlatma için neden terminalde kök olmalıyız?

60

Paketleri yükler / kaldırır / güncellersek veya yönetimsel ayrıcalık gerektiren değişiklikler yaparsak, sudo ayrıcalıklarına sahip yönetici kullanıcının şifresi istenir - bu hem GUI hem de terminal aracılığıyla gerçekleşir.

Ancak, terminal ile kapatılıp yeniden başlatmaya çalışırsak, root olmamız gerektiğinden şikayetçi olur:

$ reboot
reboot: Need to be root

$ shutdown now
shutdown: Need to be root

Ancak, bu eylemleri sağ üstteki cog-wheel ile gerçekleştirdiğimizde hiç bir şifre istemeyiz.

Neden bu tutarsızlık var?

    
sordu Aditya 19.10.2013 20:02

6 cevap

48

Dişli çarkın kapatılması, makineyi durdurmanıza izin verilip verilmediğini kontrol eder. Bu PolicyKit ile yapılır. Kapanma durumunda /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy dosyasında bu ifade kontrol edilir:

<action id="org.freedesktop.consolekit.system.stop">
  <description>Stop the system</description>
  <message>System policy prevents stopping the system</message>
  <defaults>
    <allow_inactive>no</allow_inactive>
    <allow_active>yes</allow_active>
  </defaults>
</action>

PolicyKit, dbus-send komutunu tetikler. Kapanma durumunda şu olur:

dbus-send --system --print-reply --dest=org.freedesktop.Hal /org/freedesktop/Hal/devices/computer org.freedesktop.Hal.Device.SystemPowerManagement.Shutdown

Arka planda, sizin için kapatma komutunu çalıştıran kök-Ayrıcalıklarla çalışan bir arka plan var.

Makineyi komut satırından "eski yoldan" ( shutdown, reboot, halt, ... ) kapatabildiğinizde, bu komutlara suid-Bit eklemeniz gerekir. Ancak, sisteminizde bulunan, kabuğa erişimi olan herkesin makinenizi kapatabileceğini unutmayın.

    
verilen cevap chaos 19.10.2013 20:46
27

Ubuntu, bir dizi modern İşletim Sistemi için ortak bir mimari olan Unix sistem ailesine ait GNU / Linux Operationg Sisteminin bir dağıtımıdır.

Geleneksel olarak Unix, ana bilgisayarlarda çalışmak için kullanılır. Uzak uçbirimler aracılığıyla yüzlerce kullanıcıya hizmet veren merkezi bilgisayar tesisleri. Tüm kullanıcılar ana bilgisayarın kullanılabilirliğine güvenmiş olduğundan, hiçbir kullanıcının bir kapatma komutu vermesine izin verilmemiştir. Unix mimarisi için temel olan bir fikir - sistem çekirdeği, bir işlev, bir süper kullanıcı işlemi tarafından çağrılmadıkça, bir kapatma işlemini hiçbir zaman başlatmayacaktır.

Çağdaş masaüstü sistemlerinde geliştiriciler, yalnızca masaüstü kullanıcısına kapatma yapabilmek için belirli ağrılardan geçtiler. Yaygın bir teknik, genellikle kök kullanıcının güvenlik bağlamında çalışan giriş yöneticisine izin vermek için kapatma ve yeniden başlatma işlemlerini ele alır. Bu durumda, grafik kabuk, bilgisayarı kapatmak için oturum açma yöneticisine bir istek yayınlar. Bu, genellikle dbus servisi aracılığıyla süreçler arası iletişimi (IPC) kullanmayı içerir.

Yukarıda belirtilen politika takımı, oturum açma yöneticisinin (veya kapatma hizmetini sağlayan herhangi bir programın) hangi kullanıcıların kapatma işlemine izin verileceğini kontrol edebildiği ve bir yönetici tarafından bu izinleri sırasıyla yapılandırabileceği standart bir çerçeve sağlayarak bu süreci genişletir. .

Bazı masaüstü ortamları IPC tabanlı hizmetleri kullanmaz, aynı veya benzer işlevleri sağlamak için bir dizi yardımcı program gerektirir. Bu yardımcı programlar, sudo, suid ya da sudo'ya benzer bir politika seti mekanizması gibi süper kullanıcı bağlamında değişime izin veren mekanizmalarla çağrılacaktı.

Her durumda, kabuktaki aptal geleneksel kapatma programı bu şekilde çalışmaz, Süper bir bağlamda çalıştırıldığını görmenizi gerektirir.

    
verilen cevap Paul Hänsch 19.10.2013 21:29
14

Linux genellikle bir sunucu veya benzeri olarak kullanıldığından ve linux kutusuna SSHing, normal bir Ubuntu dizüstü bilgisayar bile oldukça yaygındır.

Ancak, SSH erişimine sahip kullanıcıların, özellikle de onu kullanan başka bir kullanıcı tarafından oturum açmış olabileceği durumlarda, onu kapatamalarını istemeyebilirsiniz. GUI'ye erişimi olan birisi - kuyu, fiziksel güç düğmesiyle kendi başına kapatabilir.

Ayrıca, uzaktan oturum açmış bir kullanıcı onu tekrar açamaz.

    
verilen cevap Manishearth 20.10.2013 02:43
14
  

GUI aracılığıyla yeniden başlattığımda, sudo parolam olmadan bunu yapabilirim.

Sadece giriş yapmış tek kişi sizseniz. Diğer kullanıcılar varsa (konsol kullanıcıları dahil) bir kök şifre girmeniz gerekebilir. Bu, OS X ve daha yeni Windows sürümlerinde aynıdır.

  

Neden bu? Orada ubuntu sistemi içinde neler oluyor?

Aşağıdaki komut:

/usr/bin/dbus-send --system --print-reply --dest="org.freedesktop.ConsoleKit" /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
  

D-Bus, bir IPC mekanizmasıdır - aynı ana bilgisayarda çalışan işlemler arasında yerel iletişim için bir ortam.

     

D-Bus, UDP gibi düşük düzeyli mesaj iletme protokollerinden "daha akıllıdır". Öte yandan, mesajları, sürekli veri akışı olarak değil, ayrı öğeler olarak taşır.

     

D-Bus, taşıdığı verilerin yapılandırılmış bir görünümünü sunar ve ikili formdaki verilerle ilgilenir; çeşitli genişlik, dizgi ve benzeri integral sayıları. Veriler D-Bus'a sadece "ham bayt" olmadığından, iletiler doğrulanabilir.

     

- Ücretsiz Masaüstü

shutdown komutu neden hiç giriş yapıp yapmadığını kontrol etmiyor? Bu dürüst olmak için cansız bir özellik gibi görünüyor. Bazen zamandan tasarruf edeceğini hayal edebiliyorum, ancak genellikle tutarlı bir konsol tercih edilir. Çalıştırdıktan sonra bazen bir parola gerektirme komutlarını istemiyorum ve bazen de istemiyorum.

    
verilen cevap Tim 07.02.2016 02:58
9

GUI'den bir kapatma başlatmak için kök olmanıza gerek olmaması, genellikle tipik masaüstü kullanıcısı için kolaylık sağlamaktır. Sistem bilir , konsolda oturum açmış olduğunuz kullanıcıdır, bu yüzden bilgisayarı yanlışlıkla kapatırsanız, muhtemelen tekrar açabilirsiniz.

Kabuktaki bir kullanıcı için, çok iyi bir şekilde oturum açmış olabilirsiniz, bu nedenle sistem, kapatma komutu vermek için root olarak oturum açmanızı gerektirir. Bu, normal bir kullanıcının bir sunucuda oturum açmasını, diğer insanların kullandığı sırada kapatmasını engeller ve bilgisayarı fiziksel olarak başlatmak için gerekli olan herhangi bir kişi olmasa bile.

Kapatma işleminin süper kullanıcı parolası için bir GUI istemi sağlaması, büyük olasılıkla oraya gerçek bir faydası olmadığını gösterir - konsolda iseniz, istemin görüneceği yerde, yalnızca Bunun yerine cog-wheeel menüsü. Kapatma için süper kullanıcı şifresi için bir komut satırı istemine sahip olmak istiyorsanız, bu zaten "sudo kapatma" ile kullanılabilir.

    
verilen cevap Mark Bessey 19.10.2013 21:35
5

Çok kullanıcılı bir sistemde, istediğiniz son şey kullanıcılarınızın giriş yapması ve sunucuyu herhangi bir zamanda rasgele yeniden başlatabilmeleridir. Böylece, Reboot'un komut satırı sürümü yalnızca bir süper-komutdur, dolayısıyla size kök ol ya da sudo hakları var.

Halt ve PowerOff komutlarından da emin olun.

    
verilen cevap Jeff Sereno 07.02.2016 02:38

Etiketlerdeki diğer soruları oku