Ketika saya menggunakan setfacl untuk mengelola izin apa yang harus dimiliki file / direktori anak, untuk beberapa alasan file tersebut memiliki semua izin kecuali yang mengeksekusi (“x”).
[email protected]:/opt/lampp/htdocs/project$ getfacl .
# file: .
# owner: someuser
# group: webs
# flags: -s-
user::rwx
group::rwx
other::rwx
default:user::rwx
default:group::rwx
default:other::rwx
[email protected]:/opt/lampp/htdocs/project$ touch file
[email protected]:/opt/lampp/htdocs/project$ mkdir dir
[email protected]:/opt/lampp/htdocs/project$ ls -l
total 4
drwxrwsrwx+ 2 someuser webs 4096 paź 31 13:35 dir
-rw-rw-rw- 1 someuser webs 0 paź 31 13:35 file
Saya pikir ini ada hubungannya dengan umask tetapi mengubahnya dengan berbagai cara tidak pernah memberikan hasil yang diharapkan kecuali saya melewatkan sesuatu.
Bagaimana ini bisa diperbaiki?
Jawaban yang Diterima:
Jawaban Hauke Laging mencoba mengatakan:
cp
dan program terkait (mis.,cpio
,tar
, dll.)
yang menyalin atau membuat ulang file,
yang akan (mencoba) mengatur file baru ke mode yang sama
seperti file asli.- Compiler, yang membuat file biner yang dapat dieksekusi, menentukan mode 777
(setidaknya, jika kompilasi berhasil),
sehingga pengguna benar-benar dapat menjalankan program yang baru saja mereka kompilasi.
Program apa pun yang membuat file atau direktori menentukan mode (izin)
yang diinginkannya untuk dimiliki file tersebut.
Ini hampir selalu dikodekan dalam program C
(atau bahasa apa pun yang digunakan)
dan hampir tidak pernah dapat diakses langsung oleh pengguna.
Kemudian umask
nilai dan ACL default dapat mematikan bit izin,
tetapi tidak menambahkannya.
Masalah Anda adalah, sementara mkdir
menentukan mode 777 (rwxrwxrwx
),
hampir semua program yang membuat file menentukan 666 (rw-rw-rw-
).
Ini termasuk touch
, shell
(untuk pengalihan I/O; mis., program > file
),
editor (vi
, vim
, emacs
, dll…), dd
, split
, dan seterusnya.
Oleh karena itu, Anda tidak akan mendapatkan izin rwxrwxrwx
pada file biasa
segera setelah dibuat (oleh salah satu program ini),
apa pun yang Anda lakukan dengan ACL;
Anda harus membuat file dan kemudian chmod
itu.
Ada beberapa pengecualian untuk aturan ini: