Menjalankan layanan sebagai root

0

Saya memiliki program java yang saya gunakan untuk mengotomatiskan proses membuat pengaturan VPN untuk klien. Program ini memanggil beberapa skrip bash, membuat dan menyalin file di sekitarnya. Saya harus menjalankannya di bawah pengguna root karena seluruh konfigurasi VPN di bawah / etc / openvpn. Untuk direktori ini saya perlu hak akses root. Pada mesin yang sama saya memiliki server aplikasi Glassfish dan itu akan memanggil program Java yang disebutkan. Glassfish dijalankan di bawah pengguna non-root.

Apa cara terbaik, paling aman menjalankan program sebagai pengguna root tentu saja tanpa memasukkan kata sandi jika saya menjalankannya melalui sudo?

kovica
sumber

Jawaban:

2

Opsi teraman adalah mengetahui grup apa yang dimiliki openvpn dan menambahkan pengguna yang tidak memiliki hak istimewa dengan aksesnya - cara yang disarankan adalah membuat pengguna openvpn , dan memberikannya hak istimewa untuk menggunakan openvpn menggunakan sudo.

Menambahkan pengguna yang Anda jalankan di bawah ini ke grup (mungkin hanya dengan akses acces) untuk memberikannya akses ke openvpn, dan memberikannya hak akses sudo yang diperlukan (untuk menjalankan openvpn - pengaturan identik dengan apa yang digunakan pengguna openvpn) harus melakukan trik dengan aman.

Menggunakan root adalah cara malas;)

Journeyman Geek
sumber
Saya sudah melakukan itu. Masalahnya bukan dalam menjalankan OpenVPN itu sendiri. Program Java yang saya punya skrip panggilan untuk membuat sertifikat klien misalnya. Seluruh konfigurasi ada di direktori yang dimiliki oleh root.root. Bahkan OpenVPN berjalan sebagai root pada awalnya dan kemudian mengubah hak istimewa menjadi pengguna yang tidak memiliki hak istimewa.
kovica
baik, mengubah kepemilikan direktori adalah solusi saya. Kemudian berikan izin kepada pengguna. Dengan begitu Anda tidak perlu menjalankan ini sebagai root - Anda akan menggunakan pengguna reguler dan grup 'dengan benar' daripada menjalankan sesuatu sebagai root
Journeyman Geek
0

Apa yang saya temukan adalah menjalankan perintah sebagai sudo tanpa memasukkan kata sandi ada dua opsi:

  • echo PASSWORD | sudo -S PERINTAH
  • menambahkan baris berikut ke / etc / sudoers

    username ALL = (ALL) NOPASSWD: COMMAND

Perhatikan bahwa baris ini harus setelah semua definisi grup. Anda dapat memeriksa hak istimewa sudo yang Anda gunakan sudo -l. Untuk kasus ini, ini menghasilkan:

(ALL) ALL
(ALL) NOPASSWD: COMMAND

Ini berarti bahwa untuk semua perintah, kata sandi akan diperlukan kecuali untuk PERINTAH. Jika kita menempatkan username ALL=(ALL) NOPASSWD: COMMANDsebelum definisi grup maka sudo -lakan menghasilkan:

(ALL) NOPASSWD: COMMAND
(ALL) ALL

Ini masih memerlukan kata sandi untuk PERINTAH, karena (ALL) ALLditentukan setelah baris NOPASSWD.

kovica
sumber