Chuyển người dùng để thực thi các quy trình với API trên Nginx / Ubuntu


0

Tôi muốn tạo API bằng Nginx (trên máy chủ Ubuntu) có thể chạy các quy trình (thực thi lệnh) nhưng dữ liệu www không phải là người dùng có quyền truy cập vào dữ liệu mà các quy trình này sẽ hoạt động. Cách thông thường để làm điều này mà không ảnh hưởng đến an ninh. Nói cách khác, làm cách nào để API thực hiện các lệnh như một người dùng khác?

Câu trả lời:


1

Dữ liệu www chỉ là người dùng chạy quy trình NGINX theo mặc định, tôi cho rằng API của bạn đang chạy phía sau NGINX, sau đó API của bạn sẽ thực thi dưới dạng dữ liệu www. Để giải quyết vấn đề tôi cho là vấn đề về quyền mà bạn gặp phải khi kiểm tra, bạn cần thay đổi quyền của dữ liệu (nếu cục bộ) để cho phép người dùng và / hoặc nhóm dữ liệu www đọc / ghi hoặc tạo người dùng mới cho NGINX chạy.

Một vài gợi ý khi làm việc với NGINX:

  • Đừng cấp quyền truy cập root cho người dùng đang chạy máy chủ web của bạn, vì khi đó ứng dụng web của bạn sẽ có quyền truy cập root trên hệ thống của bạn, mở ra các lỗ hổng không cần thiết.

  • Đừng để dữ liệu của bạn ở chế độ công khai (quyền mở cho tất cả người dùng) mà hạn chế chúng cho chủ sở hữu và người dùng cụ thể sẽ truy cập vào họ, ngay cả khi bạn nghĩ rằng máy chủ của bạn được bảo mật.

Nếu đây không phải là những gì bạn đang tìm kiếm, xin vui lòng giải thích để có câu trả lời tốt hơn và chính xác hơn.

Chỉnh sửa: nhận ra rằng tôi không bao giờ đưa cho bạn các lệnh để chuyển người dùng:

Để sửa đổi quyền trên một tệp, bạn có thể sử dụng chmodchown , ví dụ để thay đổi quyền của tệp đối với người dùng dữ liệu www:

chmod 500 file1 file2 file3
chmod -R 500 directory1/

chown www-data:www-data file1 file2 file3
chown -R www:data:www-data directory1

Nên bắt đầu với bạn!

Trân trọng


Điều này tôi hiểu nhưng, trên cơ sở hàng ngày, dữ liệu mới theo người dùng không phải dữ liệu www được ghi vào vị trí cần xử lý, tôi sẽ xử lý như thế nào ...
Niels

1
Nếu dữ liệu được ghi bởi API của bạn, nó sẽ tự động nhận được các quyền cần thiết để đọc sau này, giả sử API được chạy phía sau NGINX, nếu là hệ thống bên ngoài nếu đề xuất làm cho người dùng hệ thống đó chạy một phần của www- nhóm dữ liệu vì vậy ngay cả khi anh ta viết bằng quyền của mình, NGINX sẽ có thể truy cập dữ liệu mới.
jtafurth

Trong trường hợp đó, chỉ cần thêm người dùng đó vào nhóm dữ liệu www là không đủ. Mỗi tệp / thư mục cũng cần phải đặt nhóm đó ... không được thực hiện tự động. Tôi nên làm điều này với như mặt nạ nhóm hay cái gì đó?
Niels

Không, bạn thêm dữ liệu www vào bất kỳ nhóm nào đang được đặt khi tạo tệp, theo cách đó mỗi thư mục / tệp có nó và nginx của bạn được tự động cho phép
jtafurth

0

Duy trì một danh sách công việc trên máy chủ thực thi và chạy các lệnh (lệnh) cục bộ với ví dụ cron nghe có vẻ như là một cách tốt để làm việc đó. Hoàn toàn tách API tạo ra các lệnh và dữ liệu để làm việc. Không cần phải đeo mặt nạ và chmods khổng lồ, v.v ...

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.