Microsoft ınterix Unix alt sistemi (şimdi emekli) onun NT çekirdeği için bazı diğerlerine göre daha kullanıcı ve grup izinleri ile biraz farklı ele:
Kullanıcı ve grup bilgileri Güvenlik Erişimi veritabanında depolanır . Hem kullanıcılar hem de gruplar aynı veritabanında depolanır, ancak grup ve kullanıcı adları benzersiz olmalıdır; hiçbir grubun bir kullanıcı adı olamaz veya tam tersi. (Bu veritabanı UNIX içindeki /etc/passwd
ve /etc/groups
dosyalarının yerini alır .) Kullanıcılar ve gruplar uygun Windows yöntemi (Kullanıcı Yöneticisi, Active Directory Kullanıcıları ve Bilgisayarları veya Yerel Kullanıcılar ve Gruplar) veya Win32 net user
komutuyla oluşturulur. (Kullanıcı oluşturmak ve kaldırmak için örnek kabuk komut dosyaları dizinde bulunur /usr/examples/admin
.) Kullanıcılar birçok gruba ait olabilir.
İşte daha spesifik bazı manuel alıntılar:
Windows'da, bir kullanıcının veya grubun bir nesnesi olabilir. Bu, yalnızca bir kullanıcının bir nesneye sahip olduğu UNIX'ten farklıdır.
Windows tüm kullanıcıları ve grupları bir güvenlik tanımlayıcısı (SID) kullanarak dahili olarak tanımlar . Bir karma algoritması benzersiz olan SID değerleri üretir; hiçbir iki kullanıcı veya grup aynı SID'ye sahip olmayacaktır.
Bir nesneye erişim izni olan kullanıcılar ve gruplar SID'leri tarafından tanımlanır. Windows tarafından güvence altına alınabilen tüm nesneler, erişim denetim girdileri (ACE) adı verilen ayrı girişlerden oluşan isteğe bağlı bir erişim denetim listesine (DACL) sahiptir. Bir ACE iki önemli bilgi parçası içerir: bir kullanıcı veya grup SID'si ve tek tek kullanıcının veya grubun bir nesneye ne kadar erişebileceğinin açıklaması.
chgrp
... Dosyanın grup kimliğini değiştirin ... chgrp (1) 'i çağıran kullanıcının belirtilen gruba ait olması ve dosyanın sahibi olması veya uygun yetkilere sahip olması gerekir.
CHOWN
... Sahip ve grup işlenenlerinin her ikisi de isteğe bağlıdır; ancak belirtilmelidir. Grup işlenen belirtilmişse, öncesinde iki nokta üst üste (:) bulunmalıdır.
Sahip, sayısal bir kullanıcı kimliği veya bir kullanıcı adıyla belirtilebilir. Bir kullanıcı adı aynı zamanda sayısal bir kullanıcı kimliğiyse, işlenen kullanıcı adı olarak kullanılır. Grup, sayısal bir grup kimliği veya bir grup adı olabilir. Bir grup adı aynı zamanda sayısal bir grup kimliğiyse, işlenen bir grup adı olarak kullanılır.
Güvenlik nedeniyle, bir dosyanın sahipliği yalnızca uygun ayrıcalıklara sahip bir işlemle değiştirilebilir.
Bunu okuduğumda, kullanıcı hesabınız, bir dosyanın o gruba ait izinlerini değiştirmek için yeterli ayrıcalığa sahip bir Windows grubuna aitse, chgrp
bu dosyayı kullanıcı hesabınızın kontrolü dışında etkili bir şekilde değiştirmek mümkündür . Bu, sahip olabileceğinizden chown
ve açık user:group
parametrelerden daha az kontrole eşittir . İlan etme olasılığı olmaksızın bu kapsamda user:
ve :group
aksi takdirde aynı sonuçları elde edebiliriz olmadı.
İşte bir bağlantı Böyle bir bilgi Unix türevleri diğer yanda Samba dosya sistemlerine nasıl uygulandığı konusunda odaklanarak, Windows ACL ile nasıl ınterix karşılıklı bölümlerle bir ayrıntılı görünüm.
İşte şimdi eski Solaris belgesine bir bağlantırstchown
...
chown(2)
Sistem çağrısı için POSIX semantiğinin geçerli olup olmadığını gösterir ...
Görünüşe göre, parametre 0
...
... POSIX semantiğini kapatmak, çeşitli güvenlik açıkları potansiyelini açar. Ayrıca kullanıcının bir dosyanın sahipliğini başka bir kullanıcıya değiştirme ve dosyayı kullanıcıdan veya sistem yöneticisinden müdahale etmeden geri alamama olasılığını da açar .
Böyle bir seçenek Solaris'in POSIX uyumluluğunu geçersiz kılmaz . Sadece bir seçenek olması onu uygun olarak nitelendirir :
POSIX.1-2008 ile uyumlu tüm uygulamalar aşağıda açıklanan tüm özellikleri desteklese de, sisteme veya dosya sistemine bağlı yapılandırma yordamlarını kaldırabilir veya değiştirebilir
, bu özelliklerin herhangi birini veya tümünü . Sıkı uyumluluk gerekiyorsa bu tür yapılandırmalar yapılmamalıdır.
Aşağıdaki sembolik sabitler -1 dışında bir değerle tanımlanmalıdır. Bir sabit değer sıfır ile tanımlanırsa, uygulamalar kullanmalıdır sysconf()
, pathconf()
ya da fpathconf()
fonksiyonlarını ya da
getconf
o anda veya söz konusu özel için yol adı, sistemde mevcut olan özellikleri belirlemek için, yardımcı.
_POSIX_CHOWN_RESTRICTED
Öğesinin kullanımı, chown()
uygun ayrıcalıklara sahip bir işlemle ve bir dosyanın grup kimliğini yalnızca işlemin etkin grup kimliğiyle veya ek grup kimliklerinden biriyle değiştirmekle sınırlıdır.
chown()
Sistem fonksiyonu - her iki tarafından yapılan belgelenmiş sistemi çağrı chown
ve chgrp
kabuk programları - olduğu başarısız belirtilen çeşitli nedenlerle. Onların arasında:
EACCES
Yol önekinin bir bileşeninde arama izni reddedildi.
ELOOP
Yol bağımsız değişkeninin çözümlenmesi sırasında karşılaşılan sembolik bağlantılarda bir döngü vardır.
EPERM
Etkili kullanıcı kimliği dosyanın sahibiyle eşleşmiyor veya arama işleminin uygun ayrıcalıkları yok ve _POSIX_CHOWN_RESTRICTED bu ayrıcalığın gerekli olduğunu gösteriyor.
Bununla birlikte, kök olmayan kullanıcılara izin değiştirme hakları verme davranışı, Solaris'e özgü olmamıştır. Orada çok mükemmel - biraz tarihli eğer - Unix dosya izinlerinin kapsama Bu forum yazı hangi yazar şöyle der:
Başlangıçta, Unix bir dosya sahibinin bir dosyayı vermesine izin verdi. Bir dosyanın sahibi, sahibini başka biriyle değiştirebilir. Kök olmayan bir kullanıcının bu işlemi geri almasının bir yolu yoktu ... BSD [daha sonra]chown
kök olmayan kullanıcılardan kaldırıldı ... [kısmen çünkü] ... ne kadar disk alanı sınırlayabilecek disk kotaları uyguladı? kullanıcı bir dosya sistemine sahip olabilir ... Yaramaz kullanıcılar kotaları aşan büyük dosyaları sneek verebilir.
Bugün, kök olmayan chown
bir dosyanın bir dosya yapıp yapamayacağını söylemek kolay değildir . Unix'in birçok sürümü her iki davranışa da izin verir ...
Bir başka iyi - ve daha yakın zamanda - posta listesi yayını bunu alıntılar ve devam eder:
Çoğu işletim sistemi için varsayılan, chown
yalnızca root ile sınırlandırılmak içindir. Güvenlik hususları için bu şekilde kalması gerektiği konusunda fikir birliği vardır. Kök olmayan bir kullanıcı dosyanın sahibini değiştirirse ve yürütme bitleri açıksa, SUID
ve SGID
bitlerinin temizlenmesi gerekir. Bu olabilir veya olmayabilir root
.
Bence son paragraf güzel söylüyor.
Bu makale aynı zamanda CAP_CHOWN
Linux'taki (yalnızca POSIX_CHOWN_RESTRICTED
davranışı etkilemesi gereken) bu tesisi denetlemeye yöneliktir . Bir de CAP_FOWNER
yetenek var, bu davranışta biraz farklı.
Ve 2003'te belirttiğiniz gibi :
En azından HPUX'ta, ayrıcalıklı bir kullanıcı olmasanız bile dosyalarınızın sahibini ( root
örneğin) değiştirebileceğinizi unutmayın ...
... bir yapılandırma setprivgroup
parametresine bağlıydı .
Bahsedildiği gibi kök olmayan kullanıcı dosya izinlerini işleyebilirsiniz Her durumda o, düşünülebilir gerekçe sorunuzu alıntı, bir kullanıcı o olabilir chown
o kullanıcı başka bir kullanıcı tarafından sahip olunan, böylece sahibi bir dosya. Dosyanın grup sahipliği ve chown
ing kullanıcı grupları hizalanmazsa, kullanıcı artık bu dosyayı değiştiremez.
Bu senaryoda chown
sonra chgrp
ise artık bu dosyanın izinlerini değiştirmek için gerekli izinlere sahip olacaktır kullanıcı olarak başarısız olur chown user:group
müddetçe - grup arasında yer alıyor kullanıcı kendi - başarılı olacaktır.
Orada muhtemelen dizin içerebilir benzer neden olabilir sayısız diğer niş durumları, Sabit ve / veya setgid bit, dosya sistemi ve / veya uygulama özgü erişim denetimi listelerini. Örneğin, bu konu ilginçtir. Sayısız permütasyon kendi zayıf kavrayışımın çok ötesinde - bu yüzden bu cevap wikied. Bunu okuyorsanız, gelişmeye değer olduğuna inanıyorsunuz ve nasıl yapacağınızı bildiğinize inanıyorsunuz - lütfen yapın .
Ayrıca burada -R
ecursive chown
uygulamalarla ilgili benzer bir hatayı etkileyebilecek dosya izinleri, ağaçta gezinme ve sembolik bağlantıların çeşitli olası etkileri hakkında kapsamlı belgeler vardır :
Gönderen POSIX XRAT bölümün başlıkları Üçüncü ve Dördüncü Domains :
Genel olarak, bir dosya hiyerarşisi geçişi için tek bir fiziksel hiyerarşi üzerinde çalışma isteği belirten kullanıcılar ve dolayısıyla hiyerarşinin dışındaki dosyalara başvurabilecek sembolik bağlantılar göz ardı edilir. Örneğin, chown owner dosyası, -R seçeneğinin belirtildiği aynı komuttan farklı bir işlemdir. Bu örnekte, komutun davranışı chown
owner
file
burada açıklanırken, komut chown -R
sahibi dosyasının davranışı üçüncü ve dördüncü alanlarda açıklanmaktadır.
... Mantıksal bir yürüyüşe geçmeyle ilgili bir güvenlik sorunu var. Tarihsel olarak, komut chown -R
dosyası, süper sahip için güvenlidir çünkü dosyanın sahipliği değiştirildiğinde setuid ve setgid bitleri kayboldu. Yürüyüş mantıklı olsaydı, kullanıcı ağaçtaki herhangi bir dosyayı işaret eden sembolik bir bağlantı ekleyebileceğinden, sahipliğin değiştirilmesi artık güvenli olmazdı. Yine, bu, hiyerarşi geçişi yapan komutlara sembolik bağlantılar yoluyla dolaylı olmamak için bir seçenek eklenmesini gerektirecek ve özyinelemeli yürüyüşler yapan tarihsel komut dosyaları anında güvenlik sorunları haline gelecektir. Bu çoğunlukla sistem yöneticileri için bir sorun olsa da, farklı kullanıcı sınıfları için farklı varsayılan değerlerin olmaması tercih edilir.
...
4.3 BSD'de, chgrp
ağaç geçişi sırasında sembolik bağın grubunu değiştirdi, hedefi değil. 4.4 BSD'deki sembolik bağlantıların sahibi, grubu, modu veya diğer standart UNIX sistem dosyası öznitelikleri yoktu.
POSIX chgrp
sayfasından, olası bir eksikliğe işaret eden bu var.-R
ecursive eylem, ya da en azından ne kullanılır olması:
Sistem V ve BSD sürümleri farklı çıkış durum kodları kullanır. Bazı uygulamalar, çıkış durumunu, oluşan hataların sayısı olarak kullandı; geçerli çıkış durumu değerleri aralığını aşabileceğinden bu uygulama kullanılamaz. Standart geliştiriciler, çıkış değerleri olarak yalnızca 0 ve> 0 belirterek bunları maskelemeyi seçtiler.