Izin / kepemilikan terbaik untuk root dokumen apache

14

Saya butuh bantuan mengatur izin atau kepemilikan yang benar dari root dokumen apache. Inilah yang saya butuhkan:

  • berbagai situs web yang disimpan di /var/www/html/<site>
  • dua pengguna harus memperbarui / mengelola situs web melalui ssh
  • kepemilikan harus berbeda dari pengguna apache (untuk keamanan)

Bagaimana saya bisa melakukan ini? Saat ini semua file dapat ditulis oleh dunia, yang tidak baik. Server menjalankan CentOS 5.5

Terima kasih

Marco
sumber
Untuk jawaban yang lebih terperinci dengan opsi lain untuk mengamankan dokumen, lihat serverfault.com/questions/357108/…
Quinn Comendant
Saya pikir lebih baik untuk menyimpan setiap situs web di lokasi yang terpisah (jangan meletakkan keduanya di DocumentRoot, gunakan 2 host virtual) maka setiap pengguna sysadmin hanya memiliki situs web sendiri dan mengatur pemilik grup dari kedua direktori situs web sebagai grup Apache
the akuntan

Jawaban:

22

Buat grup baru

groupadd webadmin

Tambahkan pengguna Anda ke grup

usermod -a -G webadmin user1
usermod -a -G webadmin user2

Ubah kepemilikan direktori situs

chown root:webadmin /var/www/html/

Ubah izin direktori situs

chmod 2775 /var/www/html/ -R

Sekarang siapa pun dapat membaca file (termasuk pengguna apache) tetapi hanya root dan webadmin yang dapat mengubah kontennya.

Andy
sumber
Itu terlihat bagus. Tetapi apa yang terjadi jika pengguna membuat file baru atau menyalin file yang diperbarui. Apakah izin itu diterapkan secara otomatis? Atau apakah dia perlu chown dan chmod setiap kali?
Marco
File yang disalin mempertahankan izin / kepemilikan. Izin file default untuk file baru ditangani oleh umaskperintah. Info lebih lanjut di sini osr507doc.sco.com/en/OSUserG/_default_perms_new_file.html
Andy
3
Anda bisa membuat dir setgid webadmin untuk membantu dengan file baru
covener
1
^ +1. Cara cepatnya adalah: >> chmod 2775 -R / var / www / html /
James Broadhead
@ James ta, diperbarui
Andy
2

Saya lebih suka me-mount partisi dengan -o acl. Ini memungkinkan Anda untuk menggunakan perintah setfacl untuk memberikan izin berbutir halus pada file dan folder, alih-alih hanya menentukan izin grup-pengguna-lainnya.

Jadi, letakkan acl ke baris partisi Anda di / etc / fstab, atau remount dengan mount -o remount, acl / mnt / xy, dan kemudian berikan kepemilikan direktori web Anda kepada siapa pun: siapa pun. Chmod ke 770, dan gunakan setfacl untuk memberikan izin menulis hanya pada folder yang membutuhkannya, mis. berikan www-data (atau pengguna yang dijalankan oleh server web Anda) tulis izin untuk folder unggah, dan berikan izin tulis kepada pengguna Anda sendiri untuk seluruh direktori.

mkdir dir
chown nobody:nobody dir
setfacl -m u:www-data:r-x,d:u:www-data:r-x dir
setfacl -m u:www-data:rwx,d:u:www-data:rwx dir/upload
setfacl -m u:youruser:rwx,d:u:youruser:rwx dir

Sekarang tidak ada yang bisa membaca file Anda, selain server web Anda, dan pengguna Anda sendiri. Anda dapat menulis ke setiap file di folder, dan server web hanya dapat menulis ke folder unggah.

K. Norbert
sumber