Pertanyaan Buat pemilik baru buat file DAN folder www-data, bukan superuser / admin


Saya telah berjuang dengan izin sejauh ini, dan memposting pertanyaan lain tetapi mengidentifikasi masalah apa, tanpa cara apa pun untuk memperbaikinya.

Pengaturan saya:

  • Desktop Ubuntu dengan LAMP stack
  • 5 "pengguna" Saya membuat pengguna yang saya buat di server Ubuntu menggunakan sudo useradd -r -s /bin/false USERNAME dan yang digunakan untuk mengakses folder bersama jaringan lokal, yaitu untuk komputer di jaringan saya untuk terhubung ke folder / var / www, yang dibagikan menggunakan Samba.
  • EDIT: Tujuannya adalah untuk membuat semacam "master localhost" di mana semua komputer di jaringan lokal saya dapat bekerja di situs web yang sama, secara lokal (saya TIDAK memiliki alamat IP statis sehingga server tidak dapat diakses dari tempat lain) .

Masalahku:

Saat ini ketika saya membuat folder baru /var/www/html (mis: Membuat folder / var / www / html / testsite1) menggunakan komputer manapun dari jaringan, folder ini secara otomatis dimiliki oleh boris:www-data ("boris" menjadi pengguna admin utama pada instalasi desktop ubuntu saya, dan ini menunjukkan memang boris: www-data saat berjalan ls -l pada folder yang baru dibuat), yang menyebabkan masalah dengan pengaturan saya saat ini (menggunakan Plugin Duplicator untuk wordpress oleh LifeInTheGrid kebanyakan). Namun, saya berdua /var/www dan saya /var/www/html dimiliki oleh www-data:www-data

Oleh karena itu, saya ingin tahu bagaimana saya dapat:

  • Ubah kepemilikan ke www-data: www-data semua file DAN direktori di bawah / var / www dan / var / www / html

  • Yakinkan file atau folder apa pun yang akan saya buat dengan salah satu pengguna jaringan saya akan secara otomatis dimiliki oleh www-data: www-data (Itu termasuk file yang secara otomatis dibuat oleh skrip php seperti yang dilakukan plugin Duplicator jika saya tidak salah).

Apakah ada cara untuk melakukan itu?

Catatan: Saya adalah seorang newbie super dengan hal-hal yang berkaitan dengan Linux dan baris perintah, tetapi saya menyusul dengan cepat.

Catatan 2: umask sudah ditetapkan sebagai 0002

EDIT:

Sudah mencoba ini:

sudo chown -R www-data:www-data /var/www/

Dan kemudian atur setuid dan setgid bits dengan melakukan ini:

sudo chmod u+s /var/www/html
sudo chmod g+s /var/www/html

Kemudian log-off, restart apache, dan mencoba membuat folder baru menggunakan Mac yang terhubung ke server saya melalui jaringan IP (IP lokal, bukan statis).

Aku Ran

ls -l on /var/www/html

Output masih:

drwxr-sr-x 2 boris   www-data  testsite1

catatan:

Saya sudah memeriksa konfigurasi apache saya sebelumnya dan envvars, itu sudah diatur untuk:

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

EDIT: Saya mencoba mundur, misalnya mengatur segala sesuatu yang harus dimiliki oleh boris: www-data dan mengatur konfigurasi apache envvars saya ke boris: www-data. ITU BEKERJA!

Inilah yang saya lakukan:

Mengubah envvars menjadi

export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data

Ran

sudo chown -R boris:www-data /var/www/

Mulai kembali Apachem, buat folder baru, tambahkan file saya, jalankan plugin, sekarang bilang itu bagus !!!


10
2018-06-02 11:28


asal


Ini adalah ide yang buruk untuk keamanan untuk mengatur file yang akan dimiliki oleh pengguna atau grup www-data, meskipun dalam kasus yang jarang dapat diperlukan untuk file tertentu yang perlu dituliskan oleh server web. Apa yang Anda coba capai? - thomasrutter


Jawaban:


Jawaban untuk Pertanyaan # 1: Rekursif chown

Sebuah rekursif chown akan membiarkan Anda mengatur kepemilikan dan kelompok ke apa yang Anda inginkan /var/www/.... Ini adalah perintah yang harus Anda gunakan:

sudo chown -R www-data:www-data /var/www/

Dengan itu, setiap file dan folder akan diatur sedemikian rupa di dalam sana dengan izin kepemilikan tersebut.


Setengah-Jawaban untuk Pertanyaan # 2: setgid sedikit

Jika Anda ingin kepemilikan grup default pada file, atur setgidsedikit di /var/www/html map. File-file baru kemudian harus dibuat dengan grup itu seperti yang disebutkan di folder.

sudo chmod g+s /var/www/html

Anda harus mengatur izin menulis, meskipun, jika ada pengguna selain www-data sedang menulis ke direktori, dan hal itu dapat membuka Anda ke lubang keamanan atau dua jika Anda tidak berhati-hati.

Anda berakhir dengan perizinan sedang $USER:www-data; untuk mengubah pemilik yang kemudian Anda gunakan chown seperti yang ditunjukkan dalam metode # 1 (yang mengatakan, dalam pengaturan yang tepat Anda harus bergantung pada izin grup, bukan izin pemilik pengguna, untuk akses ke file web).


Masalah PHP Wordpress Duplicator

Masalah dengan perizinan adalah pengguna / grup PHP berjalan sebagai kebutuhan menulis dan membaca dan kemungkinan +x pada direktori untuk mengedit struktur dir dan semacamnya.

PHP berjalan sebagai www-data secara default di instalasi Ubuntu yang menggunakan konfigurasi default. Idealnya, langkah Anda di atas akan membuat masalah tetap, karena Anda terjebak dengan Plugin Duplicator menjadi plugin PHP.

Idealnya Anda juga harus memeriksa dokumentasi untuk Plugin Duplicator untuk memverifikasi izin apa yang dibutuhkan untuk menjalankan dan bekerja.


9
2018-06-02 11:49



Saya suka metode setuid :) - Rinzwind
Ini persis apa yang saya cari !!!! Satu-satunya masalah: tidak berhasil :-( Saya membuat folder di mac saya (yaitu TIDAK dengan komputer desktop ubuntu) dengan mengakses server saya melalui IP lokalnya. Ketika saya menjalankan ls-l, masih dimiliki oleh boris: www- data: - / - Boris Chevreau
Apakah karena saya mengatur kepemilikan pengguna pada file tetapi tidak pada folder? Apakah itu hanya karena folder yang saya buat TIDAK DAPAT dimiliki secara otomatis oleh www-data: www-data? - Boris Chevreau
Mac berbeda dari Linux, dan jika Anda benar-benar tidak beruntung maka metode ini tidak akan berfungsi dan Anda akan berakhir harus mengacaukan banyak hal selain hanya izin sederhana (seperti ACL dan hal-hal lain) untuk mengatur file default . Juga, 'tidak bekerja' tidak jelas. define tidak berfungsi dan menyertakan output sebagai pengeditan untuk pertanyaan. - Thomas Ward♦
@BorisChevreau, mungkin saja sistem tidak akan menyetel file yang dibuat oleh pengguna lain - ini bisa disebabkan oleh, katakanlah, masalah yang saya singgung bahwa pengguna Anda tidak akan dapat mengedit file (dan Anda memiliki file saat ini). Biasanya Anda akan meninggalkan kepemilikan pengguna sendiri dan memberikan www-data hak akses grup (daripada bergantung pada perubahan pengguna pemilik) - Thomas Ward♦


Untuk memastikan file atau folder apa pun yang Anda buat /var/www/html secara otomatis dimiliki oleh www-data yang dapat Anda gunakan inotify, itu seperti cron tetapi memonitor folder / file untuk perubahan dalam attribuets, kreasi file, modifikasi dan banyak lagi.

Pertama instal dengan:

$ sudo apt-get install incron

Izinkan root untuk digunakan incron dengan membuka /etc/incron.allow dengan:

$ sudo vim /etc/incron.allow

dan tambahkan root ke file, lalu simpan dan keluar.

Edit incrontab Anda dengan:

$ sudo incrontab -u root -e

dan tambahkan baris berikut ini:

/var/www/html IN_CREATE /bin/chown -R www-data:www-data /var/www/html/

Simpan dan keluar.

Sekarang segera setelah file dibuat di /var/www/html direcotry itu akan secara otomatis mengatur onwership ke www-data:www-data.

Penjelasan baris di incrontab:

/var/www/html adalah direktori yang akan dipantau.

IN_CREATE akan mengawasi file yang dibuat. Ini adalah topeng perubahan file.

/bin/chown -R www-data:www-data /var/www/html/ adalah perintah / tindakan untuk dieksekusi.


4
2018-06-02 11:59



Mereka dapat mencapai sesuatu seperti ini tanpa inotify dan setgid - kepemilikan pengguna mungkin tidak harus sering berubah dan mereka dapat mereset kepemilikan pengguna sendiri ... atau menggunakan ACL yang bisa menjadi sakit - Thomas Ward♦
Seluruh tujuan dari server ini adalah agar kami dapat menggunakannya sebagai "tuan rumah lokal", misalnya membuat situs web lokal dan dapat mengedit / mengganti / memindahkan dan membuat situs uji dengan cepat sangat mudah. Jika saya harus mengatur ulang secara manual semuanya, itu membunuh seluruh tujuan: - / - Boris Chevreau
Apakah ini "incron" jalan satu-satunya cara? Saya tidak mengerti mengapa itu harus begitu rumit. Apa yang saya cari adalah cara sederhana untuk semua komputer saya di jaringan untuk membuat situs web di server ini. Akhirnya karena saya tidak memiliki IP statis (maka keamanan bukan masalah), apakah ada perubahan haluan lain yang akan Anda pikirkan? - Boris Chevreau


Ubah kepemilikan ke www-data: www-data semua file DAN direktori di bawah / var / www dan / var / www / html

cd /var/www/
chown -R  www-data:www-data /var/www/
  • ./html tersirat di sini (sebagai bagian dari / var / www /)
  • -R membuatnya rekursif (sehingga akan melintasi semua direktori di /var/www/).

Pastikan file atau folder apa pun yang akan saya buat dengan salah satu pengguna jaringan saya akan secara otomatis dimiliki oleh www-data: www-data

  • Di dalam / var / www / html / saya akan berasumsi?

Setel konfigurasi apache Anda ke data www. Lihat /etc/apache2/envvars

# envvars - default environment variables for apache2ctl

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

Anda perlu me-restart apache setelah mengedit ini (sudo service apache restart).

Itu termasuk file yang secara otomatis dibuat oleh skrip php seperti yang dilakukan plugin Duplicator jika saya tidak salah).

Masalahnya di sini mungkin bukan plugin tetapi php. Pengguna harus memiliki proses yang sama dengan PHP berjalan di bawah. Jadi Anda mungkin perlu mengaturnya ke data-www juga jika itu adalah pengguna dan grup Anda (/etc/php5/apache2/php.ini).


3
2018-06-02 11:44



Default Ubuntu menjalankan proses / pekerja PHP sebagai www-data, seperti halnya Debian, saya percaya. - Thomas Ward♦
Juga, masalah dengan /var/www/html juga kepemilikan grup dan baca / tulis privs. Masalah lainnya adalah mereka menginginkan file apa pun yang dibuat oleh pengguna www-data:www-data, dan tebakan saya adalah itu jaringan pengguna, bukan pengguna Wordpress, jadi Anda harus mencari izin file Linux. - Thomas Ward♦
Mereka adalah pengguna jaringan memang, itu pengguna yang saya buat di server ubuntu menggunakan sudo useradd -r -s / bin / USERNAME palsu dan yang digunakan untuk mengakses folder bersama jaringan lokal - Boris Chevreau
Bagaimana jika saya mengubah kepemilikan dan menulis izin dari semua folder dan file kembali ke boris: www-data, kemudian mengubah envvars untuk apache menjadi boris: www-data? Apakah itu mungkin memperbaiki masalah karena kapan saja saya membuat file baru itu ditetapkan sebagai pemilik yang boris: www-data? - Boris Chevreau


Saya memecahkannya! Saya masih berpikir itu adalah masalah envvars Apache, tetapi tidak yakin apakah itu adalah hal khusus yang memecahkan masalah ... Pokoknya inilah yang saya lakukan:

Mengubah envvars menjadi

export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data

Ran

sudo chown -R boris:www-data /var/www/

Sekarang bekerja sejauh ini. Akan menguji lebih lanjut ...


1
2018-06-02 14:31