Apache: Tidakkah chmod 755 cukup untuk mengatur symlink atau alias di Apache httpd pada Mac OS 10.5?

15

Pada mesin Mac OS 10.5 saya, saya ingin mengatur subfolder dari ~/Documents seperti ~/Documents/foo/htmlmenjadi http: // localhost / foo .

Hal pertama yang saya pikirkan adalah menggunakan Alias ​​sebagai berikut:

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options Indexes FollowSymLinks MultiViews

    Order allow,deny
    Allow from all
</Directory>

Ini membuat saya Terlarang. Di error_log saya mendapat:

[error] [client ::1] (13)Permission denied: access to /foo denied

Subfolder yang dimaksud memiliki akses chmod 755. Saya sudah mencoba menentukan suka suka http: //localhost/foo/test.php , tapi itu tidak berhasil. Selanjutnya, saya mencoba rute symlink.

Pergi ke /Library/WebServer/Documentsdan membuat symlink ke ~/Documents/foo/html. Root dokumen memiliki

Options Indexes FollowSymLinks MultiViews

Ini masih membuat saya 403 Forbidden:

Symbolic link not allowed or link target not accessible: /Library/WebServer/Documents/foo

Apa lagi yang saya perlukan untuk mengatur ini?

Solusi :

$ chmod 755 ~/Documents

Secara umum, folder yang akan dibagikan dan semua folder leluhurnya harus dapat dilihat oleh wwwpengguna layanan.

Eugene Yokota
sumber
Terima kasih banyak telah memposting solusi ini - ini benar-benar membantu saya setelah menghabiskan waktu lama mencari jawabannya
Tomba
@Tomba Tidak masalah.
Eugene Yokota

Jawaban:

24

Saya berani bertaruh bahwa beberapa direktori di atas yang ingin Anda akses tidak memiliki izin untuk membolehkan Apache melewatinya. Menjadi pengguna yang dijalankan Apache sebagai ( sudo -i -u apacheatau apa pun), kemudian coba ubah ke direktori yang menarik dan lsitu. Jika Anda tidak dapat (seperti yang diharapkan), maka cobalah masuk ke direktori di atasnya, satu per satu, sampai satu memungkinkan Anda masuk. Subtitle dari itu adalah yang harus o+xditetapkan. Busurkan, bilas, ulangi sesuai kebutuhan.

womble
sumber
1
Ya, jika 'Situs' berfungsi, Anda mungkin memiliki masalah yang tepat pada Dokumen, jika 'Situs' tidak berfungsi, Anda mungkin memiliki masalah yang tepat pada direktori pengguna Anda (ini dapat ditambahkan dengan filevault)
radius
1
~ / Dokumen adalah 700.
Eugene Yokota
Jika saya menjalankan sudo -i -u _wwwpada OS X (karena pengguna Apache adalah _www oleh dalam konfigurasi apache default pada OS X), maka saya melakukannya whoami, saya masih mendapatkan nama pengguna saya, bukan _www
Jason S
Untuk sepenuhnya berubah ke pengguna lain dengan sudo, saya menggunakan '-' dengan sendirinya: sudo - www-data(untuk Ubuntu).
Alexis Wilke
2

Menggunakan +FollowSymlinks

Alias /foo /Users/someone/Documents/foo/html

<Directory "/Users/someone/Documents/foo/html">
    Options +Indexes +FollowSymLinks +MultiViews

    Order allow,deny
    Allow from all
</Directory>
Dave Cheney
sumber
Menurut httpd.apache.org/docs/2.0/en/mod/core.html#options , "jika semua opsi pada direktif Opsi didahului dengan simbol + atau -, opsinya digabung." Bagaimana itu akan membantu ~ / Dokumen menjadi 700?
Eugene Yokota
AFAIK FollowSymLinks tidak mengaktifkan opsi, hanya memungkinkannya diaktifkan di tingkat hierarki direktori yang lebih rendah.
Dave Cheney
1
Ini jawaban yang tepat untukku. Saya memodifikasi file conf di / etc / apache2 / users, dan mengizinkan FollowSymLinks (tanpa tanda +). Ingatlah untuk memulai kembali.
superluminary
1

Periksa untuk memastikan bahwa file vault tidak diaktifkan. Saya memiliki masalah yang sama. Saya mencoba segala hal lain yang dapat saya temukan. Tidak ada yang berhasil. Tetapi setelah satu jam mencoba mencari tahu ini, saya ingat bahwa saya telah mengaktifkan file vault.

Menonaktifkan itu menyelesaikan masalah.

Bob
sumber
1

Periksa kepemilikan symlink. Karena Anda menggunakan Mac OS X, maka pemilik symlink dapat diubah. Dalam /Library/WebServer/Documentsdols -l

Jika symlink Anda ~/Documents/foo/htmldipanggil foodan memiliki izin seperti

lrwxr-xr--  1 root  wheel 27  2 Nov 17:00 foo -> /Users/username/Documents/foo/html

Kemudian secara default pada OS X Apache berjalan sebagai pengguna _www dan grup _www, jadi dalam kasus yang disebutkan di atas, Apache tidak akan dapat melintasi symlink ke ~/Documents/foo/html

Jalankan man 8 chowndi terminal sistem Anda, atau lihat itu man chown online

Anda akan melihat bahwa menggunakan -hopsi akan mengubah kepemilikan symlink itu sendiri, dan bukan file yang ditunjuknya (sumbernya). Maka Anda dapat melakukan sesuatu seperti

sudo chown -h :_www foo 

Ini akan mengubah simlink menjadi

lrwxr-xr--  1 root  _www 27  2 Nov 17:02 foo -> /Users/username/Documents/foo/html

dan grup Apache _www akan dapat melintasi tautan.

Jason S
sumber
0

Periksa direktori / Pengguna Anda (ls-l / Users) untuk melihat hak-hak pengguna Anda (seseorang).
Apakah direktori 'Situs' tersedia dengan benar di localhost / ~ seseorang?

radius
sumber
localhost / ~ seseorang bekerja.
Eugene Yokota