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 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
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
Pour déqactiver l'authentification par sg, deux conditions:
# 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
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