Điểm:1

Làm cách nào để bảo mật hiệu quả một quy trình và các phần tử con rẽ nhánh của nó bằng cách sử dụng setuid và setgid?

lá cờ cn

Tôi đang cố gắng để tất cả các quy trình unix được rẽ nhánh bởi một quy trình chính bằng cách sử dụng các danh tính người dùng/nhóm khác nhau. Tôi không muốn tiến trình cha hoặc con đang chạy dưới dạng nguồn gốc vì vậy tôi muốn 2 danh tính khác fooquán ba được sử dụng. foo nên được sử dụng để chạy ứng dụng chính và có quyền truy cập hạn chế vào hệ thống tệp và sau đó quán ba nên được sử dụng bởi các quy trình rẽ nhánh và thậm chí còn có quyền truy cập hạn chế hơn so với foo.

Vấn đề là khi tôi cố gắng gọi thiết lập hoặc thiết lập sau khi rẽ nhánh quá trình con, tôi quay lại setuid không thành công: Thao tác không được phép bất kể tôi làm gì. Tôi thậm chí đã xác nhận rằng viết hoa --print cho thấy tôi có CAP_SETUID khả năng khi chạy Shell như foo người dùng vì vậy tôi nghĩ rằng điều này nên được cho phép.

Tôi phải hiểu sai khả năng của chức năng này và do đó tôi đang sử dụng các công cụ này không chính xác. Cách tốt nhất để tạo mối quan hệ giữa các quy trình và người dùng theo cách mà cả quy trình cha và con đều không chạy như nguồn gốc?

lá cờ cn
"tất cả các quy trình unix". Unix != Linux. Tôi cho rằng bạn tạo một dịch vụ systemd tạo cha mẹ với tư cách là người dùng foo và dịch vụ đó sinh ra (tập lệnh hoặc dịch vụ systemd thứ 2) các phần tử con. Nhưng sẽ luôn có một quy trình thuộc sở hữu gốc phía trên quy trình gốc. Hãy xem dịch vụ apache làm ví dụ (mặc dù cha mẹ là root nhưng con của nó được sở hữu bởi apache sử dụng)
Matt Hintzke avatar
lá cờ cn
Thật không may, tôi đã thử cách này và có vẻ như WSL không hoạt động với `systemd` và vì tôi đang sử dụng docker và cần phát triển trên Windows nên có vẻ như tôi không thể sử dụng nó như một giải pháp.
lá cờ cn
Bạn thực sự cần thêm WSL vào câu hỏi: P Những gì bạn muốn có thể không thực hiện được với WSL. Nó không phải là sự thay thế cho bản cài đặt Linux.
Matt Hintzke avatar
lá cờ cn
Vâng, xin lỗi, ý tôi là phần mềm sản xuất sẽ không sử dụng WSL nên tôi không thực sự nghĩ về điều đó. Nhưng tôi cho rằng việc xem tất cả sự phát triển sẽ diễn ra như thế nào trong windows, đó là một yêu cầu. Cảm ơn nhưng có vẻ như tôi không đủ khả năng để có thể thực hiện việc này một cách hiệu quả
NotTheDr01ds avatar
lá cờ vn
@MattHintzke Tôi thường không đề xuất đường dẫn này, nhưng trong trường hợp của bạn, tôi nghĩ rằng nó có thể đảm bảo một ngoại lệ. Vì bạn chỉ đang sử dụng WSL cho mục đích phát triển để bắt chước hệ thống sản xuất, nên bạn có thể muốn xem xét tập lệnh hỗ trợ Systemd như [Genie](https://github.com/arkane-systems/genie). Một lần nữa, cá nhân tôi không thích sử dụng các tập lệnh Systemd này vì chúng thay đổi quá nhiều chức năng WSL, nhưng đó có thể là con đường phù hợp với bạn. Tất cả các tập lệnh này đều có cùng một khái niệm chung ở chỗ chúng tạo vùng chứa/không gian tên trong đó Systemd là PID1 và thay đổi thành không gian tên đó.
Matt Hintzke avatar
lá cờ cn
@NotTheDr01ds hmm ok tôi sẽ xem xét điều đó, cảm ơn!

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.