setfacl: Bu iki komut aynı mı?


10

Bir Symfony2 yüklemesi için belirli sunucularda izinleri ayarlar (capifony dayalı) bir dağıtım komut dosyası var. Birkaç dizin için bunu yapmak için aşağıdaki iki komutu içerir:

setfacl -R -m u:www-data:rwx -m u:`whoami`:rwX app/cache
setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwX app/cache

Bu iki komut, Symfony2 sitesinde izinleri düzeltmenin bir yolu olarak bulunur, ancak bunlar bana çok benzer görünüyordu. Böylece setfacl, ikinci komut için ek bir seçenekle (tam olarak anlayamadığım) tam olarak ne yaparsa yaptım , manajlara bir göz attım ve anlayabildiğim kadarıyla. Sorum şu, varsayım doğru mu? Eğer öyleyse, ilk komutu kaldırırsam aynı etkiyi yaratır mı?

Yanıtlar:


15

İlk komut, önceden varolan dosyaların / dizinlerin izinlerini değiştirir. -dİkinci komuta sırayla bu dizinlere içinde herhangi dosyalar için ACL varsayılan olarak bir dizi sağlayacaktır herhangi dizinleri için ileriye varsayılan izinleri ayarlama için çok önemlidir.

NOT: Her iki durumda da komutların -Ranahtar aracılığıyla yinelemeli olarak çalıştırılacağı .

-dAnahtarla ilgili olarak, setfaclman sayfasından:

   -d, --default
       All operations apply to the Default ACL. Regular ACL entries in the 
       input set are promoted to Default ACL entries. Default ACL  entries
       in the input set are discarded. (A warning is issued if that happens).

Bu alıntı da oldukça iyi açıklıyor:

İki tür ACL vardır: erişim ACL'leri ve varsayılan ACL'ler. Erişim EKL'si, belirli bir dosya veya dizin için erişim denetim listesidir. Varsayılan ACL yalnızca bir dizinle ilişkilendirilebilir; dizindeki bir dosyanın erişim ACL'si yoksa, dizin için varsayılan ACL kurallarını kullanır. Varsayılan ACL'ler isteğe bağlıdır.

Kaynak: 8.2. Erişim ACL'lerini Ayarlama .

Misal

Diyelim ki bu dizin yapısına sahibim.

$ tree
.
|-- dir1
|   |-- dirA
|   |   `-- file1
|   `-- fileA
`-- file1

2 directories, 3 files

Şimdi setfaclsorunuzdaki ilk komutu kullanarak izinleri ayarlayalım :

$ setfacl -R -m u:saml:rwx -m u:samtest:rwX .

Hangi sonuçlanır:

$ getfacl dir1/ file1
# file: dir1
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x

# file: file1
# owner: saml
# group: saml
user::rw-
user:saml:rwx
user:samtest:rwx
group::rw-
mask::rwx
other::r--

Olmadan -dRburada çalışacak komutun, yeni dizinleri ACL kapsamı dışında olacaktır:

$ mkdir dir2

$ getfacl dir2
# file: dir2
# owner: saml
# group: saml
user::rwx
group::rwx
other::r-x

Ancak bu dizini kaldırıp setfacl -dR ...komutu çalıştırır ve yukarıdaki işlemi tekrarlarsak:

$ rmdir dir2
$ setfacl -dR -m u:saml:rwx -m u:samtest:rwX .

Şimdi izinler oldukça farklı görünüyor:

$ getfacl dir1/ file1 
# file: dir1/
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:saml:rwx
default:user:samtest:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

# file: file1
# owner: saml
# group: saml
user::rw-
user:saml:rwx
user:samtest:rwx
group::rw-
mask::rwx
other::r--

Ve şimdi yeni oluşturulan dizininiz bu "varsayılan" izinleri alacak:

$ mkdir dir2

$ getfacl dir2
# file: dir2
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:saml:rwx
default:user:samtest:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

Bu izinlerin açık olması dir2artık içindeki dosyalar üzerinde de bu izinleri uygulayacaktır dir2:

$ touch dir2/fileA
$ getfacl dir2/fileA 
# file: dir2/fileA
# owner: saml
# group: saml
user::rw-
user:saml:rwx           #effective:rw-
user:samtest:rwx        #effective:rw-
group::rwx          #effective:rw-
mask::rw-
other::r--

Ah, yani sadece onaylamak için, app/cachebir dizini içeren bir dizine sahipsek dev, ilk komut buna uygulanacak, ikincisine değil? Ve daha sonra başka bir dizin eklenirse (örn. prod), İkinci komut izinleri ayarlayacaktır? Durum böyle değilse, ikinci komutu atlayabilmeli miyim?
Hosh Sadiq

1
@HoshSadiq - hayır -Ryinelemeli bir komut değildir, bu nedenle izinler uygulanır. -dGardiyanlar birisi bir dizin oluşturmak veya sonradan bu yüzden çok bu ACL uygulanmış olurdu ağaca bazı dizin hareket olsaydı.
slm

Bu harika! İşleri çok daha netleştirir :) Teşekkürler!
Hosh Sadiq
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.