Opsi "--up" di OpenVPN biasanya digunakan untuk perutean dll. Jadi itu diproses sebelum OpenVPN menjatuhkan hak akses root untuk dijalankan sebagai bukan siapa-siapa. Namun, saya menggunakan skrip shell yang harus dijalankan sebagai pengguna yang tidak memiliki hak.
Bagaimana aku melakukan itu? Saya telah mempelajari Drop Process Privileges , terutama jawaban polinomial dan tylerl, tetapi saya tidak mengerti bagaimana cara mengimplementasikannya. Saya bekerja di Centos 6.5, dan suid diblokir, baik sebagai "chmod u + s" dan sebagai "setuid ()".
Ada plugin OpenVPN ("openvpn-down-root.so") yang memungkinkan skrip yang dipanggil oleh opsi "--down" untuk dijalankan sebagai root. Mungkin ada yang setara, seperti "openvpn-up-user.so", tapi saya belum menemukannya.
Sunting0
Per jawaban Nikola Kotur, saya telah menginstal runit-rpm Ian Meyer . Meskipun perintah chpst bekerja di terminal, dalam skrip up gagal dengan "perintah tidak ditemukan". Yang berfungsi adalah "sudo chpst" plus pengaturan tampilan dan bahasa yang tepat. Silakan lihat Mengapa terminal saya tidak mengeluarkan karakter unicode dengan benar? Mengingat itu, skrip up membutuhkan empat baris ini:
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 &
Sunting1
Per komentar 0xC0000022L, saya menemukan bahwa "sudo -u pengguna" berfungsi juga "sudo chpst -u pengguna -U pengguna":
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 &
Saya akan mempelajari man sudoers dan memperbarui jika / ketika saya mendapatkan sudo sendiri untuk bekerja.