FreeBSD neden w maskesini kaybetti ama Debian onu korudu?


10

FreeBSD ACL'leri ve Linux ACL'leri arasındaki davranış farkını anlamaya çalışıyorum. Özellikle, varsayılan ACL'ler için kalıtım mekanizması.

Debian 9.6 ve FreeBSD 12'de aşağıdakileri kullandım:

$ cat test_acl.sh
#!/bin/sh

set -xe

mkdir storage
setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage

touch outside
cd storage
touch inside
cd ..

ls -ld outside storage storage/inside

getfacl -d storage
getfacl storage
getfacl outside
getfacl storage/inside

umask

Debian 9.6'dan şu çıktıyı alıyorum:

$ ./test_acl.sh
+ mkdir storage
+ setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage
+ touch outside
+ cd storage
+ touch inside
+ cd ..
+ ls -ld outside storage storage/inside
-rw-r--r--  1 aaa aaa    0 Dec 28 11:16 outside
drwxr-xr-x+ 2 aaa aaa 4096 Dec 28 11:16 storage
-rw-rw----+ 1 aaa aaa    0 Dec 28 11:16 storage/inside

+ getfacl -d storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::rwx
mask::rwx
other::---

+ getfacl storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:mask::rwx
default:other::---

+ getfacl outside
# file: outside
# owner: aaa
# group: aaa
user::rw-
group::r--
other::r--

+ getfacl storage/inside
# file: storage/inside
# owner: aaa
# group: aaa
user::rw-
group::rwx          #effective:rw-
mask::rw-
other::---

+ umask
0022

outsideVe insidedosyalarının farklı izinleri olduğuna dikkat edin . Özellikle, outsidedosya vardır -rw-r--r--, bu kullanıcı için varsayılan ve hangi insidedosya vardır -rw-rw----ACL ı atanan varsayılan saygı, storagedizin.

FreeBSD 12'de aynı betiğin çıktısı:

$ ./test_acl.sh
+ mkdir storage
+ setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage
+ touch outside
+ cd storage
+ touch inside
+ cd ..
+ ls -ld outside storage storage/inside
-rw-r--r--  1 aaa  aaa    0 Dec 28 03:16 outside
drwxr-xr-x  2 aaa  aaa  512 Dec 28 03:16 storage
-rw-r-----+ 1 aaa  aaa    0 Dec 28 03:16 storage/inside

+ getfacl -d storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::rwx
mask::rwx
other::---

+ getfacl storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::r-x
other::r-x

+ getfacl outside
# file: outside
# owner: aaa
# group: aaa
user::rw-
group::r--
other::r--

+ getfacl storage/inside
# file: storage/inside
# owner: aaa
# group: aaa
user::rw-
group::rwx      # effective: r--
mask::r--
other::---

+ umask
0022

(Debian'ın , FreeBSD olarak getfaclkullanmadığı -dyerlerde bile varsayılan ACL'leri göstereceğini unutmayın, ancak gerçek ACL'lerin storagefarklı olduğunu düşünmüyorum .)

Burada outsideve insidedosyaları da farklı izinlere sahiptir, ancak insidedosya Debian sürümünün yaptığı grup yazma iznine sahip değildir, çünkü muhtemelen Debian'daki wmaske FreeBSD'deki maske kayboldu w.

FreeBSD wmaskeyi neden kaybetti ama Debian onu korudu?


1
getfacl storageHer iki sistemde ne gösteriliyor?
Mikel

Yapışkan grup biti ( g+s) kullanmıyorsanız bu aynı şekilde çalışır mı ?
sebasth

@Mikel getfaclBilgileri göstermek için orijinal soru içeriğini güncelledim .
Roxy

@sebasth Setgid bitini kaldırmak için orijinal soruyu güncelledim. Alakasız.
Roxy

ACL'yi ayarladıktan sonra storage, ls göstermeliyim+ , benzer şekilde getfaclçıktıların Debian sistemindekilere benzer olmasını beklerdim . Mü setfacldönüş başarı çıkış kodu?
sebasth

Yanıtlar:


1

Kısacası umask'ı farklı kullandıklarını söyleyebilirim (varsayalım).

0022 tam olarak grup-diğer ayarlanmamış W'dir. Yazma yasağını kaldırmak ve sonucu kontrol etmek için umask'i değiştirebilirsiniz.

Solaris aka SunOS kılavuzu (ve yorumlar da) atıfta bulunuyor çünkü bu oldukça ilgili görünüyor: "… Dizin varsayılan ACL girişleri içeriyorsa umask (1) uygulanmaz."


1
Biri doğru, diğeri yanlış mı? Bunun uyması gereken bir standart var mı?
Roxy

Ben bu konuda uzman değilim ama (ironik bir şekilde) FreeBSD'nin WEB adamı umask açıkça sayılmaması gerektiğini söylüyor "kanonik" (tartışmalı) uygulama (SunOS) için giriş var: freebsd.org/cgi/man.cgi?query= setfacl & manpath = SunOS + 5.10
poige

"… Dizin varsayılan ACL girişleri içeriyorsa umask (1) uygulanmayacaktır.…"
poige

FreeBSD'nin kendi kılavuz sayfasından bahsetmiyoruz umask, bu yüzden bu yetersiz tanımlanmış bir davranış gibi görünüyor. FreeBSD'nin ACL uygulamasının SunOS ile aynı şekilde çalışması gerekiyor mu?
Roxy

Açıkçası (bahsetmemektedir), aksi takdirde belirtilen ve yapılan şeyler arasında açıkça çelişki görülecektir.
poige
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.