Chủ sở hữu / nhóm / quyền chính xác cho các tệp / thư mục trang web Apache 2 trong Mac OS X?


114

Thật khó để tìm câu trả lời dành riêng cho Mac cho câu hỏi này trên web, vì vậy tôi hy vọng ai đó ngoài kia có thể giải đáp thắc mắc này cho tôi? Các quyền của tôi bị ảnh hưởng trên các trang web của tôi và tôi không chắc làm thế nào để khắc phục chúng mà không chỉ đóng một chiếc 777 đệ quy lên mọi thứ rõ ràng là không chính xác.

Cảm ơn!

Câu trả lời:


186

Đây là cách hạn chế nhất và an toàn nhất mà tôi đã tìm thấy, như được giải thích ở đây cho ~/my/web/root/thư mục giả định cho nội dung web của bạn:

  • Đối với mỗi thư mục cha dẫn đến thư mục gốc web của bạn (ví dụ ~/my, ~/my/web, ~/my/web/root):
    • chmod go-rwx DIR (không ai khác ngoài chủ sở hữu có thể truy cập nội dung)
    • chmod go+x DIR (để cho phép "người dùng" bao gồm _www "nhập" dir)
  • sudo chgrp -R _www ~/my/web/root (tất cả nội dung web hiện là nhóm _www)
  • chmod -R go-rwx ~/my/web/root (không ai khác ngoài chủ sở hữu có thể truy cập nội dung web)
  • chmod -R g+rx ~/my/web/root (tất cả nội dung web hiện có thể đọc / thực thi / có thể truy cập bởi _www)

Tất cả các giải pháp khác để lại các tệp mở cho người dùng cục bộ khác (những người là một phần của nhóm "nhân viên" cũng như rõ ràng là thuộc nhóm "o" / những người khác). Sau đó, những người dùng này có thể tự do duyệt và truy cập các cấu hình DB, mã nguồn hoặc các chi tiết nhạy cảm khác trong các tệp và tập lệnh cấu hình web của bạn nếu đó là một phần nội dung của bạn. Nếu đây không phải là vấn đề đối với bạn, thì hãy sử dụng một trong những giải pháp đơn giản hơn.


3
Tôi đã phải cấp quyền truy cập đọc ngoài cờ x với chmod go+rx DIRở cấp thư mục / Users / tên người dùng trước khi ls ngừng ném lỗi quyền. Tự hỏi tại sao?
bhavinb

1
@mike, Tất cả các tệp và thư mục sẽ vẫn thuộc sở hữu của bạn (người dùng) và vẫn có thể ghi được. Các chgrp chỉ cho phép "_www" nhóm để đọc các tập tin.
dkamins

2
Đối với các hệ thống mong đợi các tập lệnh trang web tạo các thư mục riêng và ghi các tệp của riêng chúng trong webroot (giống như nhiều CMS làm), tôi đã phải cấp quyền ghi cho nhóm _www. Vì vậy, bước cuối cùng trở thành chmod -R g+rwx ~/my/web/root. Bất kỳ phản đối nào hoặc cách tốt hơn để làm điều này @dkamins?
Jpsy

1
@Jpsy Điều đó sẽ hoạt động tốt nếu ứng dụng của bạn cần ghi vào chính nó. Nó gây ra các vấn đề bảo mật tiềm ẩn khác nếu mã khác cũng đang chạy dưới dạng _www (và có thể làm thay đổi mã CMS một cách độc hại), vì vậy hãy cẩn thận. Nếu bạn có thể hạn chế có thể ghi (g + w) vào một thư mục con sâu hơn, thì tốt hơn hết.
dkamins

1
Tính năng này đã được vài năm, thời gian trôi qua và OS X muốn thay đổi cách máy chủ Apache mặc định của nó hoạt động theo thời gian. Vì vậy, trong khi giải pháp này vẫn hoạt động, tại thời điểm này, tôi thực sự khuyên bạn nên sử dụng giải pháp thay thế là tạo máy ảo cục bộ để kiểm tra ứng dụng của bạn thay vì sử dụng chính OS X. Xem: vagrantup.com
dkamins

30

Nếu bạn thực sự không thích Terminal thì đây là cách GUI để thực hiện dkamins cho bạn biết:

1) Đi tới thư mục chính người dùng của bạn ( ludo sẽ là của tôi) và từ menu Tệp, chọn Nhận thông tin cmdI trong trình kiểm tra:

Nhận phần Chia sẻ & Quyền trong cửa sổ Thông tin

2) Bằng alt/optioncách nhấp vào dấu [+], hãy thêm nhóm _www và đặt quyền ở chế độ chỉ đọc :

Nhận thông tin thêm Người dùng & Nhóm được đánh dấu và Máy chủ World Wide Web được đánh dấu

  • Vì vậy, hãy cân nhắc (thực hành tốt) không lưu trữ thông tin cá nhân tại thư mục gốc của thư mục chủ người dùng (& đĩa cứng) của bạn!
  • Bạn có thể bỏ qua bước này nếu nhóm ** mọi người ** có quyền ** chỉ đọc ** nhưng vì AirDrop nên thư mục ** / Public / Drop Box ** hầu như vô dụng ...

3) Hiển thị trình kiểm tra Nhận thông tin của thư mục Trang web người dùng của bạn và tái tạo bước 2, sau đó từ menu phụ hành động bánh răng, chọn Áp dụng cho các mục kèm theo ... :

Menu phụ hành động Nhận thông tin Áp dụng cho các Mục đính kèm ... được đánh dấu

Bỏ qua 3 bước và cách duy nhất GUI ...


2
Không giúp được tôi ở đây, nhưng tôi rất vui khi biết về ALT + [+]thủ thuật này. Cảm ơn.
Tom,

1
Đây là cách tốt nhất cho đến nay, alt + nhấp chuột chương trình người sử dụng đúng cách _www
CoolArts

Điều này đúng nếu bạn đã kích hoạt tính năng chia sẻ tệp khách hoặc cài đặt tập lệnh php độc hại… Đảm bảo rằng chỉ có thư mục Công khai và Trang web là mọi người "có thể đọc được". Bước 3 chỉ áp dụng cho thư mục "Trang web"… Vì vậy, thông thường các thư mục khác sẽ không bị thay đổi…
llange

Điều này không cần thiết. _www là trong nhóm mọi người.
DarkNeuron

Thật tốt khi biết về alt [+] này !! Thx
Remi Grumeau

12

Tôi biết đây là một bài đăng cũ, nhưng đối với bất kỳ ai nâng cấp lên Mountain Lion (10.8) và gặp sự cố tương tự, việc thêm FollowSymLinksvào tệp .conf {username} của bạn (trong / etc / apache2 / users /) đã thực hiện một mẹo nhỏ cho tôi. Vì vậy, tệp trông như thế này:

<Directory "/Users/username/Sites/">
  Options Indexes MultiViews FollowSymLinks
  AllowOverride All
  Order allow,deny
  Allow from all
</Directory>

Tôi đã tạo một người dùng "git" mà tôi không sử dụng và đó là tất cả những gì có sẵn trong thư mục đó để chỉnh sửa (git.conf). Sau khi tôi cập nhật tệp như được mô tả ở trên cho git người dùng - thư mục tôi thiết lập đã được apache phân phát chính xác. Điều này không có ý nghĩa với tôi vì git người dùng của tôi không liên quan gì đến các thư mục đã tạo hoặc apache.
ktamlyn

9

Chủ đề 2 tháng tuổi, nhưng muộn còn hơn không! Vào ngày 10.6, tôi đã đặt thư mục tài liệu máy chủ web của mình thành:

owner:root
group:_www
permission:755

_www là người dùng chạy apache trong Mac OS X. Sau đó, tôi đã thêm ACL để cấp toàn quyền cho nhóm Quản trị viên. Bằng cách đó, tôi vẫn có thể thực hiện bất kỳ thay đổi nào với người dùng quản trị của mình mà không cần phải xác thực với tư cách là người chủ. Ngoài ra, khi tôi muốn cho phép máy chủ web ghi vào một thư mục, tôi có thể chỉ cần chmod thành 775, để lại mọi người không phải root: _www chỉ với quyền đọc / thực thi (không bao gồm bất kỳ ACL nào mà tôi đã áp dụng)


Bạn không cần đặt chủ sở hữu thành 'root', nhưng nó vô hại. Bạn chắc chắn không cần o + rx perms bạn có - cho phép bất kỳ trình duyệt người dùng cục bộ và đọc tất cả các nội dung web của bạn (bao gồm cả khả năng configs với mật khẩu DB, vv)
dkamins

1
(xem câu trả lời của tôi cho câu hỏi này dưới đây là một phiên bản phức tạp hơn nhiều của câu trả lời này có thể rất thú vị đối với những hoang tưởng thêm về bảo mật)
dkamins

Trong thiết bị đầu cuối, làm thế nào để chúng ta thấy những gì ví dụ như wordpress được cài đặt với (liên quan đến quyền tệp của chính nó) vì tôi muốn wordpress có thể viết tải lên phương tiện của riêng nó ...
đã hạ cánh vào

5

Trên hệ thống 10.6 của tôi:

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

vhost.conf files:
 owner:root
 group:wheel
 permissions:644

1
Tuyệt vời, cảm ơn Steve và vì các tệp web? / Thư viện / WebServer / Tài liệu / Thư viện / WebServer / Tài liệu / [tệp] / Thư viện / WebServer / Tài liệu / [thư mục]
Fo.

0

Chủ sở hữu người dùng đối với tôi là người dùng quản trị và nhóm là _www và hoạt động với các quyền được đặt thành 775 cho dir và cho tệp 664


0

Cập nhật Catalina / Quyền trên máy tính để bàn

Tôi bắt gặp điều này mỗi năm một lần trên macOS. Tôi thường sử dụng apache2 để lưu trữ một thư mục trên máy tính để bàn của mình.

Nếu bạn đang cố gắng cấp quyền truy cập vào desktopthư mục, bạn cần làm theo điều này để cho phép httpd có quyền truy cập vào tất cả các thư mục: https://apple.stackexchange.com/a/373139/353465


-3

Mở thiết bị đầu cuối trước và sau đó đi tới thư mục của máy chủ web

cd /Library/WebServer/Documents

và sau đó nhập cái này và những gì bạn sẽ làm là bạn sẽ cấp readwritecho phép

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

Điều này chắc chắn sẽ hiệu quả!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.