Tùy chọn "--up" trong OpenVPN thường được sử dụng để định tuyến, v.v. Và vì vậy, nó được xử lý trước khi OpenVPN bỏ các đặc quyền gốc để chạy như không có ai. Tuy nhiên, tôi đang gọi các kịch bản shell cần chạy như một người dùng không có quyền.
Làm thế nào để làm điều đó? Tôi đã nghiên cứu Đặc quyền quy trình thả , đặc biệt là câu trả lời của đa thức và tylerl, nhưng tôi không hiểu cách thực hiện. Tôi đang làm việc trong Centos 6.5 và suid bị chặn, cả "chmod u + s" và "setuid ()".
Có một plugin OpenVPN ("openvpn-down-root.so") cho phép các tập lệnh được gọi bởi tùy chọn "--down" để chạy bằng root. Có thể có một tương đương, chẳng hạn như "openvpn-up-user.so", nhưng tôi không tìm thấy nó.
Chỉnh sửa0
Theo câu trả lời của Nikola Kotur, tôi đã cài đặt runit-vòng / phút của Ian Meyer . Mặc dù lệnh chpst hoạt động trong thiết bị đầu cuối, nhưng trong kịch bản lên, nó không thành công với "lệnh không tìm thấy". Những gì hoạt động là "sudo chpst" cộng với thiết lập hiển thị và ngôn ngữ phù hợp. Vui lòng xem Tại sao đầu ra thiết bị đầu cuối của tôi ký tự unicode đúng? Do đó, kịch bản lên cần bốn dòng sau:
LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo chpst -u user -U user /home/user/unprivileged.sh &
Chỉnh sửa1
Mỗi bình luận của 0xC0000022L, tôi thấy rằng "người dùng sudo -u" hoạt động tốt như "người dùng sudo chpst -u người dùng -U":
LANG="en_US.UTF-8"; export LANG
GDM_LANG="en_US.UTF-8"; export GDM_LANG
DISPLAY=:0; export DISPLAY
sudo -u user /home/user/unprivileged.sh &
Tôi sẽ nghiên cứu sudoers man và cập nhật nếu / khi tôi nhận sudo một mình để làm việc.