Saya memiliki beberapa ACL yang didefinisikan pada direktori sebagai berikut:
# owner: root
# group: root
user::rwx
group::r--
mask::r-x
other::r--
default:user::r--
default:group::r--
default:mask::r-x
default:other::r--
Saya ingin semua file baru yang dibuat di folder itu menjadi u: apache: r-- dan direktori baru apa pun menjadi u: apache: rx. Bagaimana cara menentukan maksud itu menggunakan ACL?
Saya sudah mencoba -dm u:apache:rX
dan sepertinya tidak melakukan hal yang berbeda dibandingkan hanyarx
overt htdocs # getfacl .
# file: .
# owner: root
# group: root
user::rwx
user:apache:r--
group::r--
mask::r-x
other::r--
default:user::r--
default:user:apache:r--
default:group::r--
default:mask::r--
default:other::r--
overt htdocs # setfacl -dm u:apache:rx .
overt htdocs # touch blah.txt
overt htdocs # getfacl blah.txt
# file: blah.txt
# owner: root
# group: root
user::r--
user:apache:r-x #effective:r--
group::r--
mask::r--
other::r--
overt htdocs # rm blah.txt
overt htdocs # setfacl -dm u:apache:rX .
overt htdocs # touch blah.txt
overt htdocs # getfacl blah.txt
# file: blah.txt
# owner: root
# group: root
user::r--
user:apache:r-x #effective:r--
group::r--
mask::r--
other::r--
Izin modal X tampaknya hanya berguna untuk mengatur izin saat ini, bukan untuk mengatur izin default:
overt htdocs # setfacl -x u:apache blah.txt
overt htdocs # getfacl blah.txt
# file: blah.txt
# owner: root
# group: root
user::r--
group::r--
mask::r--
other::r--
overt htdocs # setfacl -m u:apache:rX blah.txt
overt htdocs # getfacl blah.txt
# file: blah.txt
# owner: root
# group: root
user::r--
user:apache:r--
group::r--
mask::r--
other::r--
sumber
#effective
teks! Terima kasih atas penjelasan tentang bagaimana topeng memengaruhi izin yang efektif.Sayangnya, tidak ada cara untuk melakukan ini dengan Linux ACL. Memang benar bahwa topeng akan muncul untuk melakukan apa yang Anda inginkan, sejauh izin yang efektif. Tetapi lain kali Anda melakukan operasi yang menghitung ulang masker hak, bam , semua file Anda akan dapat dieksekusi.
Anda mungkin juga pasrah saja berharap semua file dalam ACL dapat dieksekusi. Itu benar-benar hanya kenyamanan daripada fitur keamanan, dan selama Anda tidak meletakkan folder itu di $ PATH Anda, seharusnya tidak menjadi masalah. Jika masih mengganggu Anda, satu-satunya pilihan adalah menempatkan folder yang dikontrol ACL Anda pada sistem file yang dipasang tanpa opsi eksekusi.
sumber
-d (atau --default) digunakan untuk mengatur default pada direktori sehingga hal-hal yang dibuat di dalamnya mewarisi perms (seperti yang tampaknya Anda lakukan).
Berikut ini adalah ikhtisar singkat. http://www.vanemery.com/Linux/ACL/linux-acl.html#default
Tidak mungkin memiliki file yang memiliki satu default dan dirs memiliki standar yang berbeda.
Anda dapat menjalankan skrip dari cron yang melakukan setfacl pada semua dirs setiap menit - meskipun itu kurang ideal dari solusi.
find / path / ke / top / dir -type d -exec setfacl -dm u: apache: rx {} \;
atau
find / path / ke / top / dir -type d | xargs setfacl -dm u: apache: rx
sumber
Posting ini di ACL dan Masker benar-benar membantu saya untuk memahami bagaimana melakukan apa yang saya inginkan, dan mengapa.
Bagian yang hilang dari pemahaman saya adalah bahwa ketika membuat file kernel menggunakan set izin default 0666 dan untuk direktori baru 0777. Jadi secara default direktori akan memiliki bit set eksekusi (traverse).
Topeng ACL pada dasarnya adalah cara untuk mengatur
umask
tingkat direktori / file / pengguna.sumber