Outils pour utilisateurs

Outils du site


sysadmin:linux:executer_processus_avec_groupe_specifique

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

sysadmin:linux:executer_processus_avec_groupe_specifique [2021/06/24 21:45] – créée 93.28.24.141sysadmin:linux:executer_processus_avec_groupe_specifique [2021/06/25 12:52] (Version actuelle) 92.154.112.189
Ligne 1: Ligne 1:
-{{tag>sysadmin linux group todo}}+{{tag>sysadmin linux group}}
  
  
 ====== Exécution d'un processus en spécifiant le groupe ====== ====== Exécution d'un processus en spécifiant le groupe ======
  
-Un fichier à un propriétaire et un groupe.+Sur les systèmes Unix les droits associés à un fichier se déclinent pour l'utilisateur propriétaire, les membres du groupe propriétaire et les autres utilisateurs. Un notes plus détaillée aborde [[sysadmin:linux:gestion-droits-access|les droits d'accès au fichiers]]. 
 <code bash> <code bash>
 $ ls -l /usr/bin/tail  $ ls -l /usr/bin/tail 
Ligne 10: Ligne 11:
 </code> </code>
  
-Lorsqu'il est exécutable, le processus en mémoire appartient à l'utilisateur qui l'exécute+Dans cet exemple le fichier tail appartient à l'utilisateur ''root'' et au groupe ''root''.
  
 +Lorsque le fichier est exécutable le processus engendré n'a pas les droits associés au fichier initial, le processus appartient à l'utilisateur qui le crée:
  
 +<code bash>
 +# lance la commande tail en arrière plan
 +$ /usr/bin/tail -f /var/log/ufw.log &
 +[1] 17435
 +
 +# affiche les attributs du processus
 +$ ps -eo "pid,user,group,args" | grep 17435
 +  17435 yoann    yoann    /usr/bin/tail -f /var/log/ufw.log
 +</code>
 +
 +
 +<note>
 +Les flags [[sysadmin:linux:gestion-droits-access#les_suid_sgid_bits|suid/sgid]] permettent de modifier se comportement par défaut. Avec ces bits positionnés, le processus s'exécutant conserve les droits associés au fichier.
 +</note>
 +
 +===== Changer le groupe primaire avec sg =====
 +
 +Au moment de la création d'un processus un groupe différent du groupe principal (ou primaire) de l'utilisateur peut être spécifié, pour cela on peut utiliser la commande **sg**. Cela permet de disposer des droits spécifique de ce groupe à l'exécution.
 +
 +<code bash>
 +# affiche l' id utilisateur du groupe principal et la liste de ses groupes d'appartenance
 +$ id
 +uid=1000(yoann) gid=1000(yoann) groupes=1000(yoann),4(adm),20(dialout),...,120(lpadmin),131(lxd),132(sambashare),135(docker)
 +
 +# relancer la commande en spécifiant le groupe dialout
 +sg dialout "/usr/bin/tail -f /var/log/ufw.log &"
 +
 +# afficher les processus contenant tail
 +$ ps -eo "pid,user,group,args" | grep tail
 + ...
 + 17435 yoann    yoann    /usr/bin/tail -f /var/log/ufw.log
 + 24207 yoann    dialout  /usr/bin/tail -f /var/log/ufw.log
 +</code> 
 +
 +On peut associer un mot de passe à un groupe. Le mot de passe du groupe permet à l'utilisateur (après authentification) de temporairement bénéficier des permissions supplémentaires associées au groupe:
 +
 +<code bash>
 +# définir le mot de passe du groupe
 +$ sudo gpasswd discordnetpol
 +
 +# après authentification le processus bénéficiera des droits associés au groupe discordnetpol 
 +$ sg discordnetpol "/usr/bin/tail -f /var/log/ufw.log &"
 +
 +# afficher les processus
 +$ ps -eo "pid,user,group,args" | grep tail
 +  17435 yoann    yoann    /usr/bin/tail -f /var/log/ufw.log
 +  24207 yoann    dialout  /usr/bin/tail -f /var/log/ufw.log
 +  26112 yoann    discord+ /usr/bin/tail -f /var/log/ufw.log
 +</code>
 +
 +
 +===== Utiliser sg sans saisir de mot de passe =====
 +
 +Pour déqactiver l'authentification par **sg**, deux conditions:
 +  - Ajouter l'utilisateur dans le groupe;
 +  - Retirer le mot de passe et restreindre l'accès aux seuls membres.
 +
 +
 +<code bash>
 +# Déclare l'utilisateur 'username' membre du groupe 'mongroup'
 +$ sudo gpasswd -M username mongroup
 +
 +# Retire le mot de passe pour les membres du groupe
 +$ sudo gpasswd -r mongroup
 +$ sudo gpasswd -R mongroup
 +</code>
 +
 +
 +==== Avec la commande sudo ====
 +
 +Si l'utilisateur est membre du groupe ''sudo'', il peut utiliser la commande sudo pour spécifier le groupe principal à l'exécution via l'argument **-g** 
 +
 +<code bash>
 +$ sudo -g discordnetpol /usr/bin/tail -f /var/log/ufw.log &
 +
 +# La commande sudo s'execute en root et génère un processus fils avec le groupe primaire voulu
 +$ ps -eo "pid,user,group,args" | grep tail
 +  41536 root     discord+ sudo -g discordnetpol /usr/bin/tail -f /var/log/ufw.log
 +  41537 yoann    discord+ /usr/bin/tail -f /var/log/ufw.log
 +</code>
  
 ===== Références ===== ===== Références =====
  
   * https://unix.stackexchange.com/questions/112225/how-to-run-a-process-with-a-specific-group   * https://unix.stackexchange.com/questions/112225/how-to-run-a-process-with-a-specific-group
 +  * https://www.linuxquestions.org/questions/linux-newbie-8/how-to-set-and-use-group-password-681133/
  
sysadmin/linux/executer_processus_avec_groupe_specifique.1624571142.txt.gz · Dernière modification : 2021/06/24 21:45 de 93.28.24.141