GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana umask memengaruhi ACL?

Saya menemukan contoh ini, berjudul:ACL dan MASK di linux. Dalam artikel ini contoh-contoh berikut ditunjukkan yang menurut saya membantu untuk memahami bagaimana ACL dan umask berinteraksi satu sama lain.

Latar Belakang

Saat file dibuat di sistem Linux, izin default 0666 diterapkan sedangkan ketika direktori dibuat izin default 0777 diterapkan.

contoh 1 - file

Misalkan kita mengatur umask kita ke 077 dan menyentuh sebuah file. Kita bisa menggunakan strace untuk melihat apa yang sebenarnya terjadi saat kami melakukan ini:

$ umask 077; strace -eopen touch testfile 2>&1 | tail -1; ls -l testfile
open("testfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
-rw-------. 1 root root 0 Sep 4 15:25 testfile

Dalam contoh ini kita dapat melihat bahwa sistem memanggil open() dibuat dengan izin 0666, namun saat umask 077 kemudian diterapkan oleh kernel, izin berikut dihapus (---rwxrwx ) dan tersisa rw------- alias 0600.

contoh - 2 direktori

Konsep yang sama dapat diterapkan pada direktori, kecuali izin defaultnya adalah 0666, melainkan 0777.

$ umask 022; strace -emkdir mkdir testdir; ls -ld testdir
mkdir("testdir", 0777)                  = 0
drwxr-xr-x 2 saml saml 4096 Jul  9 10:55 testdir

Kali ini kita menggunakan mkdir memerintah. mkdir perintah kemudian memanggil system call mkdir() . Pada contoh di atas kita dapat melihat bahwa mkdir perintah yang disebut mkdir() panggilan sistem dengan izin default 0777 (rwxrwxrwx ). Kali ini dengan umask 022 izin berikut dihapus (----w--w- ), jadi tersisa 0755 (rwxr-xr-x ) saat direktori dibuat.

contoh 3 (Menerapkan ACL default)

Sekarang mari kita buat sebuah direktori dan demonstrasikan apa yang terjadi ketika ACL default diterapkan padanya bersama dengan file di dalamnya.

$ mkdir acldir
$ sudo strace -s 128 -fvTttto luv setfacl -m d:u:nginx:rwx,u:nginx:rwx acldir

$ getfacl --all-effective acldir
# file: acldir
# owner: saml
# group: saml
user::rwx
user:nginx:rwx          #effective:rwx
group::r-x          #effective:r-x
mask::rwx
other::r-x
default:user::rwx
default:user:nginx:rwx      #effective:rwx
default:group::r-x      #effective:r-x
default:mask::rwx
default:other::r-x

Sekarang mari buat file, aclfile :

$ strace -s 128 -fvTttto luvly touch acldir/aclfile

# view the results of this command in the log file "luvly"
$ less luvly

Sekarang dapatkan izin dari file yang baru dibuat:

$ getfacl --all-effective acldir/aclfile 
# file: acldir/aclfile
# owner: saml
# group: saml
user::rw-
user:nginx:rwx          #effective:rw-
group::r-x          #effective:r--
mask::rw-
other::r--

Perhatikan topengnya, mask::rw- . Mengapa bukan mask::rwx seperti saat direktori dibuat?

Periksa luvly log file untuk melihat izin default apa yang digunakan untuk pembuatan file:

$ less luvly |grep open |tail -1
10006 1373382808.176797 open("acldir/aclfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3 <0.000060>

Di sinilah agak membingungkan. Dengan topeng diatur ke rwx ketika direktori dibuat, Anda akan mengharapkan perilaku yang sama untuk pembuatan file, tetapi tidak seperti itu. Itu karena kernel memanggil open() berfungsi dengan izin default 0666 .

Untuk meringkas

  • File tidak akan mendapatkan izin eksekusi (masking atau efektif). Tidak masalah metode mana yang kami gunakan:ACL, umask, atau mask &ACL.
  • Direktori bisa mendapatkan izin eksekusi, tetapi itu tergantung pada bagaimana kolom masking disetel.
  • Satu-satunya cara untuk mengatur izin eksekusi untuk file yang berada di bawah izin ACL adalah dengan mengaturnya secara manual menggunakan chmod .

Referensi

  • halaman manual acl

untuk tujuan keamanan, sistem operasi linux tidak mengizinkan pembuatan file secara otomatis dengan bit eksekusi. Ini untuk mencegah penyerang dunia maya menulis program ke dalam file tersebut dan mengeksekusinya jika mereka mendapatkan akses ke server Anda. Itu hanya tindakan pencegahan keamanan. Anda selamanya harus secara manual mengatur bit eksekusi pada file setelah membuatnya dengan utilitas chmod


Linux
  1. Cara mengubah izin file di cPanel File Manager

  2. Bagaimana rm bekerja? Apa yang rm lakukan?

  3. Cara grep \n dalam file

  1. Memindahkan File Saat Sedang Digunakan -- Bagaimana cara kerjanya?

  2. Bagaimana cara ACL menghitung izin efektif pada suatu file?

  3. Apa arti + di akhir izin dari ls -l?

  1. Cara Mengatur Izin File Laravel dengan Benar

  2. Bagaimana Mengubah Izin File Pada Drive FAT32??

  3. Memahami Bagaimana Umask Mengontrol Izin File / Direktori Awal di Linux