Cara membuat Apache berjalan sebagai pengguna saat ini

44

Saya pikir untuk mesin pengembangan, lebih nyaman untuk menjalankan Apache sebagai pengguna saat ini untuk menyederhanakan masalah izin? Bagaimana aku melakukan itu? Saya pikir suexec-nya tetapi bagaimana cara mengkonfigurasinya di Ubuntu + Apache?

Jiew Meng
sumber

Jawaban:

28

Saya sendiri akan menambahkan pengguna ke www-datagrup dengan ...

sudo adduser {username} www-data

Sederhana dan efektif. Tidak main-main dengan file konfigurasi atau izin.

Rinzwind
sumber
6
Saya melakukannya sepanjang waktu, tetapi ini tidak akan memperbaiki beberapa masalah yang ditolak izinnya, karena hak grup tidak sama dengan hak pengguna untuk semua file.
Kostanos
1
Ini tidak akan diperbaiki jika CHMOD tidak mengizinkan grup untuk menulis.
GusDeCooL
masalahnya bagi saya adalah saya memiliki instalasi lokal. Ketika saya membuat file dengan IDE saya, mereka memiliki 'pengguna / grup' saya dan kadang-kadang apache tidak dapat membaca file-file itu
Postadelmaga
ini saja tidak menyelesaikan banyak masalah izin karena grup utama Anda biasanya bukan www-data dan beberapa aplikasi php memerlukan izin menulis grup. (joomla, wordpress)
Eric
2
Ini tidak menyelesaikan masalah di mana Anda membuat file dan data-www tidak dapat menghapus / mengeditnya karena grup utama Anda bukan data-www
billy
56

Edit file berikut sebagai root: / etc / apache2 / envvars

menggunakan perintah:

sudo nano /etc/apache2/envvars

ubah pengguna dan grup menjadi diri sendiri jika hanya ada satu pengguna dan Anda tidak akan pernah memiliki masalah izin lagi.

IE, jika Anda hanya masuk dan menjalankan server sebagai pengguna 'big_dog':

export APACHE_RUN_USER=big_dog
export APACHE_RUN_GROUP=big_dog

Heck, dalam hal ini Anda dapat mengubah pengguna itu menjadi pengguna saat ini saya yakin. Kemudian, instal user_dir Anda semua memiliki web saja Anda dapat memiliki kontrol penuh (kecuali Anda memodifikasi ini).

Mulai ulang server (jika tidak yakin, cukup reboot atau goole) dan Anda siap melakukannya.

Eric
sumber
3
Ini berfungsi sebagai pesona! Terima kasih. satu-satunya yang akan saya tambahkan:sudo chown big_dog.big_dog /var/lock/apache2
Kostanos
3
Mungkin Anda juga perlusudo chown big_dog.big_dog -R /var/log/apache2
Kostanos
Pada OpenSUSE-Tumbleweed (dan mungkin pada beberapa yang lain) filenya ada di/etc/apache2/uid.conf
Dilawar
Anda tidak perlu mengubah file envvars, saya baru saja memperbarui variabel lingkungan sebelum memulai Apache dengan skrip. Dengan cara ini, Anda tidak dikunci untuk satu pengguna tetapi yang pernah menjalankan skrip, menjalankan apache. Saya biasa export APACHE_RUN_USER=#$(id -u)memberikan id pengguna dan juga digunakan id -guntuk grup dalam skrip dan pada akhirnya saya memanggil apache untuk dijalankan.
inblueswithu
1

mengapa Anda melakukan ini ,, Saya berjuang dengan masalah perm di masa lalu, tapi ini adalah proses dev saya mulai hari ini:

  • instal kotak linux baru (virtual, atau laptop seperti lokal)
  • jalankan sudo apt-get install lamp-server^proc standar untuk menyalakan lampu
  • buat tautan sym ke dir home saya di mana proyek seperti ini:

    ln -s /home/user/html /var/www/html

  • buat tautan sym ke file konfigurasi hosts

    ln -s /home/user/html/Apache-VirtualHosts.conf /etc/apache/sites-enabled/000-default

itu dia :)

Ini berfungsi seperti yang diharapkan, tidak ada masalah dengan perms pengguna atau sesuatu yang mirip dengan server apache ,, untuk mysql saya punya sedikit proses lagi ..

hth, tepuk tangan

Kresimir Pendic
sumber
Itu tidak mengatasi masalah izin yang dibahas dalam sebagian besar jawaban lain.
HörmannHH
0

Menghindari masalah "harus Anda lakukan", Anda dapat menemukan di mana pengguna untuk apache diatur dengan menjalankan:

grep www- /etc/apache2/apache2.conf

Ini kemudian kasus mengedit contoh-contoh di dalam /etc/apache2/apache2.confdan memuat ulang Apache ( sudo /etc/init.d/apache2 reload).

Oli
sumber
apache2.conftidak mengandung www-untuk saya
Jiew Meng
Saya punya perasaan Anda berarti sesuatu seperti grep -HR "www-" /etc/apache2/. Jika Anda sudah tahu itu di apache2.conf maka cukup edit file itu. Dalam kasus saya, itu tidak ada di sana, tetapi di / etc / apache2 / envvars sebagai jawaban Eric menunjukkan.
Mike
Itu karena apache.confmencari ${APACHE_RUN_USER}dan ${APACHE_RUN_GROUP}. Tidak www-datasecara langsung.
Yahya Uddin
0

buat grup pengguna baru webdevdan tambahkan www-datapengguna ke dalamnya.

sudo addgroup webdev
sudo adduser www-data webdev

Lalu, lanjutkan dan tambahkan pengguna Anda ke grup itu dan jadikan itu grup default untuk pengguna Anda.

sudo adduser {your-user} webdev
sudo addgroup webdev

Hal terakhir yang harus dilakukan adalah memastikan, grup webdev memiliki hak rwx pada file

sudo chmod 775 -R /path/to/project

Sekarang satu-satunya hal yang dapat terjadi adalah bahwa untuk misalnya www-data membuat file log baru dan Anda tidak dapat menjalankannya.

Thomas Venturini
sumber
1
Apa keuntungannya, lebih dari hanya menambahkan pengguna saya sendiri ke www-datagrup, khususnya karena kita berbicara tentang lingkungan pengembangan?
Dan
baik jika Anda melakukannya dengan cara ini, dan mengatur hak 775 untuk misalnya public_html atau / var / www Anda tidak akan memiliki masalah dengan hak-hak di mesin dev Anda. pendekatan lainnya, memberi Anda langkah-langkah tambahan untuk dilakukan atau tidak seefektif yang saya inginkan. Jadi menurut saya, ini adalah cara terbaik untuk menghadapinya pada mesin dev. untuk server yang produktif saya akan merekomendasikan pengaturan yang berbeda. juga dengan pendekatan ini, Anda dapat menambahkan pengguna dengan mudah.
Thomas Venturini