Hangi Linux komutlarının root erişimi gerektirdiği nedir?


23

Hangi Linux komutlarının root erişimi gerektirdiği nedir? Ayrıcalık apt-getgerektirmesi için arzu edilmesinin nedenlerini anlıyorum root; peki bu komutları diğerlerinden ayıran nedir? Yürütülebilir dosyanın mülkiyeti ve yürütme izinleri meselesi mi?


2
Esas olarak hangi dosyaya dokunduklarını ve hangi fonksiyonları çağırdıklarını gösteren bir fonksiyondur.
Federico Klez Culloca

9
Bazı uygulamaların root'a ait dosyalara / dizinlere erişmesi gerekir. Bu yüzden sadece open"izin reddedildi" olarak çağırıyorlar . Bazı uygulamalar getuidroot tarafından çağrılmadıklarında kontrol eder ve çalışmayı durdurur. Bazıları fiziksel olarak root'a aittir ve sadece mal sahibi bunları yürütebilir (bakınız chmod). App başlığında bazı "ihtiyacı root" işareti olup olmadığını soruyorsanız - cevap hayır. Afaik böyle bir şey yoktur
user996142

1
ps: birkaç sistem (iyi bilinen bağlantı noktasına <1024 bağlanma gibi) da kök erişimine ihtiyaç duyabilir.
kullanıcı996142

apt-get hiç kök gerektirmez. / Usr / bin dizininde, bkz. Askubuntu.com/a/440791/169736
Braiam

Burada ne demek istediğini "kastet" diyebilirsin. Kök olmadıkça (veya sudo izinleriniz olmadıkça) programın yürütülmeyeceğini veya işini düzgün bir şekilde yapabilmek için kök olması gerektiğini mi kastediyorsunuz?
jamesqf

Yanıtlar:


15

Linux kullanımında, kökün ayrıcalıkları böylece bu belgelere bakarak kökün özel ayrıcalıklarla tam bir listesini alabilirsiniz "yetenekleri" bölünmüş bir noktada idi: man 7 capabilities.

Sorunuzu yanıtlamak için, bir komut bu ayrıcalıklardan birine ihtiyaç duyduğunda root olarak çalışmayı gerektirir ve komut dosyası olmayan çalıştırılabilir dosya meta verilerinde ayarlanan ilgili özelliğe sahip değil (örneğin, bir python komut dosyası yetenek gerektiriyorsa, shebang hattında belirtilen python yorumlayıcısında olması gerekir).

Kök erişimi gerektiren bazı komutların sudo, yürütülebilir dosyalarında SUID biti ayarladıkları gibi bir şeye ihtiyaç duymadıklarını unutmayın . Bu bit, çalıştırılabilir erişimi olan herhangi biri tarafından çalıştırıldığında çalıştırılabilir dosya sahibinin (genellikle kök) çalışmasına neden olur. Bir örnek olarak, sudokullanıcıların değişmesi, yapması gereken ayrıcalıklı bir eylemdir.

EDIT: Sorunuzdan, bir komutun çalıştırmadan önce root erişimi gerekip gerekmediğini belirleyebileceğiniz fikrine sahip olabileceğinizi not ediyorum. Konu bu değil. Bir program bazen kök ayrıcalıkları gerektirebilir ve diğer zamanlar gerektirmez ve bu, çalışma zamanında sağladığı veriler nedeniyle program tarafından verilen bir karar olabilir. Örneğin, vimargümanlar olmadan ve sonra bir dizi tuşa basma ve yapıştırma yoluyla arama yaparak , bir dosyaya bir şey yazmasını söyleme, yazma izni olmayan bir dosya yazma veya belki de kök ayrıcalıkları gerektirecek başka bir komutu çalıştırma. Yürütmeden önceki komutla ilgili hiçbir şey, sonunda kök erişimi gerektireceğini gösteremez. Bu, yalnızca gerektiren bir şeyi yapmaya çalıştığı noktada belirlenebilecek bir şeydir.

Her neyse, işte root ayrıcalıklarının başvurulan el kitabından çok az örnek:

  • Proses UID'lerinin (setuid (2), setreuid (2), setresuid (2), setfsuid (2)) keyfi manipülasyonlarını yapın;
  • Dosyayı atla, izin kontrollerini oku, yaz ve çalıştır. (DAC, "isteğe bağlı erişim denetimi" nin kısaltmasıdır.)
  • Baypas izni, sinyal gönderimini kontrol eder (bkz. Kill (2)). Bu, ioctl (2) KDSIGACCEPT işleminin kullanımını içerir.
  • Ağla ilgili çeşitli işlemleri gerçekleştirin:
    • arayüz konfigürasyonu;
    • IP güvenlik duvarı yönetimi, maskeleme ve muhasebe;
    • yönlendirme tablolarını değiştir;
  • Bir soketi İnternet etki alanı ayrıcalıklı bağlantı noktalarına bağlayın (1024'ten daha az bağlantı noktası sayısı).
  • Çekirdek modüllerini yükleme ve boşaltma (bkz. İnit_module (2) ve delete_module (2));
  • Sistem saatini ayarlayın (settimdayday (2), stime (2), adjtimex (2)); gerçek zamanlı (donanım) saati ayarlayın.
  • Aşağıdakileri içeren bir dizi sistem yönetimi işlemi gerçekleştirin: quotactl (2), mount (2), umount (2), swapon (2), swapoff (2), sethostname (2) ve setdomainname (2);
  • Yeniden başlatma (2) ve kexec_load (2) kullanın.
  • Chroot (2) kullanın.
  • Proses nice değerini (nice (2), setpriority (2)) yükseltin ve keyfi prosesler için nice değerini değiştirin;

32

Bu esas olarak araç ya da programın ne yaptığı ile ilgilidir . Süper kullanıcısı olmayanların yalnızca sahip oldukları veya erişebildiği dosyalara dokunabileceğini, parmaklarını her şeyin içine sokması gereken herhangi bir aracın yaptığı şeyi yapabilmesi için süper kullanıcı erişimi gerektirecektir. Süper kullanıcı erişimi gerektirebilecek Hızlı bir örnek örneği şunları içerir, ancak bunlarla sınırlı değildir:

  • 1024'ün altındaki bir bağlantı noktasındaki dinleme TCP soketini açma
  • Sistem yapılandırmalarını değiştirme (örneğin herhangi bir şey /etc)
  • Küresel olarak erişilebilir yeni kütüphaneler ( /libve /usr/lib) veya ikili dosyalar ( /bin, /usr/bin) ekleme
  • Yeterli izin verme kipine sahip olmayan, dokunma işlemini yapan kullanıcıya ait olmayan dosyalara dokunmak
  • Diğer kullanıcıların dosya sahipliğini değiştirme
  • Yükselen işlem öncelikleri (örn. renice)
  • Hizmetlerin çoğunu başlatmak veya durdurmak
  • Çekirdek konfigürasyonu (örneğin değiş tokuş etmek)
  • Dosya sistemi kotalarını ayarlama
  • "Dolu" disklere yazma (çoğu dosya sistemi kök kullanıcı için yer ayırır)
  • Diğer kullanıcılar olarak işlem yapma

4
"İşlem önceliklerini değiştirme" root olmayan kullanıcılar daha iyi olmaları için tercihlerini değiştirebilir. Yapamadıkları tek şey daha az iyi olmak.
Braiam

1
Bu listenin tamamlanmadığını biliyorum, ancak yalnızca süper kullanıcıların yapabilecekleri veya başka kullanıcılar olarak giriş yapmak için kullanabilecekleri çok önemli bir görev olduğunu düşünüyorum .
phihag

Madde işaretini işlem öncelikleriyle ilgili olarak değiştirdim ve "Diğer kullanıcılar olarak işlem gerçekleştirme" ekledim. Umarım yeterli zaman ve yorum ile, bu liste daha kapsamlı hale gelecektir.
DopeGhoti 14:18

0

İzinleri bölme sırasına göre değil, izinleri doğrulamanın kullanıcının kimliğine uygun olduğunu düşünüyorum. Dosyalar ve kullanıcılar ayrıcalıklıdır ve komutlar bölünmemelidir.


3
Kaba görünmek istemem ve ingilizcenin ana diliniz olmayabilir, ancak söylemeye çalıştığı gibi bu cevabı hiç anlamıyorum. "uygunluk", "anlaşma" veya "uygunluk" anlamına gelir; "Kullanıcı kimliği" ile nasıl kullanılacağını göremiyorum. Ne demek "izinleri bölmek için emir"? "bölmek", "ayırmak" anlamına gelir. Kimin "emri"? Herhangi bir ayrıcalık kullanabilecekleri bir şey olmadıklarında dosyalar nasıl “ayrıcalıklı” hale getirilir? Sanırım bu soru bağlamında "komutların bölünmemesi gerektiğini" anlayabiliyorum, ama bu kadar. Olduğu gibi, dayanılmaz görünüyor.
JoL

@JoL Ben "sıra" bir yanlış çeviri olduğunu ve bu cümlenin farklı bir ayrıştırılmasını sağlayan "komut" olması gerektiğini düşünüyorum. Bu cevabın içindekileri mümkün olduğu kadar kullanabilmek için biraz garip bir şekilde ifade edildi: "İzinlerin komuta göre ayrılmadığını onaylamak için kullanıcının kimliğinin nasıl kullanıldığına uygun olduğunu düşünüyorum. Ayrıcalıklar dosya ve kullanıcılar hakkındadır. komutlar için ayrılma. " Bu hala çok net değil, ama senin için olduğundan biraz daha mantıklı geliyor. Benim yorumumun birisinin bu cevabı tam olarak kavramasına ve formunu düzenlemesine yardımcı olduğunu umuyorum
hvd
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.