{{tag>sysadmin linux group}} ====== Exécution d'un processus en spécifiant le 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]]. $ ls -l /usr/bin/tail -rwxr-xr-x 1 root root 72088 sept. 5 2019 /usr/bin/tail 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: # 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 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. ===== 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. # 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 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: # 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 ===== 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. # 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 ==== 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** $ 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 ===== Références ===== * 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/