Untuk file yang dibuat dari akun pengguna testuser di direktori / var / www, saya perlu mereka memiliki g + rwx sebagai izin, dan www-data sebagai grup.
Bagaimana saya bisa mencapai ini?
Saya membuat file melalui SSH.
Untuk file yang dibuat dari akun pengguna testuser di direktori / var / www, saya perlu mereka memiliki g + rwx sebagai izin, dan www-data sebagai grup.
Bagaimana saya bisa mencapai ini?
Saya membuat file melalui SSH.
Jawaban:
Untuk mengatur kelompok, memberikan /var/www
yang setgid bit:
chgrp www-data /var/www
chmod g+s /var/www
Untuk juga menyesuaikan subdirektori: find /var/www -type d -exec chmod g+s {} +
Ini akan membuat semua file yang baru dibuat mewarisi grup direktori induk, bukan pengguna.
Untuk mengatur izin grup default, Anda harus menggunakan ACL . Tetapkan ACL "default":
setfacl -m "default:group::rwx" /var/www
Untuk juga menyesuaikan subdirektori: find /var/www -type d -exec setfacl -m d:g::rwx {} +
Catatan: Sistem file harus memiliki dukungan ACL yang diaktifkan. Terkadang diaktifkan secara default; pada ext3 atau ext4 Anda mungkin mendapatkan "Operasi tidak didukung", dalam hal ini harus diaktifkan secara manual:
Untuk sistem file yang saat ini dipasang: mount -o remount,acl /
Secara permanen - salah satu metode berikut:
di tingkat fstab: edit /etc/fstab
untuk ada acl
di bidang opsi
di tingkat sistem file: tune2fs -o acl /dev/diskname
chmod
juga akan mendapatkan semua file.
install
, entah bagaimana berhasil melewati ACL direktori default.
/var/www/html/projects
folder dan ketika www-data membuat file memiliki rw-rw-r
izin tetapi ketika saya melakukan sesuatu di konsol itu membuat file dengan rw-r--r
. Bagaimana saya bisa memaksa file yang baru dibuat untuk selalu memiliki rw-rw-r
izin?
umask
. Izin default per-direktori dapat diubah menggunakan setfacl
seperti pada posting utama.
Ini mungkin membuat beberapa orang terjebak dengan jawaban 'grawity' pada setgid, jika grup folder berbeda dari milik Anda, Anda mungkin perlu menjalankan chmod sebagai root tetapi Anda tidak akan mendapatkan kesalahan yang mengindikasikan Anda perlu melakukan ini.
$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar 9 10:44 dir
$ chmod g+s dir #no errors
$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar 9 10:44 dir #but nothing changed
$ touch dir/nosudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar 9 10:51 nosudo #and the group is still wrong
$ sudo chmod g+s dir
$ ls -ld dir
drwxrwsr-x 2 luke testgroup 4096 Mar 9 10:44 dir #the setgid bit is now on
$ touch dir/withsudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar 9 10:51 nosudo
-rw-rw-r-- 1 luke testgroup 0 Mar 9 10:51 withsudo #and group is set
stor
/appe
? Melalui HTTPPUT
? Melalui akun shell? Detail-detail ini penting, karena mereka sangat memengaruhi jawaban yang mungkin, dan perlu ada dalam pertanyaan Anda.