2011-04-14 30 views
5
Unix'de

, ne zaman execNeden ayarlanmış kullanıcı kimliği gerekiyor?

kimliği dosya sahibi ile aynı değildir Gerçek kullanıcı ve Set kullanıcı kimliği biraz üzerinde ise, o, etkin kullanıcı kimliği, sahibinin dosyaya değiştirilir ve kaydedilmiş set kullanıcı kimliği da.
Etkili kullanıcı kimliği kopyalandığı zaman kaydedilmiş kullanıcı ID'si çalıştırıldığında ayarlanır.

Şu anda neden setID kullanıcı kaydedildi gerekiyor?

Güvenlik sorunu nedeniyle? eğer doğruysa, özellikle hangi durumda?

+1

ayrıca bkz. Http://stackoverflow.com/questions/205070/whats-the-deal-with-all-the-different-uids-a-process-can-have – Andy

cevap

3

Dosyalara erişildiğinde, sistem işlemin etkin UID'sine, GID'lerin kümesine bakar ve bunları dosya izinleriyle (ve muhtemelen dosyadaki ACL'lerle) eşleştirir.

Dosyalar oluşturulduğunda, dosyanın oluşturulup oluşturulmayacağına karar verirken sistem aynı işlem değerlerine bakar, ancak UID'yi dosyada ayarlamak için etkili UID'yi kullanır ve etkili GID'yi veya yöneticinin GID'sini kullanır (SGID biti dizinde ayarlanmışsa veya MacOS X üzerindeyseniz).

access() sistem çağrısı, gerçek UID ve gerçek GID'nin (etkili UID ve GID yerine) dosyaya erişip erişemeyeceğini kontrol eder.

SUID (setuid) programınız varsa, kullanıcılarına erişemeyecekleri dosyalara erişmek için EUID'sini kullanabilir. Ancak, kullanıcı adına bir dosya oluşturmak istiyorsa (bunu çalıştıran kişinin RUID'si), SUID ayrıcalığını düşürmesi gerekir, böylece EUID, RUID ile aynıdır. Bir zamanlar çok uzun bir zaman önce, bir kez SUID ayrıcalığını düşürdüğünüzde, iyilik için kayboldu; geri alamadın. Kaydedilen UID değeri, SUID programları için ayrıcalıkların yönetimini basitleştiren geri geçişi sağlar.

8

Kayıtlı bir kullanıcı kimliğine sahip olmak, ayrıcalıklarınızı (etkin kullanıcı kimliğini gerçek olana çevirerek) bırakmanıza ve daha sonra bunları (gerektiğinde etkin kullanıcı kimliğini kaydedilmiş olana geçirerek) yeniden kazanmanıza olanak tanır.

İlgili konular