Opsi “–up” di OpenVPN biasanya digunakan untuk perutean, dll. Jadi, opsi ini diproses sebelum OpenVPN menjatuhkan hak akses root untuk dijalankan sebagai bukan siapa-siapa. Namun, saya menggunakan skrip shell yang perlu dijalankan sebagai pengguna yang tidak memiliki hak istimewa.
Bagaimana aku melakukan itu? Saya telah mempelajari Drop Process Privileges, terutama jawaban polinomial dan tylerl, tetapi saya tidak mengerti bagaimana menerapkannya. 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.
Edit0
Per jawaban Nikola Kotur, saya telah menginstal runit-rpm Ian Meyer. Meskipun perintah chpst berfungsi di terminal, di skrip atas gagal dengan "perintah tidak ditemukan". Apa yang berhasil adalah "Sudo chpst" plus pengaturan tampilan dan bahasa yang tepat. Silakan lihat Mengapa terminal saya tidak menampilkan karakter unicode dengan benar? Karena itu, skrip atas 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 &
Edit1
Per komentar 0xC0000022L, saya menemukan bahwa "sudo -u user" berfungsi serta "sudo chpst -u user -U user":
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 membuat sudo sendirian untuk bekerja.
Jawaban yang Diterima:
Saya menggunakan chpst
runit alat untuk tugas seperti ini. Misalnya, dari skrip ke atas, panggil skrip unprivileged Anda:
chpst -u nobody /path/to/script