145 votes

Exécution de travaux upstart en tant qu'utilisateurs non privilégiés

Quel est le moyen canonique pour qu'un job upstart change son userid et exécute le script en tant qu'utilisateur non privilégié ?

On peut évidemment utiliser su o sudo mais cela semble compliqué (et peut générer des lignes de journal inutiles).

110voto

qsun Points 1201

Avec upstart v1.4, setuid y setgid sont supportés nativement dans le fichier de configuration.

88voto

Roman Gaufman Points 981

En posant la question sur le canal #upstart sur freenode, la prise officielle sur le sujet est :

Une future version de Upstart aura support natif pour cela, mais pour l'instant vous pouvez utiliser quelque chose comme :

exec su -s /bin/sh -c 'exec "$0" "$@"' username -- /path/to/command [parameters...]

17voto

Martin W Points 789

Que diriez-vous d'utiliser start-stop-daemon ?

exec start-stop-daemon --start --chuid daemonuser --exec /bin/server_cmd

Desde Livre de cuisine Upstart :

La méthode recommandée pour les systèmes Debian et Ubuntu est d'utiliser l'utilitaire d'aide start-stop-daemon . [ ] start-stop-daemon n'impose pas de limites PAM ("Pluggable Authentication Module") au processus qu'il lance.

Note : start-stop-daemon non pris en charge dans RHEL.

13voto

Shane H Points 1130

Il existe plusieurs façons de le faire, toutes avec une sémantique légèrement différente, notamment en ce qui concerne l'appartenance à un groupe :

  • setuidgid vous placera dans le groupe que vous avez spécifié.

    • L'original de "daemontools setuidgid vous mettra seulement dans ce groupe, vous ne pourrez donc pas accéder aux fichiers appartenant à d'autres groupes dont vous êtes membre.
    • El setuidgid de daemontools-encore et le setuidgid de la boîte à outils nosh Les deux ont un -s (alias --supplementary ), ce qui vous placera dans ce groupe, ainsi que dans tous les groupes d'utilisateurs. groupes supplémentaires pour l'utilisateur que vous spécifiez.
  • Utilisation de newgrp une fois que vous êtes devenu l'utilisateur moins privilégié ajoutera un seul groupe à votre ensemble de groupes, mais créera également un nouveau sous-shell, ce qui le rend délicat à utiliser à l'intérieur de scripts.

  • start-stop-daemon préserve votre appartenance à un groupe, et fait bien plus que setuid/setgid.

  • chpst -u username:group1:group2:group3... commandname vous permettra de spécifier exactement les appartenances de groupe à adopter, mais (en Ubuntu ), il n'est livré qu'avec le runit qui est une alternative à upstart .

  • su -c commandname username récupère toutes les appartenances de groupe de nom d'utilisateur, comme le fait sudo -u username commandname donc c'est probablement la voie la moins surprenante.

8voto

runrig Points 5422

Utilice setuidgid du paquet daemontools .

Documentation ici : http://cr.yp.to/daemontools/setuidgid.html

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X