Tôi nên sử dụng lược đồ quyền nào khi triển khai Magento một cách an toàn?


7

Chúng tôi chạy những gì tôi cảm thấy là thiết lập Magento khá chuẩn:

  • Được triển khai thông qua rsync (nó cũng có thể được triển khai với git pullscp/ SFTP cho các cấu hình máy chủ đơn giản hơn và giúp cuộc sống của các nhà phát triển dễ dàng hơn. Thật không may, git tiêu chuẩn chỉ cho phép thiết lập cờ có thể hiển thị và không có quyền Unix đầy đủ như khả năng ghi nhóm)
  • Chạy trên Apache
  • Chỉ chạy trên các máy hỗ trợ setgidbit dính

Và chúng tôi có những mục tiêu khá chuẩn:

  • Triển khai đến nhiều môi trường khác nhau đối với khách hàng (dev, prod, CI, v.v.) liên tục
  • Triển khai dễ dàng để dev hộp
  • Có tất cả hoạt động (không cần hỗ trợ Trình quản lý kết nối Magento hoặc cài đặt Magento ban đầu) Các tính năng Magento hoạt động đầy đủ và tương thích với tất cả các plugin chính

Trong các mục tiêu đó, làm cách nào tôi có thể thiết lập quyền truy cập tệp để triển khai (và thiết lập hộp dev và CI), hạn chế quyền (theo nguyên tắc đặc quyền tối thiểu ) càng nhiều càng tốt?

Một phác thảo về các nguồn tôi đã xem xét:

  • Trang wiki Magento khuyến nghị thiết lập 700/600 với tất cả các tệp do người dùng Apache sở hữu nhưng với các tệp cốt lõi (tất cả các tệp ngoại trừ /media/var) được đặt là 400.
  • Câu trả lời Magento StackExchange đề cập đến phương pháp 700/600 bằng cách kết luận đề xuất thiết lập 770/660 và 750/640 dựa trên nhóm.
  • Một trang wiki Magento khác đề xuất 775/664 ban đầu. Nó cũng bao gồm một số thảo luận về những quyền nào được yêu cầu, nhưng không đề xuất rõ ràng một cài đặt.

Câu trả lời:


3

Tôi đang làm việc trên một giải pháp cảm thấy đúng, nhưng điều này không có nghĩa là có thẩm quyền. Tôi muốn nhận phản hồi hoặc câu hỏi. Đây là:

Việc thiết lập liên quan đến hai người dùng:

  • Người deploydùng trong deploynhóm: người dùng ghi vào máy chủ trong quá trình triển khai thông qua rsync / SSH.
  • Người apachedùng trong apachenhóm: người dùng mà Apache chạy Magento.

Triết lý chung là để toàn bộ thư mục Magento được đăng ký deploy:apachevà có các thư mục yêu cầu quyền truy cập ghi hoạt động có thể ghi theo nhóm. Từng bước sẽ đưa bạn đến đó:

  1. Như root, tạo gốc HTTP của máy chủ ảo, giả sử /var/www/htmlvà gọi nó là deploy:apache, thiết lập bit dính setgid:

    mkdir /var/www/html
    chown deploy:apache /var/www/html
    chmod g+s /var/www/html
  2. Triển khai mã Magento thông qua rsync / SSH bằng cách sử dụng deployngười dùng. Tất cả các tập tin và thư mục nên được sở hữu deploy:apache.

  3. deployngười dùng, thiết lập /var/mediaghi vào nhóm.

    chmod g+w /var/www/html/var
    chmod g+w /var/www/html/media
  4. Xóa umask(0)trong mã Magento để sử dụng mặc định của HĐH 022hoặc được đặt rõ ràng thành umask(022).

  5. Các tập tin và thư mục tạm thời mới nên được sở hữu apache:apachevà được 755hoặc 644.
  6. Thiết lập của bạn là tốt và không nên yêu cầu các hành động bổ sung trong các triển khai trong tương lai.

Cách tiếp cận này phù hợp với bài viết wiki Magento khuyến nghị các quyền của nhóm và làm mờ nó đi một chút. Nó dường như cũng khá gần với ý chính của svenvarkel mà tôi tìm thấy . Tôi thấy những ưu điểm của nó so với cách tiếp cận để thiết lập các tệp thuộc sở hữu của người dùng Apache trong cách tiếp cận đó yêu cầu bạn sử dụng người dùng Apache để triển khai và tùy thuộc vào việc triển khai, nó đòi hỏi phải thay đổi liên tục các quyền ghi để triển khai hoặc để lại lõi có thể ghi bởi người dùng Apache.

Tôi muốn nhận được ý kiến ​​hoặc phê bình về phương pháp đề xuất của tôi.


Xin chào Steven điều này khá phù hợp với những gì tôi đã cố gắng mô tả trong câu trả lời được liên kết. Điều duy nhất tôi sẽ hỏi là tại sao bạn cần 755 hoặc 644 trong 5.) trừ khi bạn biết rằng bạn sẽ cần đọc thế giới.
Kristof tại Fooman

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.