Tôi đang làm việc thông qua Cách phục vụ các ứng dụng Django với uWSGI và Nginx trên Ubuntu 16.04 . Ở phần cuối của "Tạo tệp đơn vị systemd cho uWSGI" trong bài viết họ thảo luận về www-data
người dùng. Đây là gì và tại sao nó quan trọng?
Tôi đang làm việc thông qua Cách phục vụ các ứng dụng Django với uWSGI và Nginx trên Ubuntu 16.04 . Ở phần cuối của "Tạo tệp đơn vị systemd cho uWSGI" trong bài viết họ thảo luận về www-data
người dùng. Đây là gì và tại sao nó quan trọng?
Câu trả lời:
Để bảo mật.
Các tập tin không thể ghi được trên thế giới. Chúng được giới hạn cho chủ sở hữu của các tập tin để viết.
Máy chủ web phải được chạy dưới một người dùng cụ thể. Người dùng đó phải tồn tại.
Nếu nó được chạy dưới quyền root, thì tất cả các tệp sẽ phải được truy cập bằng root và người dùng sẽ cần phải root để truy cập các tệp. Với root là chủ sở hữu, một máy chủ web bị xâm nhập sẽ có quyền truy cập vào toàn bộ hệ thống của bạn. Bằng cách chỉ định một ID cụ thể, một máy chủ web bị xâm nhập sẽ chỉ có quyền truy cập đầy đủ vào các tệp của nó chứ không phải toàn bộ máy chủ.
Nếu bạn quyết định chạy nó dưới một ID người dùng khác, thì người dùng đó sẽ cần phải là chủ sở hữu hiệu quả của các tệp để có các đặc quyền phù hợp. Có thể khó hiểu khi có quyền sở hữu cá nhân đối với các tệp trên toàn hệ thống vào tài khoản cá nhân của bạn.
Tạo một người dùng cụ thể sẽ giúp nhận dạng các tệp dễ dàng hơn và nhất quán để nhận ra ID nào chown
cho các tệp và thư mục mới được thêm vào trang web.
Các Userid hoặc Tên của chủ sở hữu không quan trọng. Bất cứ điều gì được chọn hoặc quyết định sẽ phải được cấu hình trong các tệp cấu hình máy chủ web.
Theo mặc định, cấu hình của chủ sở hữu nằm www-data
trong cấu hình Ubuntu của Apache2. Vì đó là cấu hình mặc định, bạn thuận tiện biết quyền sở hữu cần thiết cho các tệp web của mình. Nếu bạn thay đổi nó, bạn sẽ phải thay đổi các tệp trong trang web của mình để phù hợp.
Tôi không chạy Nginx , nhưng vì nó nằm trong kho Ubuntu, tôi chắc chắn rằng nó đã được kiểm tra với www-data
cấu hình như mặc định.
www-data
. Đó là lý do tại sao như trong câu hỏi của bạn, họ yêu cầu bạn tạo userID và groupID nếu nó không tồn tại. Cài đặt Apache2 tự động tạo người dùng. Tôi không chắc chắn về Nqinx . Bạn có thể kiểm tra xem nó có tồn tại với : iid -u www-data&&id -g www-data
. Nếu nó tồn tại, nó sẽ hiển thị cho bạn số id của người dùng và nhóm. Theo mặc định trên Ubuntu, số người dùng và nhóm là 33
.
www-data
làm chủ sở hữu cũng có thể là một rủi ro bảo mật như được đề cập trong base-passwd
tài liệu (xem câu trả lời của @ muru), vì chủ sở hữu thường có quyền truy cập đọc / ghi vào tất cả nội dung phục vụ web. Bạn có thể xóa quyền truy cập ghi vào www-data
chủ sở hữu hoặc sử dụng chủ sở hữu khác. www-data
chắc chắn cần truy cập đọc vào tất cả dữ liệu sẽ được phục vụ, nhưng nếu bạn chỉ cung cấp các quyền cần thiết cho từng tệp và thư mục, và không nhiều hơn, bạn sẽ an toàn hơn.
www-data
là người dùng mà các máy chủ web trên Ubuntu (ví dụ: Apache, nginx) sử dụng theo mặc định cho hoạt động bình thường. Quá trình máy chủ web có thể truy cập bất kỳ tập tin www-data
có thể truy cập. Nó không có tầm quan trọng khác.
Từ base-passwd
tài liệu ( /usr/share/doc/base-passwd/users-and-groups.txt.gz
):
Một số máy chủ web chạy dưới dạng dữ liệu www. Nội dung web không nên thuộc sở hữu của người dùng này hoặc máy chủ web bị xâm nhập sẽ có thể viết lại một trang web. Dữ liệu được viết bởi các máy chủ web sẽ được sở hữu bởi dữ liệu www.
base-passwd
tài liệu cho việc đó
www-data
là người dùng (và cũng là nhóm) mà dịch vụ httpd (apache) đang hoạt động trên hệ thống của bạn.