J'écris un script (en fait une combinaison de scripts et de makefile) qui installe des dépendances externes: certaines apt-get
commandes, certains git
clonages, construction, installation, ajout d'utilisateurs aux groupes, ...
Certaines opérations de ces scripts nécessitent des autorisations de superutilisateur, d'autres non.
Jusqu'à présent, j'ai exécuté l'ensemble du processus de création avec sudo, mais il présente certains inconvénients:
git
repos que je clone obtient enroot
tant que propriétaire, ce qui signifie que je ne peux pas les modifier par la suite sanssudo
ouchown
- les scripts qui ajoutent des utilisateurs à des groupes ne savent pas quel utilisateur ajouter depuis les
whoami
retoursroot
Quelle est la meilleure façon d'exécuter en tant que superutilisateur uniquement les commandes qui en ont besoin? Idéalement, le processus nécessiterait toujours que j'entre mon sudo
mot de passe, mais une seule fois au tout début du processus d'installation. Il l'oublierait alors à la toute fin, mais gardez-le tout le temps jusque-là (cela peut prendre plusieurs heures).
Les solutions que j'ai trouvées en ligne comprennent:
sudo -v
au début du script, mais si je comprends bien, cela arrive à expiration. Mon script pourrait fonctionner pendant quelques heures- exécuter le script avec
sudo
, mais les commandes qui n'ont pas besoin de superutilisateur avecsudo -u $(logname) <command>
. C'est ce que je fais maintenant, mais j'ai l'impression que ce devrait être l'inverse.
Idéalement, j'aimerais que mon script:
- demander des informations d'identification de superutilisateur
- exécuter des commandes normales en tant qu'utilisateur connecté
- exécuter les commandes sudo avec les informations d'identification entrées à l'étape 1
sudo -k
pour fermer la session superutilisateur
su $SUDO_USER -c command
les commandes exécutées en tant qu'utilisateur normal.
SUDO_USER
variable d'environnement. S'il est présent, il contiendra le nom d'utilisateur de l'utilisateur appelant sudo. Vous pouvez donc (en tant que root) afficher $ SUDO_USER: $ SUDO_GID $ vos_fichiers. De même, vous pouvez vérifier ces variables afin que vos commandes adduser sachent quel utilisateur ajouter.