web-dev-qa-db-fra.com

lancer apt-get avec un utilisateur différent

J'ai un script où j'ajoute un nouvel utilisateur Sudo et après je dois installer des packages.

Est-ce possible d'exécuter apt-get en tant que nouvel utilisateur?

Par exemple, je suis connecté avec l'utilisateur1. Je lance le script. Dans ce script, je crée user2 (sudoer). Après, je veux installer les nouveaux paquets en utilisant user2

Dois-je seulement utiliser cette ligne de commande et cela suppose de fonctionner?

Sudo -u user2 apt-get -y install [packagename]
1
sincos

Vous devez exécuter apt-get comme root via Sudo, et non comme un autre utilisateur.

La plupart des répertoires gérés par apt pour les informations sur les paquets doivent être conservés par root; de même, si un paquet est installé sur /bin ou similaire, il a besoin de root.

Le privilège Sudoers autorise uniquement un utilisateur connecté à utiliser Sudo et à définir ce qu'il peut ou ne peut pas faire avec la commande Sudo. Il n'accorde pas les privilèges dont apt-get a besoin pour fonctionner, car cela nécessite les autorisations effectives root fournies par Sudo apt-get. Par conséquent, si l'utilisateur1 exécute Sudo apt-get, il serait autorisé à le faire. Si l'utilisateur 2 n'est pas dans sudoers, il ne peut pas exécuter cette commande. (Mais pourrait si ils étaient dans sudoers).


Pour faire ce que vous essayez de faire, vous aurez besoin de deux commandes Sudo chaînées (non testées au passage):

Sudo -u user2 Sudo apt-get -y install PACKAGENAME

Notez que ce n'est généralement pas la façon dont les choses doivent être exécutées et que cela peut conduire à un comportement indéfini ou à une bizarrerie.

user2 aurait également besoin d'autorisations pour s'exécuter en tant que root, ce qui peut ou non être le cas dans la configuration de sudoers.

1
Thomas Ward