Hangi ilişkiler ACL maskesini ve bir dosyadaki standart grup iznini bağlar?


17

İlk başta bir dosya oluşturuyorum ve standart izinleri ve ACL girişlerini kontrol ediyorum:

$ touch file; ls -l file; getfacl file
-rw-r--r-- 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
other::r--

Sonra dosyadaki ACL maskesini ayarladım ve tekrar standart izinleri ve ACL girişlerini kontrol ediyorum:

$ setfacl -m mask:rwx file
$ ls -l file; getfacl file
-rw-rwxr--+ 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
mask::rwx
other::r--

ACL maskesi ile birlikte dosyadaki standart grup izninin de değiştiğini unutmayın.

  1. EKL maskesi ile standart grup izni arasında hangi bağlantı var?
  2. ACL maskesi ve dosya grubu izinlerini birleştirmenin nedeni nedir? Arkasında ne mantık var?

Söz konusu dağıtımlar Debian Linux 7.6 ve CentOS 7'dir


DÜZENLE

Bu noktada, standart dosya grubu izinleri ile ACL maskesi arasındaki ilişkileri araştırırken bulduğum bazı bulguları paylaşmak istedim. İşte bulduğum ampirik gözlemler:

  1. ACL maskesi değiştirilebilir:

    1. setfacl -m m:<perms>komutla doğrudan ayarlayarak ;
    2. chmodkomutla dosya grubu izinlerini değiştirerek (ACL maskesi zaten varsa; dosyada adlandırılmış kullanıcı veya grup ACL izinleri yoksa isteğe bağlı olduğu için mevcut olmayabilir);
    3. adlandırılmış kullanıcı veya grup ACL girişi ekleyerek (maske otomatik olarak yeniden hesaplanır).
  2. Maske, yalnızca maske doğrudan setfacl tarafından veya chmod ile dosya grubu izninin değiştirilmesi (otomatik olarak hesaplanmaz) ile ayarlanırsa, maksimum erişim haklarını uygular (izinleri olan ACL maskesi izinlerini aşan ACL girişleri varsa). ACL girişlerinde yapılacak herhangi bir değişiklik ACL maskesi otomatik yeniden hesaplamasını tetikler ve "zorlama modunu" etkin bir şekilde kapatır.

  3. ACL'leri kullanırken standart dosya grubu izinlerini dolaylı olarak etkileyen birkaç yan etki vardır:

    1. Bir dosyaya uygulanan adlandırılmış kullanıcı veya grup ACL girişi, ACL maskesini değiştirebilir (izinlerini artırabilir) ve dolayısıyla etkili dosya grubu izinlerini değiştirebilir. Örneğin, bir dosya sahibi olarak "rw-r - r-- jim öğrencileri" izinleri ayarladıysanız ve "jack" kullanıcısına da rw izni verirseniz, dolaylı olarak herkese rw izinleri verirsiniz. "öğrenciler" grubundan.
    2. Daha katı (daha az izin) ACL maskesi karşılık gelen standart dosya grubu izinlerini kalıcı olarak kaldırabilir. Örneğin, rw standart dosya grubu izinlerine sahip bir dosyanız varsa ve dosyaya salt okunur bir ACL maskesi uygularsanız, grup izinleri salt okunur olarak azalacaktır. Ardından, tüm genişletilmiş ACL girdilerini ( setfacl -bkomutla) kaldırırsanız , grup izinleri salt okunur olarak kalır. Bu yalnızca daha sıkı ACL maskesi için geçerlidir, daha yumuşak ACL maskesi (daha fazla izin) kaldırıldıktan sonra orijinal dosya grubu iznini kalıcı olarak değiştirmez.

Ben referans için aşağıdaki sayfayı alabilir düşünüyorum, www-uxsup.csx.cam.ac.uk/pub/doc/suse/sles9/adminguide-sles9/…
kundy

Yanıtlar:


11

Unix dosya izinlerinin acl girişine katılmaması veya tam tersi olması mantıklı değildir. Buna göre, manuel sayfa ( acl(5)) ne istediğini söylüyor:

ACL GİRİŞLERİ VE DOSYA İZİN BİTLERİ ARASINDAKİ SORUN

EKL'ler tarafından tanımlanan izinler, dosya izin bitleri tarafından belirtilen izinlerin bir üst kümesidir.

Dosya sahibi, grup ve diğer izinler ile belirli ACL girişleri arasında bir yazışma vardır: sahip izinleri ACL_USER_OBJ girdisinin izinlerine karşılık gelir. ACL'nin bir ACL_MASK girişi varsa, grup izinleri ACL_MASK girdisinin izinlerine karşılık gelir. Aksi takdirde, ACL'nin ACL_MASK girişi yoksa, grup izinleri ACL_GROUP_OBJ girdisinin izinlerine karşılık gelir. Diğer izinler, ACL_OTHER_OBJ girdisinin izinlerine karşılık gelir.

Dosya sahibi, grubu ve diğer izinler her zaman karşılık gelen ACL girişinin izinleriyle eşleşir. Dosya izni bitlerinin değiştirilmesi ilişkili ACL girişlerinin değiştirilmesine ve bu ACL girişlerinin değiştirilmesi dosya izni bitlerinin değiştirilmesine neden olur.

Tartışmaya yanıt olarak Zeyilname:

ACL maskesi ve dosya grubu izinlerini birleştirmenin nedeni nedir? Arkasında ne mantık var?

Burada iyi bir açıklama var . Özünde maske bir

[...] grup sınıfındaki herhangi bir girişin vereceği izinlerin üst sınırı.

Bu üst sınır özelliği, ACL'lerden habersiz POSIX.1 uygulamalarının, ACL'ler desteklendikten sonra aniden ve beklenmedik bir şekilde ek izinler vermeye başlamamasını sağlar.

Minimum ACL'lerde, grup sınıfı izinleri sahip olan grup izinleriyle aynıdır. Genişletilmiş ACL'lerde, grup sınıfı ek kullanıcılar veya gruplar için girişler içerebilir. Bu bir soruna neden olur: bu ek girdilerin bazıları sahip olan grup girdisinde bulunmayan izinler içerebilir, bu nedenle sahip olan grup girişi izinleri grup sınıfı izinlerinden farklı olabilir.

Bu sorun, maske girişi sayesinde çözülür. En az ACL ile, grup sınıfı izinleri sahip olan grup girişi izinleriyle eşleşir. Genişletilmiş ACL'lerde, grup sınıfı izinleri maske girişi izinleriyle eşlenirken, sahip olan grup girişi yine de sahip olan grup izinlerini tanımlar. Grup sınıfı izinlerinin eşlemesi artık sabit değil.


Söyledikleriniz şu getfacl çıktısı için geçerlidir: user :: rw- group :: r-- other :: r-- . Bu 3 satır, chmodstandart izinleri değiştirmek için komut kullanırsanız , örneğin getfacl -m u:someuser:rwxdosya sahibi için standart dosya izni değiştiğinde ve değişiklik ls -lçıktıya yansıtıldığında, bunun tersini uygularsanız değişecektir . Hepsi bu, ama soruma nasıl cevap verdiğini göremiyorum
golem

hikayenin tamamı için düzenlememe bakın
countermode

1
Düzenlenen cevabınız tasarım gereği dosya grubu izinleri ile EKL maskesi arasında bir bağlantı olduğunu söylüyor. EKL maskesi ve dosya grubu izinlerini birleştirmenin nedeninin ne olduğu sorusu hala açıktır. Bunun arkasında yatan mantık benim için net değil.
golem

1
Bir anlam olabilir. Tanım ve uygulamaya bağlıdır. Tanımı gereği, Linux dosyası ACL, şu anda uygulandığı gibi, standart dosya izinlerinin bir üst kümesidir, yani bunları içerir. Yani "çelişemezler". İşte bir kullanım örneği. İlk -rw-r--r-- 1 user userizinleri olan dosya için bir "testuser" a rwx izinleri atarsam , bu kullanıcı ACL'si kabul edilir ve ACL maskesi (dosya grubu izinleriyle birlikte) de rwx olarak değiştirilir. --- [devamı olarak bir sonraki yoruma bakın]
golem

1
Şimdi "testuser" rwx izinleri dosyanın yeni -rw-rwxr-- 1 user userizinleriyle çelişiyor mu değil mi? Çelişkiyi nasıl belirliyorsunuz? Test edenin ACL izinlerini standart dosya grubu izniyle karşılaştırarak? Hangi mantık, grup izinlerini kullanıcı izinleriyle karşılaştırmanıza neden oldu? Farklı varlıklar değiller mi? Sezgisel değil mi? Muhtemelen sizin için açıktır ama hala kavramaya çalışıyorum.
golem

3

Sonunda bu bağlantıyı gördüğümde tam olarak ne olduğunu anladım ACL'leri kullanma

Özellikle, bu maskeler temel olarak NAMED USER ve tüm GROUP izinlerinin yerini alır ve işlevini yerine getirir. Bu şu anlama gelir:

  1. maskeyi ayarlayın, grup maks izinlerini değiştirin,
  2. bir maske mevcutken grup izinlerinden herhangi birini değiştirirseniz, maske tüm grup izinlerinin maksimum grup izinlerini alır
  3. grup okuma, yazma ve yürütme izinleri, varsa maskeye göre belirlenir

resim açıklamasını buraya girin

Umarım bu yardımcı olur.


Belirttiğiniz sayfada maskenin çok güzel bir açıklaması var ( bölüm 27.3.3'ten alıntı . Erişim ACL'si olan bir Dizin ): maske, grup sınıfındaki tüm girişler için maksimum etkili erişim izinlerini tanımlar. Bu, adlandırılmış kullanıcı, adlandırılmış grup ve sahip olan grubu içerir. .
patryk.beza

-1

Arkasında ne mantık var?

Mantık tamamen bozuldu ve bu nedenle POSIX ACL'leri saf ve işe yaramaz saçmalık.

Standart ilkel UNIX "ugo" modeli dışında ACL kavramı olmayan uygulamalarla uyumluluğu korumayı hedefliyorlarsa , başlangıçta başarısız oldular, çünkü grubun izinlerini temizleyen her uygulama ACL'ler tarafından eklenen erişimi etkin bir şekilde geri çekiyor.

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.