345 votes

Exécuter un Shell Shell comme un autre utilisateur qui n'a pas de mot de passe.

Je voudrais exécuter un script à partir du script principal d'ubuntu en tant qu'utilisateur différent qui n'a pas de mot de passe.

J'ai tous les privilèges sudo, alors j'ai essayé ceci :

sudo su -c "Your command right here" -s /bin/sh otheruser

Ensuite, je dois entrer mon mot de passe, mais je ne suis pas sûr que ce script soit maintenant réellement exécuté sous cet utilisateur.

Comment puis-je confirmer que le script est réellement exécuté sous cet utilisateur maintenant ?

1voto

Vous pouvez utiliser sudo pour y parvenir. Tout d'abord, vous devez modifier le fichier /etc/sudoers pour ajouter une règle qui permet à l hudson pour devenir l'autre utilisateur pour le script en question. Supposons que vous ayez un user1 qui doit exécuter /usr/local/bin/my_script.sh .

Exécuter visudo pour modifier le sudoers fichier. Ensuite, utilisez ce qui suit sudo pour exécuter le script de hudson.

Il est très important que vous utilisiez visudo pour modifier le sudoers afin de vérifier l'absence d'erreurs dans le fichier avant de le mettre en place. Je vous suggère également de lire rapidement les documents suivants man sudoers afin de bien comprendre ce qu'il fait avant de l'ajouter à votre configuration.

0voto

Daniel Marsola Points 1

J'utilise "ssh" qui pointe sur la même machine locale. Cela me permet d'exécuter le Shell Shell ou la commande sans mot de passe.

ssh target-user@localhost script-to-execute

D'abord, je m'assure que l'utilisateur hôte a sauvegardé sa clé publique à l'utilisateur cible (dans la même machine). Ensuite, j'exécute la commande ssh que j'ai montrée ci-dessus.

Le résultat est une commande/script exécutée en tant qu'utilisateur cible, sans même entrer de mot de passe.

0voto

Gurseerit Points 15
sudo -u <user> <command>

0voto

blueray Points 445

J'ai créé quelques utilisateurs sans mot de passe en utilisant

sudo adduser --gecos "" --disabled-password --no-create-home user1
sudo adduser --gecos "" --disabled-password --no-create-home user2

Pour confirmer, veuillez vérifier

% sudo cat /etc/shadow | grep user
user1:*:19022:0:99999:7:::
user2:*:19022:0:99999:7:::

J'ai écrit un Shell Shell nommé testing.sh comme :

#!/bin/bash

whoami
id

Maintenant je vais exécuter ce script comme différents utilisateurs qui n'ont pas de mot de passe.

$ sudo runuser -u user1 -- bash testing.sh
user1
uid=1001(user1) gid=1001(user1) groups=1001(user1)
$ sudo runuser -u user2 -- bash testing.sh
user2
uid=1002(user2) gid=1002(user2) groups=1002(user2)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X