Mesele şu ki, her zaman bu izinlerin en genel olandan (diğer -> grup -> kullanıcı) başlayarak birbiri üzerinde çöktüğünü düşündüm.
Eğer durum buysa, herkes için “diğer” izinler geçerli olacaktır.
Diğer bir deyişle, o = rwx ise, grup ve kullanıcı için ne gibi emirlerin bulunduğunu kimin umurunda?
Bu, önceki cümlenizden farklı. Burada, izinlerin bir arada ya da bir araya getirildiğini ima edersiniz; örneğin, userX dosyaya sahipse ve dosya kullanıcı tarafından okunabiliyorsa veya userX'in ait olduğu bir grup dosyanın sahibi ve dosya grubuysa, userX'in okuma iznine sahip olduğunu ima edersiniz. -readable veya dosya başka bir okunabilir ise. Ama bu böyle değil. Aslında, izinlerin başkaları için geçerli olduğu o=rwx
anlamına gelir rwx
, ancak başkaları olmayan varlıklar hakkında hiçbir şey söylemez.
İlk olarak, bir kullanıcının hangi gruplara ait olduğu doğrudan önemli değildir. Çekirdeğin, gruplara ait kullanıcılar fikri yoktur. Çekirdek, her işlem için bir kullanıcı kimliği ( etkili UID ) ve grup kimlikleri listesidir (etkili GID ve ek GID'ler). Gruplar, oturum açma işlemi sırasında oturum açma işlemi tarafından belirlenir - grup veritabanını okuyan oturum açma işlemidir (örn. /etc/group
). Kullanıcı ve grup kimlikleri alt süreçler tarafından devralınır¹.
Bir işlem geleneksel Unix izinlerine sahip bir dosyayı açmaya çalıştığında:
- Dosyanın sahibi olan kullanıcı işlemin etkin UID'siyse, kullanıcı izin bitleri kullanılır.
- Aksi takdirde, dosyanın sahibi grup sürecin etkili GID'si veya sürecin ek grup kimliğinden biriyse, grup izin bitleri kullanılır.
- Aksi takdirde, diğer izin bitleri kullanılır.
Yalnızca bir rwx bit seti kullanılır. Kullanıcı, diğer gruba göre öncelikli olan gruptan önceliklidir. Olduğunda erişim kontrol listeleri , algoritmanın yukarıda genel Tarıf:
- İşlemin etkin UID'si için dosyada bir ACL varsa, erişimin verilip verilmediğini belirlemek için kullanılır.
- Aksi takdirde, işlemin etkin GID'si veya işlemin ek grup kimliğinden biri için dosyada bir ACL varsa, grup izin bitleri kullanılır.
- Aksi takdirde, diğer izin bitleri kullanılır.
Ayrıca , maske etkisi de dahil olmak üzere ACL girişlerinin nasıl kullanıldığı hakkında daha fazla ayrıntı için Bir kullanıcı birden çok gruba dahil olduğunda ACLS'nin önceliği konusuna bakın .
Böylece -rw----r-- alice interns
Alice tarafından okunabilen ve yazılabilen ve stajyerler dışındaki tüm kullanıcılar tarafından okunabilen bir dosyayı belirtir. İzinleri ve sahipliği olan bir dosyaya ----rwx--- alice interns
sadece Alice dışındaki stajyerler tarafından erişilebilir (stajyer olsun ya da olmasın). Alice chmod
izinleri değiştirmek için arayabildiğinden , bu herhangi bir güvenlik sağlamaz; bu bir uç durum. ACL'leri olan sistemlerde, genelleştirilmiş mekanizma belirli kullanıcılardan veya belirli gruplardan izinlerin kaldırılmasına izin verir, bu da bazen yararlıdır.
Her eylem için tüm bitleri (okumak, yazmak, yürütmek) yerine tek bir bit kümesi kullanmanın çeşitli avantajları vardır:
- ACL'leri olan sistemler üzerinde bir grup kullanıcı veya gruptan izinlerin kaldırılmasına izin vermenin faydalı etkisi vardır. ACL olmayan sistemlerde izinler bir gruptan kaldırılabilir.
- Uygulanması daha kolaydır: birkaç bit kümesini birleştirmek yerine bir bit kümesini kontrol edin.
- Daha az işlem yapıldığından, bir dosyanın izinlerini analiz etmek daha kolaydır.
Set Bir setuid veya setgid işlemi yürütüldüğünde değişebilirler . Bu konudaki sorunla ilgili değil.