Dapatkah seseorang menjelaskan kepada saya bagaimana umask
memengaruhi topeng default dari file yang baru dibuat jika ACL diaktifkan? Apakah ada dokumentasi tentang ini?
Contoh:
$ mkdir test_dir && cd test_dir
$ setfacl -m d:someuser:rwx -m u:someuser:rwx . # give access to some user
$ getfacl .
# file: .
# owner: myUsername
# group: myGroup
user::rwx
user:someuser:rwx
group::---
mask::rwx
other::---
default:user::rwx
default:user:someuser:rwx
default:group::---
default:mask::rwx
default:other::---
$ umask # show my umask
077
$ echo "main(){}" > x.c # minimal C program
$ make x # build it
cc x.c -o x
$ getfacl x
# file: x
# owner: myUsername
# group: myGroup
user::rwx
user:someuser:rwx #effective:rw-
group::---
mask::rw-
other::---
Saya harapkan mask:rwx
. Sebenarnya setelah pengaturan umask
misalnya 027
saya mendapatkan perilaku yang diharapkan.
linux
permissions
posix
acl
Jofel
sumber
sumber
mask::rw-
. Tapi itu bukan pertanyaan Anda, benar?mask::rw-
dan bukanmask::rwx
yang merupakan topeng default direktori.Jawaban:
Saya menemukan contoh ini, berjudul: ACL dan MASK di linux . Pada artikel ini, contoh berikut diperlihatkan yang menurut saya membantu memahami bagaimana ACL dan
umask
berinteraksi satu sama lain.Latar Belakang
Ketika sebuah file dibuat pada sistem Linux, izin default
0666
diterapkan sedangkan ketika sebuah direktori dibuat, izin default0777
diterapkan.contoh 1 - file
Misalkan kita mengatur umask kita ke 077 dan menyentuh file. Kita dapat menggunakan
strace
untuk melihat apa yang sebenarnya terjadi ketika kita melakukan ini:Dalam contoh ini kita dapat melihat bahwa pemanggilan sistem
open()
dilakukan dengan izin 0666, namun ketikaumask 077
kemudian diterapkan oleh kernel izin berikut dihapus (---rwxrwx
) dan kami pergi denganrw-------
alias 0600.contoh - 2 direktori
Konsep yang sama dapat diterapkan ke direktori, kecuali bahwa alih-alih izin default menjadi 0666, mereka adalah 0777.
Kali ini kami menggunakan
mkdir
perintah. Themkdir
perintah kemudian disebut system callmkdir()
. Dalam contoh di atas kita dapat melihat bahwamkdir
perintah yang disebutmkdir()
system call dengan izin defaul0777
(rwxrwxrwx
). Kali ini dengan umask dari022
izin berikut dihapus (----w--w-
), jadi kita tinggal 0755 (rwxr-xr-x
) ketika direktori dibuat.contoh 3 (Menerapkan ACL default)
Sekarang mari kita membuat direktori dan menunjukkan apa yang terjadi ketika ACL default diterapkan padanya bersama dengan file di dalamnya.
Sekarang mari kita buat file
aclfile
,:Sekarang dapatkan izin dari file yang baru dibuat:
Perhatikan topengnya
mask::rw-
,. Mengapa tidakmask::rwx
seperti ketika direktori itu dibuat?Periksa
luvly
file log untuk melihat izin default apa yang digunakan untuk pembuatan file:Di sinilah agak membingungkan. Dengan masker diatur ke
rwx
saat direktori dibuat, Anda akan mengharapkan perilaku yang sama untuk pembuatan file, tetapi tidak berfungsi seperti itu. Itu karena kernel memanggilopen()
fungsi dengan izin default dari0666
.Untuk meringkas
chmod
.Referensi
sumber
chmod("file",0760)
->mask:rw
,chmod("file",0770)
->mask:rwx
). Mungkin saya harus memulai pertanyaan baru tentang ini ...untuk tujuan keamanan, sistem operasi linux tidak memungkinkan untuk pembuatan file secara otomatis dengan bit eksekusi. Ini untuk mencegah penyerang cyber dari menulis program ke file-file tersebut dan mengeksekusinya jika mereka mendapatkan akses ke server Anda. Ini hanya tindakan pencegahan keamanan. Anda selamanya harus secara manual mengatur bit eksekusi pada file setelah membuatnya dengan utilitas chmod
sumber