Saya tahu izin file telah dibahas di sini sebelumnya, tetapi saya berjuang untuk mendapatkan kepala saya di sekitar konsep untuk skenario saya.
- Saya membuat file pada instalasi ubuntu lama.
- Saya sudah menyalin file ke instalasi ubuntu baru saya dan meletakkannya di webroot saya.
- Ketika saya mencoba untuk menjalankan file (file PHP mereka) saya mendapatkan kesalahan yang berkaitan dengan izin
dalam upaya untuk memperbaiki ini, saya berasumsi bahwa mereka masih harus dimiliki oleh pemilik sebelumnya, jadi saya berlari chown -R
pada direktori, dengan nama pengguna saya sebagai argumen, untuk mengambil kepemilikan semua file dalam direktori. Perlu dicatat bahwa nama pengguna antara instalasi ubuntu baru dan lama adalah sama.
Ketika saya mencoba untuk menjalankan file lagi, masalah yang sama: 500 kesalahan karena masalah izin. Adakah yang bisa memberi tahu saya langkah apa yang harus saya ambil?
Webroot untuk instalasi apache saya ada di dalam folder rumah saya. Jika saya membuat file baru di webroot saya, mereka juga berfungsi seperti yang diharapkan, itu hanya file lama yang menyebabkan masalah.
sumber
chmod -R 777 dir
direktori yang dimaksud. Saya tidak dapat berpikir bahwa ada cara yang lebih baik untuk melakukannyaJawaban:
Direktori di atas akar web Anda harus memiliki bit eksekusi yang diatur untuk memungkinkan Apache turun ke direktori.
Jika Anda telah webroot Anda berada di
/home/user/htdocs
, yang/
,/home
,/home/user
dan/home/user/htdocs
harus memiliki bit eksekusi set.Solusi di atas "bekerja", tetapi itu tidak ideal. Jika Anda telah membuat folder, Apache tidak dapat menulisnya. Kebalikannya terjadi juga.
Ini dapat "diperbaiki" dengan menetapkan umask 0007 dan menambahkan diri Anda ke grup Apache (www-data jika saya tidak salah), sehingga file dan folder yang baru dibuat dapat ditulisi oleh grup.
Atau, Anda dapat menginstal Apache MPM alternatif: Apache2 MPM ITK ( info tentang konfigurasi ) dan sesuaikan konfigurasi sehingga Apache berjalan di bawah pengguna Anda.
sumber
Jika dokumen server Anda ada dalam
/home/$USER/public_html
direktori, Anda harus menjalankannyauntuk memberikan kepemilikan folder DocumentRoot kepada pengguna
www-data
dan grupwww-data
.Kemudian Anda dapat menambahkan diri Anda ke grup
www-data
Terakhir, Anda perlu membuat folder DocumentRoot dapat ditulis oleh pemilik (pengguna data-www) dan ke diri Anda (sebagai bagian dari
www-data
grup):Untuk kenyamanan Anda dapat membuat skrip
public_html_fix.sh
dengan nama konten:Simpan di dalam
/home/$USER/bin
dan jalankan dengan:Kemudian Anda menyebutnya kapan pun Anda butuhkan, dari mana saja pada sistem file Anda menemukan diri Anda seperti ini:
sumber
www-data
grup membaca file Anda, atau menulis untuk hal itu?chmod -R 775 /home/$USER/public_html
sangat mengerikan.find /home/$USER/public_html -type d -exec chmod 775 {} \;
danfind /home/$USER/public_html -type f -exec chmod 664 {} \;
jauh lebih baikTerlepas dari chmoding file dan mengedit file .conf apache, saya ingin mengatakan bahwa tidak ada yang berhasil bagi saya karena file saya ada di partisi yang telah saya instal secara otomatis melalui nautilus. Ini membatasi partisi hanya untuk pengguna Anda.
Untuk memeriksa apakah file Anda terlihat oleh
www-root
atau apache pengguna yang dijalankan (jalankanps -aux | grep apache2
untuk memeriksa), jalankan perintah berikut:dan mencoba membaca file dari root dokumen Anda.
Jika file tidak dapat dibaca periksa bahwa:
1) Anda telah mengatur semua izin file lainnya
2) Anda telah menggunakan file
FollowSymlinks
Anda.conf
jika diperlukan3) Anda telah mengatur DocumentRoot
3) pasang partisi Anda untuk semua pengguna. Saya harus mengedit
/etc/fstab
dan menentukan partisi saya melalui UUID-nya:Kemudian unmount partisi Anda melalui nautilus dan lakukan a
sudo mount -a
. Jika semua berjalan dengan baik file Anda sekarang di bawah/mnt
. Perbarui symlink Anda dan Anda siap melakukannya.sumber
Cara terbaik yang saya temukan untuk selalu mengatur ini adalah cara VirtualMin melakukannya.
buat pengguna dan grup "myhome"
Jadikan pengguna apache sebagai anggota grup "myhome". Bukan sebaliknya seperti beberapa penjelasan di sini menjelaskan
Jadi sekarang apache telah membaca dan menjalankan akses ke / home / myhome selain / home / myhome / www
"Myhome" pengguna memiliki akses tulis
sumber
www-data
milik grupmyhome
. Semua file dan direktori memiliki izin menulis grup dan menjadi miliknyamyhome:myhome
. Saya memulai kembali apache. Apache masih tidak dapat menulis file dan folder baru. (Script PHP menggunakan www-data: www-data pengguna / grup)