Belirli bir dizin dünyasında oluşturulan tüm dosyaları okunabilir hale getirmek için ACL'leri kullanarak umask'ımı geçersiz kılabilir miyim?


12

Benim umaskın 0077 olduğunu varsayın.

Ben, bir dizin var fooben özel izinler uygulanmış olması istediğiniz. Oluşturduğum tüm dosyalar foodünya tarafından okunabilir olmalı ve tüm dizinler dünya tarafından okunabilir ve yürütülebilir olmalıdır.

Şu anda, bir dosya oluşturursam, 0600 olacak ve bir dizin 0700 olacak:

$ cd foo/
$ touch file
$ mkdir directory
$ ls -l
drwx------ 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw------- 1 nfm nfm    0 2012-01-12 16:15 file

Benim umask ne olursa olsun dosya 0644 ve dizin 0755 olmasını istiyorum:

drwxr-xr-x 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw-r--r-- 1 nfm nfm    0 2012-01-12 16:15 file

Bunu nasıl başarabilirim?


"Dizin başına umask" kelimesini aramayı denemediniz, değil mi? Ben izinleri olsaydı üçüncü olay bir bash ne istediğinizi tam olarak yapmak kesmek, çünkü ben, bunun için downvote ediyorum (değil diğer kullanıcılar için, sadece SİZE için, verilmiş.)
Brett Dikeman

3
@BeeDee Bunu gördüm. Umarım ACL'leri kullanarak başka şekillerde ilginçim. Her cd'deki umask'ımı kontrol etmek / değiştirmek veya bash işlevlerini geçersiz kılmak istemem.
stickmangumtarafından

Yanıtlar:


15

Evet, acl bunu yapabilir.

  1. Dosya sisteminizin acl ile bağlandığından emin olun. Bunu kontrol etmek için yazın mount. Diğer izinler arasında listelenen 'acl' ifadesini görürsünüz, örn:

    /dev/sda1 on / type ext4 (rw,errors=remount-ro,acl)
    

    Acl ile bağlı değilse, / etc / fstab dosyasını açın ve seçenekler listesine 'acl' ekleyin:

    # /etc/fstab: static file system information.
    #
    # <file system> <mount point>   <type>   <options>       <dump>  <pass>
    /dev/sda1       /          ext3     noatime,errors=remount-ro,acl 0       1
    

    Şimdi, çalışan dosya sistemini yeni seçeneklerle yeniden bağlayın:

    mount -v -o remount /
    
  2. Acl yardımcı programlarını yükleyin. Ubuntu / debian'da bu:

    sudo apt-get install acl
    
  3. Yeni arkadaşlarınız setfaclve getfacl. setfaclBir dizinin varsayılan acl'sini değiştirmek için kullanın :

    setfacl -d -m o:r foo
    

    -dvarsayılanı ayarlar, -macl'yi değiştirir ve o:r"other" öğesine okuma hakkı verir. Bir dizindeki varsayılan ayarı kabaca bir dizindeki setgid ayarına eşittir , ancak grubu devralan yeni oluşturulan dosyalar yerine acl'yi devralır. Setgid ve acl birlikte güçlü olabilir, çünkü bir gruba varsayılan izinler verebilir ve etkili bir grup tabanlı dizin başına umask için yeni oluşturulan dosyaları bu gruba ait hale getirebilirsiniz.

  4. Çalışmanızı kontrol edin: ls -lşimdi standart dosya izinlerine ek olarak ekl varlığını gösteren fazladan bir "+" göstermelidir.

    % ls -la foo/
    drwxr--r--+
    

    Kullanarak acl hakkında ayrıntılı bilgi alabilirsiniz getfacl.

    % getfacl foo
    # file: foo
    # owner: you
    # group: you
    user::rwx
    group::r--
    other::r--
    default:user::rwx
    default:group::---
    default:other::r--
    

1
Bu benim için çalışmıyor gibi görünüyor. setfaclve getfaclbeklenen çıktıyı döndürüyoruz, ancak yalnızca üst dizindeki dizinler (dosyalar değil) acl'yi devralıyor ve o zaman bile umaskım varsayılana göre önceliğe sahip (eğer dünya tarafından okunabilir default:other::r--değilse, başka bir kullanıcıya izin vermez) bunlara erişin). Bariz bir şeyi kaçırdım mı?
stickmangumtarafından

Bulduğum bir şey (belki de sorun budur): facl, geçerli kullanıcının eşleştiği ilk (kullanıcı, grup, diğer) gibi görünüyor. Yani, dosya için gruba aitseniz, grubun acl'si diğer için değil, işlenecektir. -D ile dizini uyguladıysanız acl hala miras ....
user67641

1
Hm, sadece tekrar denedim ve her şey iyi çalıştı. Üzgünüm, ilk seferinde neyi yanlış yaptığımdan emin değilim! Thanks :)
stickmangumby

3

Mask ACL özelliğini şu şekilde ayarlayarak dizin için bir umask da ekleyebilirsiniz:

setfacl -d -m mask:07 .

-4

OnDir'i kurun ve ihtiyaçlarınıza göre doğru şekilde yapılandırın. Burada bulunan benzer bir soruyu cevapladım .


Soru, OnDir'in ne için olduğu, bir terminalle dizinleri dolaşmaktan bahsetmiyor.
Yarin
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.