GNU/Linux >> Tutoriels Linux >  >> Linux

Meilleure pratique pour exécuter le service Linux en tant qu'utilisateur différent

Après avoir examiné toutes les suggestions ici, j'ai découvert quelques éléments qui, je l'espère, seront utiles à d'autres dans mon poste :

  1. hop a raison de me rediriger vers /etc/init.d/functions :ledaemon la fonction vous permet déjà de définir un autre utilisateur :

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

    Ceci est implémenté en enveloppant l'invocation du processus avec runuser -plus à ce sujet plus tard.

  2. Jonathan Leffler a raison :il y a setuid en Python :

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

    Cependant, je ne pense toujours pas que vous puissiez vous installer depuis une JVM.

  3. Ni su ni runuser gérez avec élégance le cas où vous demandez à exécuter une commande en tant qu'utilisateur que vous êtes déjà. Ex. :

    [[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)
    

Pour contourner ce comportement de su et runuser , j'ai changé mon script d'initialisation en quelque chose comme :

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

Merci à tous pour votre aide !


Sur Debian, nous utilisons le start-stop-daemon utilitaire, qui gère les fichiers pid, change l'utilisateur, met le démon en arrière-plan et bien plus encore.

Je ne connais pas RedHat, mais le daemon utilitaire que vous utilisez déjà (qui est défini dans /etc/init.d/functions , btw.) est mentionné partout comme l'équivalent de start-stop-daemon , donc soit il peut aussi changer l'uid de votre programme, soit la façon dont vous le faites est déjà la bonne.

Si vous regardez autour du net, il existe plusieurs emballages prêts à l'emploi que vous pouvez utiliser. Certains peuvent même être déjà empaquetés dans RedHat. Jetez un oeil à daemonize , par exemple.


Linux
  1. 8 Meilleures pratiques avec sudo sous Linux - À faire et à ne pas faire de sudo

  2. Est-ce une bonne pratique d'exécuter un démon sous un compte utilisateur non root ?

  3. Les 10 meilleurs sites Web pour exécuter Linux dans un navigateur Web

  4. Meilleures pratiques de sécurité des serveurs Linux

  5. Meilleures pratiques de sécurité Wordpress sous Linux

Exécutez des conteneurs sur Linux sans sudo dans Podman

Comment exécuter un script Shell en tant que service SystemD sous Linux

Liste des utilisateurs sous Linux - Meilleure méthode

Service d'exploitation Linux "winbind"

Exécuter le script bash en tant que démon

Exécuter un script shell en tant qu'utilisateur différent