Sahip / kök ile RUID / EUID arasındaki fark


24

Soruda bahsedilen kavramlara nispeten yeniyim ve onlar hakkında farklı kaynaklardan okumak onları daha kafa karıştırıcı yapıyor. Demek şimdiye kadar anladım:

Bir dosya için izin verildiğinde, şöyle görünürler:

-rwsr-xr-- 1 user1 users 190 Oct 12 14:23 file.bin

user2Grupta bulunan bir kullanıcının usersyürütmeye çalıştığını varsayıyoruz file.bin. Setuid biti ayarlanmadıysa, bu hem RUID hem de EUID'nin UID'ye file.bineşit olduğu anlamına gelir user2. Ancak setuid biti ayarlandığı için, bu, RUID'in şu anda UID'sine eşit olduğu anlamına gelirken, user2EUID, dosyanın sahibinin UID'sidir user1.

Benim sorularım:

  1. Dosyanın sahibi ile arasındaki fark nedir root? Does rootsahibiyle aynı izinlere sahip? Yoksa bunun için izinler listesinde ayrı bir girişe mi ihtiyacımız var root?
  2. RUID ve EUID arasındaki fark?
    • Anladığım kadarıyla RUID ve EUID sadece süreçlere uygulanır. Bu durumda, neden kullanıcı kimliği değerine sahipler?
    • RUID işlemi oluşturan kullanıcı ise ve EUID şu anda işlemi yapan kullanıcı ise, bu sorudaki ilk cevabın ilk cümlesi bana bir anlam ifade etmiyor.
    • Setuid bitinin ne yaptığını doğru anladım mı?

Yanıtlar:


35

İşte cevaplar:

  1. rootdosyalara ve dizinlere her zaman tam erişime sahiptir . Dosyanın sahibi genellikle onları da içerir, ancak bu her zaman doğru değildir. Örneğin:

    -r-xr----- 1 user1 users 199 Oct 14 18:42 otherfile.bin
    

    user1olduğu sahibidir ; ancak, yalnızca okuyabilir ve yürütebilirler , ancak rootyine de dosyaya tam erişimi ( rwx ) vardır.

  2. RUID, Gerçek Kullanıcı Kimliğidir ve hiçbir zaman (neredeyse) değişmez. user2Sisteme giriş yaparsa , kabuk gerçek kimliği ayarlanmış olarak başlatılır user2. Kabuktan başlattıkları tüm işlemler gerçek kimlikleri gerçek kimlikleri user2olarak devralır .

    EUID, Etkili Kullanıcı Kimliğidir , kullanıcının setuid bitini ayarlayan çalıştırdığı işlemler için (kullanıcı için değil) değişir .

    Eğer user2çalıştırır file.bin, ruid olacak user2ve olacak başlayan sürecin EUID user1.

Davayı kullanalım passwd:

-rwsr-xr-x 1 root root 45396 may 25  2012 /usr/bin/passwd
  • Ne zaman user2istediği şifrelerini değiştirmek , onlar yürütmek /usr/bin/passwd.

  • RUID olacak user2ama bu sürecin EUID'si olacak root.

  • user2yalnızca kendi şifrelerini passwddeğiştirmek için kullanabilirsiniz , çünkü dahili passwdolarak RUID'yi kontrol eder ve eğer değilse root, eylemleri gerçek kullanıcı şifresiyle sınırlı olacaktır.

  • Bu EUID haline gelmesi karşılaşılmasına var rootolması durumunda passwdişlem ihtiyaçlarına çünkü yazma için /etc/passwdve / veya /etc/shadow.


Teşekkür ederim! Şimdi her şey daha açık. Yine de bir sorum daha var. EUID, yalnızca bir kullanıcı setuid biti ayarlanmış bir işlemi gerçekleştirdiğinde değişir? Yoksa başka bir durumda da değişebilir mi? Ve eğer öyleyse, bu durum nedir?
user1956190 23:15

1
setuidBit kümesi olan işlemleri yürütmekten başka bir yol olmadığını düşünüyorum .
jcbermu

3
“Setuid” bir programdan (Etkili UID U Gerçek UID'ye sahip bir işlem) çalışan bir işlem, EUID’yi RUID’ye geri getirebilir. Bazı durumlarda, EUID'yi başlangıç ​​değeri (yani program dosyasının sahibi) ve RUID arasında ileri ve geri alabilir. Ayrıca, RUID'sini EUID'sine eşit olarak ayarlayabilir. … (Devamı)
Scott

2
(Devamı) ... Ayrıcalıklı süreçler (EUID = 0 olanlar, nam root) keyfi değerlere EUID ve ruid ayarlayabilirsiniz (örneğin, login, su, ve sudoprogramlar bunu). Genel olarak, ayrıcalıklı bir süreç UID'lerini sıfır olmayan değerlere değiştirdiğinde, artık ayrıcalıklı değildir ve bir daha olamaz root. Setuid (2) , seteuid (2) ve setreuid (2) man sayfalarına bakınız .
Scott

1
(Devam)… Daha sonra daha geniş bir şekilde çözülen bir sorunu çözmek için bir hack olarak tanıtıldı. Böyle bir budamanın onu kullanan programları kıracağı gerçeği dışında Linux'tan çıkarılmış olabilir. Michael Kerrisk, yazarı Arayüzü Programlama Linux , onun versiyonunda diyor setfsuid (2) kılavuz sayfasında , “ setfsuid()günümüzde gereksiz olduğunu ve yeni uygulamalarda kaçınılmalıdır.”
Scott
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.