403 Forbidden Error pada Mac OS X Localhost

22

Saya mengatur Berbagi Web dalam Preferensi Sistem pada Mac OS X 10.6 dan mengklik tautan yang diberikannya di sana. Sayangnya, Apache memberi saya kesalahan 403 ini:

Terlarang

Anda tidak memiliki izin untuk mengakses / ~ nama pengguna/index.html di server ini.

Menampilkan log akses: 10.0.1.2 - - [30/Jun/2010:16:25:15 -0700] "GET /~myusername/ HTTP/1.1" 403 210

Log kesalahan ditampilkan: [Wed Jun 30 16:26:09 2010] [error] [client 10.0.1.2] client denied by server configuration: /Users/myusername/Sites/

Anehnya, mengakses http: // localhost berfungsi dengan baik. Hanya dengan dua folder pengguna yang bermasalah, folder pengguna lain, yang lebih baru dari peningkatan sistem saya, berfungsi dengan baik.

Saya pernah menggunakan mesin ini di Leopard sebelumnya, jadi saya chodod semuanya ~/Siteske 755, yang tidak ada gunanya. Ada saran? Saya kira saya telah melakukan sesuatu pada mesin saya yang menyebabkan ini, karena saya tidak bisa membayangkan Apple mengacaukan sesuatu seperti ini.

Saya memang membuat PEAR dengan instruksi ini , tetapi saya tidak tahu apakah itu bisa menjadi penyebabnya.

waiwai933
sumber
Maaf jika ini pertanyaan bodoh, tapi sebenarnya URL apa yang Anda tuju? Saya bertanya karena URL "/~myusername/index.html" adalah yang aneh - itu harus berupa "~ myusername / index.html", atau itu harus " localhost / ~ myusername / index.html ", atau sesuatu serupa. Cukup mulai dari / dan kemudian menambahkan ~ nama pengguna saya berbau lucu. Selain (atau bukannya) menjawab itu, Anda dapat masuk ke Console.app (/Applications/Utilities/Console.app) dan temukan apache2 access_log dan error_log. Tarik itu ke atas, mungkin kosongkan tampilan, lalu coba kembali URL Anda untuk melihat apa yang dikatakan oleh log kesalahan.
Michael H.
@khedron: URL adalah localhost / ~ myusername / index.html , tetapi kesalahannya menampilkan bagian /~myusername/index.html
waiwai933
OKE, hanya memeriksa. Apa yang dikatakan log apache di konsol (console.app)?
Michael H.
@khedron: Saya memposting akses dan kesalahan masuk dalam pertanyaan. Apakah ada yang lain?
waiwai933
1
Saya memiliki masalah yang sama dengan Anda, dan saya hanya melakukan: chmod 777 / Aplikasi / XAMPP / htdocs / myusername, itu bekerja untuk saya
Wassim Sboui

Jawaban:

22

Apple memiliki dokumen pendukung untuk masalah ini . Memperbaiki masalah ini melibatkan menciptakan sebuah file /etc/apache2/users/yourusername.conf( yourusername menjadi akun nama pendek , misalnya danielbeck- itu biasanya nama folder rumah Anda di /Users) dengan isi sebagai berikut:

<Directory "/Users/yourusername/Sites/">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

Setelah itu, jalankan sudo chown root:wheel /etc/apache2/users/yourusername.confdan mulai ulang Apache.

Daniel Beck
sumber
dan juga restart apache Anda, jalankan saja sudo apachectl restartdi terminal Anda.
nil
15

Agar Apache dapat melihat file, pengguna yang dijalankan oleh Apache (mungkin wwwatau _www) harus memiliki akses ke direktori Situs pengguna ini. Setelah membaca / mengeksekusi akses ke konten ~/Sitestidak cukup, karena itu harus diizinkan untuk melintasi dari /jalan setapak ke ~/Sites. Jadi pastikan /, /Users, /Users/myusername, dan /Users/myusername/Sitessemua memiliki setidaknya a+xizin (bit eksekusi pada direktori memungkinkan kelas pengguna untuk melintasi direktori, bahkan jika Baca akses tidak diperbolehkan).

ls -lde / /Users/ /Users/myusername/ /Users/myusername/Sites

Jika salah satu dari direktori tersebut tidak menunjukkan xset terakhir (yang untuk "yang lain"), maka gunakan sesuatu seperti chmod a+x ...untuk mengaturnya untuk direktori itu.

Jika ACL untuk salah satu dari direktori tersebut menunjukkan bahwa pengguna wwwtelah secara khusus ditolak aksesnya, maka gunakan argumen yang sesuai chmoduntuk memperbaiki ACL.

Spiff
sumber
Bit eksekusi diatur untuk semua direktori tersebut, tetapi saya tidak tahu cara memeriksa apakah pengguna tertentu telah ditolak aksesnya.
waiwai933
Itulah gunanya "e" dalam "ls -lde". Ini mencantumkan ACL (jika ada) untuk masing-masing file.
Spiff
2
Mengubah izin pada / Pengguna / nama pengguna saya ke chmod 755 memperbaiki masalah bagi saya.
Tandai
Bukankah perintah ini memberikan izin pengguna _www untuk mengakses direktori root Anda, serta direktori / Users, dll? Itu tidak mungkin benar, kan? Semua celah keamanan itu untuk berbagi halaman dalam satu folder? Apakah perilaku ini didokumentasikan di suatu tempat?
Tom Lianza
Membalas komentar saya sendiri, saya menemukan jawaban ini ( serverfault.com/a/293063/14970 ) yang tidak memberikan tautan ke dokumentasi yang dapat diandalkan tentang perilaku ini: wiki.apache.org/httpd/13PermissionDenied
Tom Lianza
5

Sebagai referensi, saya hanya berurusan dengan ini, dan tidak ada jawaban di sini yang bekerja dalam kasus spesifik saya. Saya mengkonfigurasi host virtual, tetapi yang lebih penting, saya membutuhkan file htaccess saya untuk benar-benar berfungsi.

Saya mengubah "AllowOverride None" menjadi "AllowOverride All" di file /etc/apache2/users/USERNAME.conf saya, dan semua situs saya mulai dilarang.

Saya mengubahnya kembali dan kemudian mengubahnya hanya untuk satu situs di file httpd-vhosts.conf saya, dan hanya situs itu yang terlarang.

Setelah melihat log dan melihat masalahnya dengan penulisan ulang url dan kurangnya FollowSymLinks, saya kembali ke file USERNAME.conf. Saya beralih "AllowOverride None" ke "AllowOverride All" dan menambahkan "Opsi + FollowSymLinks" pada baris berikutnya.

Segalanya mulai bekerja. Saya berasal dari menggunakan xampp di windows dan memiliki banyak pengaturan ini sudah diatur di seluruh server untuk boneka seperti saya.

Jake
sumber
1
terima kasih banyak, menghabiskan beberapa waktu untuk mencari tahu apa yang terjadi, tidak perlu
bermain-main
1
Yap, Options +FollowSymLinksbekerja seperti mantra.
agarie
2

Saya memiliki masalah yang sama: Akun saya (lama) tidak dapat diakses, tetapi akun pengguna lain yang dibuat setelah memutakhirkan ke Lion bekerja dengan baik.

Setelah memastikan /etc/apache2/users/USERNAME.conf Anda terlihat seperti ini:

<Directory "/Users/USERNAME/Sites/">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

lakukan root chown sudo: wheel /etc/apache2/users/USERNAME.conf

tampaknya pengaturan izin ini tidak diatur selama peningkatan OS, dan pengguna Apache tidak dapat membaca file konfigurasi, dan melempar kesalahan.

Setidaknya ini menyelesaikannya untuk saya.

Arve Nygård
sumber
1
Dan mungkin lari sudo apachectl restartsetelah itu.
Arjan
Ini berfungsi untuk saya yang menjalankan 10.7.5. Path direktori tidak menunjuk ke root web lokal saya, setelah saya perbarui dan restart apache semuanya bekerja. Yang aneh adalah bahwa jalannya tidak benar selama lebih dari setahun dan bekerja sepanjang waktu. Saya baru saja mendapatkan kesalahan hari ini.
supajb
2

pembaruan untuk Lion di 10/2011 saya juga harus menambahkan

UserDir diaktifkan sehingga /etc/apache2/extra/httpd-userdir.conf saya seperti ini:

UserDir enabled 
UserDir Sites

#
# Users might not be in /Users/*/Sites, so use user-specific config files.
#
Include /private/etc/apache2/users/*.conf

<IfModule bonjour_module>
   RegisterUserSite customized-users
</IfModule>
nunya
sumber
1

Melanjutkan percakapan dari komentar pertanyaan awal - Lihat /etc/apache2/httpd.conffile Anda . Di mesin saya, saya punya ini:

# User home directories
Include /private/etc/apache2/extra/httpd-userdir.conf

Saya curiga milik Anda dikomentari. Samar-samar saya ingat mengubah ini dengan tangan ketika pindah dari 10.5 ke 10.6 dan default berubah.

Ini mungkin jelas, tetapi Anda harus menggunakan sudountuk mengedit file karena itu akan dimiliki oleh root.

Michael H.
sumber
1
Tidak, milikku persis seperti milikmu.
waiwai933
1

Kasus saya adalah XAMPP + Mac OS X 10.7 + Direktori di Folder Dropbox (referensi silang pertanyaan saya yang lain di Stack Overflow)

403 Akses Terlarang dilaporkan oleh Apache, oleh karena itu, saya mengikuti komentar di atas untuk mengubah Pengguna di /XAMPP/xamppfiles/etc/httpd.conf, dari User nobodymenjadi User my_user_name. Mulai ulang Apache & berfungsi dengan baik.

Raptor
sumber
0

Anda mungkin tidak mengaktifkan Indeks . Jika tidak, Anda harus membuat file indeks ( index.htmlatau index.php) atau menentukan file secara eksplisit, yaitu http://localhost/~me/mypage.html.

Josh K.
sumber
Maaf, hanya untuk mengecek, saya harus mengunjungi localhost / ~ myusername / index.html dan memiliki file bernama index.html di folder Situs saya, kan? Jika demikian, maka 403 masih terjadi.
waiwai933
Anda seharusnya tidak mengunjungi ~myusernamesama sekali saya percaya. http://localhost/harus menunjuk ke /Users/youruser/Sites/.
Josh K