GNU/Linux >> Belajar Linux >  >> Linux

Tidak Dapat Menjelaskan Perilaku Acl?

Jadi beginilah situasinya:
mendapat server untuk pengembang web. Ada banyak pengembang. Semua developers + PHP + Apache milik www kelompok. Ada direktori pengembangan – development .

Tujuannya adalah agar setiap file dalam development direktori memiliki 755 izin dan setiap kali pengembang membuat, memodifikasi file di development direktori, file akan tetap memiliki 755 .

Jadi saya telah membaca sejumlah acl tutorial, panduan dan caranya tetapi saya masih belum bisa mendapatkan hasil yang saya inginkan.

  1. disk saya terpasang dengan acl
  2. Saya mendapatkan chown -R www:www development
  3. menambahkan chmod g+s development
  4. Saya menetapkan sejumlah acl aturan tentang development direktori dan dapatkan ini:

    $ getfacl development
    # file: development
    # owner: www
    # group: www
    # flags: -s-
    user::rwx
    user:www:rwx
    group::rwx
    group:www:rwx
    mask::rwx
    other::r-x
    default:user::rwx
    default:user:www:rwx
    default:group::rwx
    default:group:www:rwx
    default:mask::rwx
    default:other::r-x
    
    p.s. I know its messy, was doing a number of tests
    
  5. Menurut ide saya tentang ACL , jika direktori memiliki aturan seperti itu, tugas saya harus tercapai, tetapi ketika saya mencoba membuat file di development dir, saya mendapatkan:

    -rw-rw-r--+ 1 www     www      0 Nov 21 09:14 newfile
    

Sepertinya saya tidak mengerti mengapa itu membuat rw- sebagai gantinya rwx .

Mungkin sesuatu yang sederhana yang saya lewatkan atau beberapa konsep umum yang tidak saya mengerti.

Jawaban yang Diterima:

ACL default Anda menggantikan umask, yang menentukan bukan default izin, tetapi maksimum izin untuk membuat file baru. Dalam hal ini rwxrwxr-x .

Kemudian aplikasi Anda memanggil open atau creat dengan izin yang diinginkan. Hampir semua aplikasi akan meminta rw-rw-rw- untuk file.

Anda dapat melihat ini dengan menjalankan strace , misalnya

$ strace -e trace=file touch newfile
...
open("newfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3

(0666 sama dengan rw-rw-rw- .)

Kedua izin digabungkan menggunakan bitwise DAN untuk memberikan rw-rw-r-- .

  rwxrwxr-x     # default ACL
  rw-rw-rw-     # permission requested (e.g. by touch, vim, etc.)
& _________
  rw-rw-r--     # effective permissions

Untuk penjelasan lainnya, lihat Daftar Kontrol Akses POSIX — “Contoh ACL Default”.

Jadi pertanyaan sebenarnya adalah:mengapa Anda membutuhkan file agar dapat dieksekusi?


Linux
  1. Temukan File yang Tidak Dapat Dibaca Pengguna?

  2. Bisakah Skrip Dapat Dieksekusi Tetapi Tidak Dapat Dibaca?

  3. Operasi Tidak Didukung Dengan Setfacl?

  1. Tidak Dapat Menginstal Anggur Di Ubuntu Studio 19.10?

  2. setfacl:perintah tidak ditemukan

  3. Bagaimana saya bisa memeriksa file yang ada dan menjalankan perintah jika tidak?

  1. Bisakah read(2) mengembalikan nol saat tidak di EOF?

  2. Bagaimana saya bisa memeriksa apakah PostgreSQL diinstal atau tidak melalui skrip Linux?

  3. Bagaimana cara membuat file hanya-baca secara permanen di Linux sehingga root pun tidak dapat mengeditnya?