GNU/Linux >> Belajar Linux >  >> Linux

Praktik terbaik untuk menjalankan layanan Linux sebagai pengguna yang berbeda

Setelah melihat semua saran di sini, saya menemukan beberapa hal yang saya harap akan bermanfaat bagi orang lain di posisi saya:

  1. hop benar untuk mengarahkan saya kembali ke /etc/init.d/functions :daemon fungsi sudah memungkinkan Anda menyetel pengguna alternatif:

    daemon --user=my_user my_cmd &>/dev/null &
    

    Ini diimplementasikan dengan membungkus pemanggilan proses dengan runuser -lebih lanjut tentang ini nanti.

  2. Jonathan Leffler benar:ada setuid di Python:

    import os
    os.setuid(501) # UID of my_user is 501
    

    Namun, saya masih berpikir Anda tidak dapat menyetel dari dalam JVM.

  3. Baik su maupun runuser tangani dengan baik kasus di mana Anda meminta untuk menjalankan perintah sebagai pengguna yang sudah Anda miliki. Misalnya:

    [[email protected]_host]$ id
    uid=500(my_user) gid=500(my_user) groups=500(my_user)
    [[email protected]_host]$ su my_user -c "id"
    Password: # don't want to be prompted!
    uid=500(my_user) gid=500(my_user) groups=500(my_user)
    

Untuk mengatasi perilaku su itu dan runuser , saya telah mengubah skrip init saya menjadi sesuatu seperti:

if [[ "$USER" == "my_user" ]]
then
    daemon my_cmd &>/dev/null &
else
    daemon --user=my_user my_cmd &>/dev/null &
fi

Terima kasih semua atas bantuan Anda!


Di Debian kami menggunakan start-stop-daemon utilitas, yang menangani file pid, mengubah pengguna, menempatkan daemon ke latar belakang, dan banyak lagi.

Saya tidak familiar dengan RedHat, tapi daemon utilitas yang sudah Anda gunakan (yang didefinisikan dalam /etc/init.d/functions , btw.) disebutkan di mana-mana sama dengan start-stop-daemon , jadi bisa juga mengubah uid program Anda, atau cara Anda melakukannya sudah benar.

Jika Anda melihat-lihat jaring, ada beberapa pembungkus siap pakai yang bisa Anda gunakan. Beberapa bahkan mungkin sudah dikemas dalam RedHat. Lihat daemonize , misalnya.


Linux
  1. 8 Praktik terbaik dengan sudo di Linux – Tindakan dan Larangan dari sudo

  2. Apakah Ini Praktik yang Baik Untuk Menjalankan Daemon Di Bawah Akun Pengguna Non-root?

  3. Praktik terbaik keamanan Wordpress di Linux

  1. Praktik terbaik keamanan server Linux

  2. Mulai, Berhenti, dan Mulai Ulang Crond Daemon di Linux

  3. UNIX / Linux :Apa itu Shell? Apa Shells yang berbeda?

  1. Layanan OS Linux 'sshd'

  2. Cara membuat skrip Python berjalan seperti layanan atau daemon di Linux

  3. Jalankan skrip php sebagai proses daemon