Perintah pertama akan mengubah izin file / direktori yang sudah ada sebelumnya. Perintah -d
di kedua sangat penting untuk mengatur izin default untuk direktori apa pun, yang pada gilirannya akan memberikan set ACL default untuk semua file dalam direktori ini.
CATATAN: Dalam kedua hal tersebut perintah akan dijalankan secara rekursif melalui -R
sakelar.
Mengenai -d
sakelar, dari setfacl
halaman manual:
-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).
Kutipan ini juga menjelaskannya dengan cukup baik:
Ada dua jenis ACL: mengakses ACL dan ACL standar. ACL akses adalah daftar kontrol akses untuk file atau direktori tertentu. ACL default hanya dapat dikaitkan dengan direktori; jika file dalam direktori tidak memiliki akses ACL, ia menggunakan aturan ACL default untuk direktori. ACL standar adalah opsional.
Sumber: 8.2. Pengaturan Akses ACL .
Contoh
Katakanlah saya memiliki struktur direktori ini.
$ tree
.
|-- dir1
| |-- dirA
| | `-- file1
| `-- fileA
`-- file1
2 directories, 3 files
Sekarang mari kita mengatur izin menggunakan setfacl
perintah pertama dalam pertanyaan Anda:
$ setfacl -R -m u:saml:rwx -m u:samtest:rwX .
Yang menghasilkan sebagai berikut:
$ 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--
Tanpa -dR
perintah yang dijalankan di sini, direktori baru tidak akan tercakup oleh ACL Anda:
$ mkdir dir2
$ getfacl dir2
# file: dir2
# owner: saml
# group: saml
user::rwx
group::rwx
other::r-x
Tetapi jika kita menghapus direktori ini dan menjalankan setfacl -dR ...
perintah dan ulangi operasi ini di atas:
$ rmdir dir2
$ setfacl -dR -m u:saml:rwx -m u:samtest:rwX .
Sekarang izin terlihat sangat berbeda:
$ 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--
Dan sekarang direktori kami yang baru dibuat akan mengambil izin "default" ini:
$ 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
Memiliki izin ini pada tempatnya dir2
sekarang akan menegakkan izin ini pada file di dalam dir2
juga:
$ 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
yang berisi direktori bernamadev
, perintah pertama akan diterapkan untuk itu, tetapi bukan yang kedua? Dan jika nanti direktori lain ditambahkan (misalnyaprod
), perintah kedua akan mengatur izin? Jika ini bukan kasusnya, saya harus bisa melewati perintah kedua?-R
perintah rekursif, jadi izin berlaku. Para-d
penjaga jika seseorang membuat direktori atau memindahkan beberapa direktori ke pohon nanti sehingga ACL ini akan diterapkan.