Linux'ta ACL ve MASK başlıklı bu örneği buldum . Bu makalede, ACL'lerin nasıl umaskbirbirleriyle nasıl etkileşime girdiğini anlamaya yardımcı olduğunu düşündüğüm aşağıdaki örnekler gösterilmiştir .
Arka fon
Linux sisteminde bir dosya oluşturulduğunda, varsayılan izinler 0666uygulanırken, bir dizin oluşturulduğunda varsayılan izinler 0777uygulanır.
örnek 1 - dosya
Umask'ımızı 077 olarak ayarladığımızı ve bir dosyaya dokunduğumuzu varsayalım. Bunu straceyaparken gerçekten neler olduğunu görmek için kullanabiliriz :
$ umask 077; strace -eopen touch testfile 2>&1 | tail -1; ls -l testfile
open("testfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
-rw-------. 1 root root 0 Sep 4 15:25 testfile
Bu örnekte sistem çağrısının open()0666 izinleriyle yapıldığını görebiliriz , ancak umask 077daha sonra çekirdek tarafından uygulandığında aşağıdaki izinler kaldırılır ( ---rwxrwx) ve rw-------aka 0600 ile kalırız .
örnek - 2 dizin
Aynı kavram dizinlere uygulanabilir, ancak varsayılan izinler 0666 yerine 0777'dir.
$ umask 022; strace -emkdir mkdir testdir; ls -ld testdir
mkdir("testdir", 0777) = 0
drwxr-xr-x 2 saml saml 4096 Jul 9 10:55 testdir
Bu sefer mkdirkomutu kullanıyoruz . mkdirKomut ardından sistem çağrısı denir mkdir(). Yukarıdaki örnekte mkdir, mkdir()sistem adı verilen komutun varsayılan izinlerle 0777( rwxrwxrwx) çağrıldığını görebiliriz . Bu kez 022aşağıdaki izinlerin bir umask kaldırılır ( ----w--w-), bu yüzden rwxr-xr-xdizinler oluşturulduğunda 0755 ( ) ile kalır.
örnek 3 (Varsayılan EKL'yi uygulama)
Şimdi bir dizin oluşturalım ve içindeki ACL ile birlikte varsayılan ACL uygulandığında ne olacağını gösterelim.
$ mkdir acldir
$ sudo strace -s 128 -fvTttto luv setfacl -m d:u:nginx:rwx,u:nginx:rwx acldir
$ getfacl --all-effective acldir
# file: acldir
# owner: saml
# group: saml
user::rwx
user:nginx:rwx #effective:rwx
group::r-x #effective:r-x
mask::rwx
other::r-x
default:user::rwx
default:user:nginx:rwx #effective:rwx
default:group::r-x #effective:r-x
default:mask::rwx
default:other::r-x
Şimdi dosyayı yaratalım aclfile:
$ strace -s 128 -fvTttto luvly touch acldir/aclfile
# view the results of this command in the log file "luvly"
$ less luvly
Şimdi yeni oluşturulan dosyanın izinlerini alın:
$ getfacl --all-effective acldir/aclfile
# file: acldir/aclfile
# owner: saml
# group: saml
user::rw-
user:nginx:rwx #effective:rw-
group::r-x #effective:r--
mask::rw-
other::r--
Maskeye dikkat edin mask::rw-. Neden mask::rwxdizinin oluşturulduğu zamanki gibi değil ?
luvlyDosyanın oluşturulması için hangi varsayılan izinlerin kullanıldığını görmek için günlük dosyasını kontrol edin :
$ less luvly |grep open |tail -1
10006 1373382808.176797 open("acldir/aclfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3 <0.000060>
Burası biraz kafa karıştırıcı oluyor. Maske rwx, dizinin oluşturulduğu zamana ayarlandığında , dosyanın oluşturulması için aynı davranışı beklersiniz, ancak bu şekilde çalışmaz. Bunun nedeni, çekirdeğin open()işlevi varsayılan izinleriyle çağırmasıdır 0666.
Özetlemek
- Dosyalar yürütme iznine sahip olmayacak (maskeleme veya etkili). Hangi yöntemi kullandığımız önemli değil: ACL, umask veya mask & ACL.
- Dizinler yürütme izinleri alabilir, ancak maskeleme alanının nasıl ayarlandığına bağlıdır.
- EKL izinleri altındaki bir dosya için yürütme izinleri ayarlamanın tek yolu, bunları kullanarak el ile ayarlamaktır
chmod.
Referanslar
mask::rw-. Ama bu gerçekten senin sorunun değil, değil mi?