GNU/Linux >> Tutoriels Linux >  >> Linux

Comment exécuter une commande en tant qu'utilisateur spécifique dans un script d'initialisation ?

Si vous avez start-stop-daemon

start-stop-daemon --start --quiet -u username -g usergroup --exec command ...

Pour les scripts d'initialisation de style systemd, c'est vraiment facile. Vous ajoutez simplement un User=dans la section [Service].

Voici un script d'initialisation que j'utilise pour qbittorrent-nox sur CentOS 7 :

[Unit]
Description=qbittorrent torrent server

[Service]
User=<username>
ExecStart=/usr/bin/qbittorrent-nox
Restart=on-abort

[Install]
WantedBy=multi-user.target

Sur les systèmes RHEL, le /etc/rc.d/init.d/functions script est destiné à fournir similaire à ce que vous voulez. Si vous le sourcez en haut de votre script d'initialisation, toutes ses fonctions deviennent disponibles.

La fonction spécifique fournie pour aider à cela est daemon . Si vous avez l'intention de l'utiliser pour démarrer un programme de type démon, une utilisation simple serait :

daemon --user=username command

Si c'est trop lourd pour ce dont vous avez besoin, il y a runuser (voir man runuser pour plus d'informations ; certaines versions peuvent nécessiter -u avant le nom d'utilisateur):

/sbin/runuser username -s /bin/bash -c "command(s) to run as user username"

Au lieu de sudo , essayez

su - username command

D'après mon expérience, sudo n'est pas toujours disponible sur les systèmes RHEL, mais su est, parce que su fait partie du package coreutils alors que sudo se trouve dans le paquet sudo.


Linux
  1. CentOS / RHEL :Comment trouver quel utilisateur exécute une commande spécifique ?

  2. Comment utiliser sudo pour permettre à un utilisateur non root d'exécuter une commande particulière

  3. Comment désactiver une commande spécifique pour un utilisateur spécifique sous Linux

  4. Comment exécuter le script en tant qu'autre utilisateur sans mot de passe ?

  5. Exécuter une partie d'un script bash en tant qu'utilisateur différent

Comment exécuter une commande / un script Linux Shell en arrière-plan

Comment créer des utilisateurs sous Linux (commande useradd)

Comment exécuter une commande pendant une durée spécifique sous Linux

Comment exécuter un script Python en PHP

Comment exécuter un script bash

Comment exécuter une commande dans un script shell ?