2011-11-07 33 views
16

Tôi mới đến với thế giới mac và vừa thiết lập máy chủ web của mình. Tôi đã sử dụng hướng dẫn sau: http://echo.co/blog/os-x-107-lion-development-native-mamp-mysql-installerViết đặc quyền - localhost - Mac OSX

Tôi đã chuyển trang web và cơ sở dữ liệu của mình và mọi thứ diễn ra khá tốt. Vấn đề duy nhất tôi có là với quyền bằng văn bản. Ví dụ có một tập tin cấu hình cần phải được ghi vào, và tôi phải bấm chuột phải, vào Get Info, sau đó kích hoạt đọc & viết cho nhân viên và tất cả mọi người.

Tôi không thể thực hiện theo cách thủ công và bật các đặc quyền ghi này cho mọi tệp/thư mục. Tôi không cần phải làm điều này bằng cách sử dụng WAMP và thực hiện phát triển nhanh hơn nhiều.

Vì vậy, tự hỏi về 2 giải pháp khả thi: a) thêm tài khoản người dùng của tôi vào một danh sách trắng cho localhost để 644 đặc quyền là đủ b) thiết lập các đặc quyền ghi đệ quy

Trả lời

39

Tôi thấy giải pháp tốt nhất là thay đổi cài đặt nhóm và người dùng apache. Các hướng dẫn có thể được tìm thấy tại địa chỉ: http://paulmason.name/item/change-apache-user-group-in-lion-os-x

  1. Mở Terminal và Enter

    sudo nano /private/etc/apache2/httpd.conf 
    
  2. Tìm và thay đổi http.conf mã từ

    User _www 
    Group _www 
    

    Để

    User your_mac_username 
    Group staff 
    

    Lưu ý: W ith phiên bản trước đó như Leopard, viết hoa nhân viên cho Staff. Bạn có thể nhận được tên đăng nhập và nhóm của bạn bằng cách gõ "id" và nhấn nhập vào thiết bị đầu cuối

  3. Restart Apache

    sudo apachectl restart 
    
+0

Giải pháp dễ nhất! Cả người dùng và apache đều có quyền ghi/đọc mà không thay đổi quyền ;-) –

+0

tại sao lại quan trọng như vậy để đặt Nhóm làm nhân viên? Tôi làm việc trên linux và trên mac, trên linux nhóm là tên người dùng nhưng trên mac tôi đã phải ra nhân viên để làm cho nó hoạt động nếu không Apache sẽ không bắt đầu. –

+0

Nâng cấp lên macOS Sierra ghi đè các giá trị 'User' và' Group' của tôi trong httpd.conf thành '_www' và' _www'. Câu trả lời của bạn đã giúp tôi giải quyết vấn đề về quyền mà tôi đã gặp phải bằng cách đặt chủ sở hữu của thư mục được đề cập đến 'User' và' Group' của các giá trị mới này. – gmeben

2

Tôi khuyên bạn nên thiết lập Write đặc quyền đệ quy cho gốc web của bạn.

Bạn có thể thực hiện việc này thông qua bảng điều khiển/thiết bị đầu cuối sử dụng chmod -R 774 /my/web/root. Đối với tôi, chủ sở hữu và nhóm được đặt thành: www-data:myUserName, có thể được đặt bằng cách sử dụng chown. Đừng quên kiểm tra ai là người dùng web của bạn trước.

Edit: Để hiểu rõ hơn, tại sao bạn không có quyền truy cập:

Chmod 774, mỗi số tượng trưng cho quyền cụ thể: người sử dụng, nhóm người khác. Nếu người dùng được đặt thành www-data và nhóm thành www-data (hầu hết người dùng trên hệ thống Unix nằm trong nhóm được đặt tên theo tên người dùng của họ). Vì vậy, nếu bạn không ở trong nhóm www-data bạn phải tham gia hoặc bạn phải thay đổi chủ sở hữu (chown) hoặc bạn phải thay đổi quyền (chmod). Có một số hướng dẫn trên mạng, để biết thêm thông tin.

+1

Tôi chỉ cố gắng 'chmod -R 774' cho một trong những trang web của tôi và nó làm cho toàn bộ trang web bị cấm cho đến khi tôi sử dụng' chmod -R 777' mà có vẻ không đúng. Bất kỳ ý tưởng? Ngoài ra tôi không biết cách kiểm tra người dùng web của mình là ai, bạn có thể giải thích không? –

+0

Bạn cũng phải kiểm tra chủ sở hữu của một tệp (người dùng ls -l cho việc này). Chủ yếu là các thư mục được đặt thành 'www-data: www-data'. Có nghĩa là, bạn không được đề cập và bạn không có quyền truy cập cho đến khi bạn sử dụng 'chmod 777'. 7 cuối cùng là viết tắt của "những người khác". Chỉ cần đặt chủ sở hữu như tôi đã đề cập trong câu trả lời của tôi. Tôi sẽ chỉnh sửa câu trả lời của mình để giải thích thêm một chút. – sascha

22

Tôi là tác giả của bài đăng trên blog được đề cập. Đối với quyền truy cập tệp máy chủ web, bạn sẽ muốn cấp quyền truy cập ghi cho người dùng _www cho tệp. Đối với config.inc.php, bạn sẽ thiết lập cho nó một vài cách sau:

Có _www sở hữu tệp và có quyền ghi:

$ sudo chown _www config.inc.php 
$ chmod u+w config.inc.php 

Có người dùng của bạn sở hữu tệp, thay đổi nhóm để _www, và cung cấp cho nhóm quyền ghi:

$ sudo chgrp _www config.inc.php 
$ chmod g+w config.inc.php 

Hoặc, nếu bạn cảm thấy thoải mái cho phép tất cả người dùng để viết, mà tôi sẽ không khuyên bạn nên vì lý do an ninh, cung cấp cho tất cả người dùng khả năng để viết:

$ chmod a+w config.inc.php 

Nếu toàn bộ thư mục cần phải được viết bởi người sử dụng _www, nó có thể sở hữu các thư mục và tất cả các file:

$ sudo chown -R _www:_www folder/ 

hoặc bạn có thể cung cấp cho các thư mục ghi và thực hiện quyền bởi tất cả:

$ chmod a+wx folder/ 

Lý do tại sao chmod 774 đã cho bạn các lỗi bị cấm là do người dùng _www thuộc quyền '4', đó là 'chỉ đọc'. Đối với các thư mục, người dùng cần 'thực thi' để duyệt qua thư mục. chmod 775 sẽ cho phép người dùng và nhóm để rwx, và những người khác để r-x.Here's more information on Unix file permissions.

Ngoài ra, người dùng của bạn có thể giữ quyền sở hữu đầy đủ và thêm một số quyền nhất định cho người dùng _www thay vì thay đổi cấp truy cập cho TẤT CẢ người dùng bằng cách sử dụng Danh sách điều khiển truy cập.

$ sudo chmod -R +a '_www allow read,write,delete,add_file,add_subdirectory,file_inherit,directory_inherit' folder 
$ sudo chmod +a '_www allow read,write' config.inc.php 

Nếu bạn định đi tuyến đường ACL, tôi khuyên bạn nên đọc thêm để xem mức độ truy cập bạn thực sự cần cung cấp. Here is a great place to start.

+0

Cảm ơn tất cả sự giúp đỡ cho đến nay. Chỉ cần tự hỏi tại sao tôi sẽ thay đổi chủ sở hữu của config.inc.php và tôi có thể tìm thấy nó ở đâu? –

+0

@alanthing Có thể không nguy hiểm khi cấp quyền cho apache để ghi (bất kỳ?) Tệp trên máy của bạn? – gen

9

Tôi đang chạy Apache trên OSX và điều này cố định nó cho tôi:

sudo chown -R _www:_www <mywebfolder> 
sudo chmod -R 775 <mywebfolder> 

Update # 1:

Cú pháp: sudo chown <user>:<group> <file-or-folder>. Người dùng Apache trên OSX là _www.

Để giữ quyền sở hữu nhưng cho Apache quyền r-w-x:

sudo chown -R <your-username>:_www <mywebfolder> 
sudo chmod -R 775 <mywebfolder> 

Cập nhật # 2:

Tôi thích phương pháp này tốt nhất. Đặt Apache để chạy như bạn.

  1. Trong loại thiết bị đầu cuối id để nhận uid=123(Myname).

  2. Mở /etc/apache2/httpd.conf và chỉnh sửa để sử dụng tên người dùng của bạn.

    <IfModule unixd_module> 
        User Myname 
        Group staff 
    </IfModule> 
    
  3. Về thiết bị đầu cuối: sudo apachectl restart

Các vấn đề liên quan