İ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 -R
anahtar aracılığıyla yinelemeli olarak çalıştırılacağı .
-d
Anahtarla ilgili olarak, setfacl
man 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 setfacl
sorunuzdaki 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 -dR
burada ç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ı dir2
artı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--
app/cache
bir dizini içeren bir dizine sahipsekdev
, 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?