Pemilik / grup / izin yang benar untuk file / folder situs Apache 2 di bawah Mac OS X?

114

Sulit untuk menemukan jawaban khusus Mac untuk pertanyaan ini di web, jadi saya berharap seseorang di luar sana dapat menyelesaikan pertanyaan ini untuk saya? Izin saya kacau di situs saya dan saya tidak yakin bagaimana cara memperbaikinya tanpa hanya membanting 777 rekursif pada segala sesuatu yang jelas-jelas salah.

Terima kasih!

Fo.
sumber

Jawaban:

186

Ini adalah cara paling ketat dan teraman yang saya temukan, seperti yang dijelaskan di sini untuk ~/my/web/root/direktori hipotetis untuk konten web Anda:

  • Untuk setiap direktori induk yang mengarah ke akar web Anda (misalnya ~/my, ~/my/web, ~/my/web/root):
    • chmod go-rwx DIR (tidak ada selain pemilik yang dapat mengakses konten)
    • chmod go+x DIR (untuk mengizinkan "pengguna" termasuk _www untuk "memasukkan" direktori)
  • sudo chgrp -R _www ~/my/web/root (semua konten web sekarang menjadi grup _www)
  • chmod -R go-rwx ~/my/web/root (tidak ada selain pemilik yang dapat mengakses konten web)
  • chmod -R g+rx ~/my/web/root (semua konten web sekarang dapat dibaca / dieksekusi / dimasukkan oleh _www)

Semua solusi lain membiarkan file terbuka untuk pengguna lokal lainnya (yang merupakan bagian dari grup "staf" dan juga berada di grup "o" / grup lain). Pengguna ini kemudian dapat dengan bebas menjelajahi dan mengakses konfigurasi DB, kode sumber, atau detail sensitif lainnya di file dan skrip konfigurasi web Anda jika itu adalah bagian dari konten Anda. Jika ini bukan masalah Anda, maka gunakan salah satu solusi yang lebih sederhana.

dkamins
sumber
3
Saya harus memberikan akses baca sebagai tambahan pada tanda x dengan chmod go+rx DIRpada tingkat direktori / Users / username sebelum ls berhenti memberikan kesalahan izin. Heran kenapa
bhavinb
1
@mike, Semua file dan direktori akan tetap menjadi milik Anda (pengguna) dan masih dapat ditulisi. Chgrp hanya memungkinkan "_www" kelompok untuk membaca file.
dkamins
2
Untuk sistem yang mengharapkan skrip situs web membuat folder mereka sendiri dan menulis file mereka sendiri di dalam webroot (seperti yang dilakukan banyak CMS) saya harus memberikan izin menulis ke grup _www. Jadi langkah terakhir menjadi chmod -R g+rwx ~/my/web/root. Ada keberatan atau cara yang lebih baik untuk melakukan @dkamins ini?
Jpsy
1
@Jpsy Itu seharusnya berfungsi dengan baik jika aplikasi Anda perlu menulis sendiri. Ini menimbulkan masalah keamanan potensial lainnya jika kode lain berjalan juga sebagai _www (dan mungkin mengubah kode CMS dengan jahat), jadi berhati-hatilah. Jika Anda dapat membatasi dapat ditulisi (g + w) ke subdirektori yang lebih dalam, itu lebih baik.
dkamins
1
Ini sudah beberapa tahun sekarang, waktu terus berjalan, dan OS X suka mengubah cara kerja server default Apache dari waktu ke waktu. Jadi, sementara solusi ini masih berfungsi, saya pada titik ini sangat merekomendasikan solusi alternatif untuk membuat VM lokal untuk menguji aplikasi Anda daripada menggunakan OS X itu sendiri. Lihat: vagrantup.com
dkamins
30

Jika Anda benar-benar tidak menyukai Terminal, inilah cara GUI untuk melakukannya dkamins memberi tahu Anda:

1) Buka direktori home pengguna Anda ( ludo akan menjadi milik saya) dan dari menu File pilih Get Info cmdI di inspektur:

Dapatkan bagian jendela Info Berbagi & Izin

2) Dengan alt/optionmengklik tanda [+] tambahkan grup _www dan setel izinnya menjadi read-only :

Dapatkan Info tambahkan Pengguna & Grup disorot dan World Wide Web Server disorot

  • Jadi pertimbangkan (praktik yang baik) untuk tidak menyimpan informasi pribadi di root folder home pengguna (& hard disk)!
  • Anda dapat melewati langkah ini jika grup ** semua orang ** memiliki izin ** hanya baca ** tetapi karena AirDrop folder ** / Public / Drop Box ** sebagian besar tidak berguna ...

3) Tampilkan inspektur Dapatkan Info dari folder Situs pengguna Anda dan ulangi langkah 2 lalu dari sub-menu tindakan roda gigi pilih Terapkan ke Item terlampir ... :

Sub-menu Tindakan Dapatkan Info Terapkan ke Item terlampir ... disorot

Voilà 3 langkah dan GUI satu-satunya cara ...

llange
sumber
2
Tidak membantu saya di sini, tapi senang mengetahui tentang ALT + [+]triknya. Terima kasih.
Tom
1
Sejauh ini, ini adalah cara terbaik, alt + klik menampilkan pengguna _www yang benar
CoolArts
Ini benar jika Anda mengaktifkan berbagi file tamu atau skrip php berbahaya yang diinstal… Pastikan hanya ada folder Publik dan Situs yang "dapat dibaca" oleh semua orang. Langkah 3 hanya berlaku untuk folder "Situs"… Jadi biasanya folder lain tidak boleh diubah…
llange
Ini seharusnya tidak diperlukan. _www ada di grup semua orang.
DarkNeuron
Senang mengetahui tentang alt [+] ini !! Thx
Remi Grumeau
12

Saya tahu ini adalah posting lama, tetapi bagi siapa saja yang mengupgrade ke Mountain Lion (10.8) dan mengalami masalah serupa, menambahkan FollowSymLinkske file {username} .conf Anda (di / etc / apache2 / users /) melakukan trik untuk saya. Jadi filenya terlihat seperti ini:

<Directory "/Users/username/Sites/">
  Options Indexes MultiViews FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>
mjswensen.dll
sumber
Saya membuat pengguna "git" yang tidak saya gunakan, dan hanya itu yang tersedia di direktori itu untuk diedit (git.conf). Setelah saya memperbarui file seperti yang dijelaskan di atas untuk pengguna git - direktori yang saya siapkan dilayani dengan benar oleh apache. Ini tidak masuk akal bagi saya karena pengguna saya git tidak ada hubungannya dengan direktori yang dibuat, atau apache.
ktamlyn
9

Utas berusia 2 bulan, tetapi lebih baik terlambat daripada tidak sama sekali! Pada 10.6, saya menyetel folder dokumen server web saya ke:

owner:root
group:_www
permission:755

_www adalah pengguna yang menjalankan apache di bawah Mac OS X. Saya kemudian menambahkan ACL untuk mengizinkan izin penuh ke grup Administrator. Dengan begitu, saya masih dapat membuat perubahan apa pun dengan pengguna admin saya tanpa harus mengautentikasi sebagai root. Juga, ketika saya ingin mengizinkan server web untuk menulis ke folder, saya cukup chmod ke 775, meninggalkan semua orang selain root: _www hanya dengan izin baca / eksekusi (tidak termasuk ACL yang telah saya terapkan)

Tim Mackey
sumber
Anda tidak perlu menyetel pemilik ke 'root', tetapi itu tidak berbahaya. Anda pasti tidak memerlukan perm o + rx yang Anda miliki - yang memungkinkan pengguna lokal menelusuri dan membaca semua konten web Anda (termasuk kemungkinan konfigurasi dengan kata sandi DB, dll.)
dkamins
1
(lihat jawaban saya untuk pertanyaan di bawah ini yang merupakan versi yang jauh lebih kompleks dari jawaban ini yang mungkin menarik bagi mereka yang lebih paranoid tentang keamanan)
dkamins
Di terminal bagaimana kita melihat apa, misalnya wordpress diinstal dengan (mengenai izin file sendiri) karena saya ingin wordpress dapat menulis unggahan medianya sendiri ...
mendarat
5

Di sistem 10.6 saya:

vhosts folder:
 owner:root
 group:wheel
 permissions:755

vhost.conf files:
 owner:root
 group:wheel
 permissions:644
Steve Graham
sumber
1
Bagus, terima kasih Steve, dan untuk file web itu sendiri? / Library / WebServer / Documents / Library / WebServer / Documents / [file] / Library / WebServer / Documents / [direktori]
Fo.
0

Pemilik pengguna untuk saya adalah pengguna admin dan grupnya adalah _www dan bekerja dengan izin yang ditetapkan ke 775 untuk dir dan untuk file 664

michalzuber
sumber
0

Pembaruan Catalina / Izin Desktop

Saya menemukan ini setahun sekali di macOS. Saya biasanya menggunakan apache2 untuk menghosting folder di desktop saya.

Jika Anda mencoba memberikan akses ke desktopfolder, Anda harus mengikuti ini untuk mengizinkan httpd memiliki akses ke semua folder: https://apple.stackexchange.com/a/373139/353465

Sean_Codes
sumber
-3

Buka terminal terlebih dahulu lalu masuk ke direktori web server

cd /Library/WebServer/Documents

lalu ketikkan ini dan yang akan Anda lakukan adalah memberi readdan writemengizinkan

sudo chmod -R o+w /Library/WebServer/Documents

Ini pasti akan berhasil!

Sidharth kaushik
sumber