55 votes

autoriser sudo à un autre utilisateur sans mot de passe

Je veux pouvoir faire un "su" sur un utilisateur spécifique, ce qui me permettrait d'exécuter n'importe quelle commande sans avoir à saisir de mot de passe.

Par exemple :

Si mon login est user1 et que l'utilisateur auquel je veux me connecter est user2 :

J'utiliserais la commande :

su - user2

mais ensuite il me demande de

Password:

0 votes

Demandez le mot de passe à l'autre utilisateur. Au moins, l'autre utilisateur sait ce qui a été fait sous son identité.

1 votes

Cela n'a rien à voir avec un autre utilisateur physique. Les deux identifiants sont les miens. Je connais le mot de passe puisque j'ai créé le compte. Je ne veux simplement pas avoir à taper le mot de passe à chaque fois.

0 votes

Serait-il possible de se connecter à n'importe quel utilisateur ou devez-vous hériter d'un shell en particulier et avoir besoin de su pour fonctionner ?

76voto

Huygens Points 1563

sudo peut le faire pour vous :)

Il faut cependant un peu de configuration, mais une fois que c'est fait, vous n'avez plus qu'à faire ça :

sudo -u user2 -s

Et vous seriez connecté en tant que user2 sans entrer de mot de passe.

Configuration

Pour configurer sudo, vous devez modifier son fichier de configuration via : visudo . Remarque : cette commande ouvrira la configuration à l'aide de la commande vi Si vous n'êtes pas à l'aise avec cet éditeur de texte, vous devez définir un autre éditeur (en utilisant la fonction export EDITOR=<command> ) avant d'exécuter la ligne suivante. Un autre éditeur de ligne de commande parfois considéré comme plus facile est nano donc vous feriez export EDITOR=/usr/bin/nano . Vous avez généralement besoin du privilège de super utilisateur pour visudo :

sudo visudo

Ce fichier est structuré en différentes sections, les alias, puis les valeurs par défaut et enfin à la fin vous avez les règles. C'est ici que vous devez ajouter la nouvelle ligne. Donc vous naviguez à la fin du fichier et ajoutez ceci :

user1    ALL=(user2) NOPASSWD: /bin/bash

Vous pouvez également remplacer /bin/bash par ALL et vous pourrez alors lancer n'importe quelle commande en tant qu'utilisateur2 sans mot de passe : sudo -u user2 <command> .

Si vous voulez être capable de passer à n'importe quel utilisateur, utilisez simplement

user1    ALL=(ALL) NOPASSWD: /bin/bash

Mise à jour

Je viens de voir votre commentaire concernant Skype. Vous pourriez envisager d'ajouter Skype directement dans le fichier de configuration de la sudo. Je suppose que vous avez installé Skype dans votre Applications dossier :

user1    ALL=(user2) NOPASSWD: /Applications/Skype.app/Contents/MacOS/Skype

Ensuite, vous appelleriez depuis le terminal :

sudo -u user2 /Applications/Skype.app/Contents/MacOS/Skype

0 votes

C'est beaucoup moins compliqué que l'idée des clés ssh, donc utilisez ceci à moins que vous n'ayez besoin des clés ssh pour l'accès à distance également.

2 votes

Du point de vue de la sécurité, il convient de noter que le fait de spécifier une commande spécifique implique qu'elle doit être en lecture seule pour l'utilisateur 1. Sinon, il peut remplacer la commande par une autre et l'exécuter en tant qu'utilisateur 2. Et si vous ne vous souciez pas de cela, vous pouvez tout aussi bien spécifier que l'utilisateur1 peut exécuter tout en tant qu'utilisateur2 et donc avoir une configuration sudo plus simple.

0 votes

@StanKurdziel bon point ! Bien que ce soit quelque chose dont il faut être conscient, il est vraiment rare que les exécutables du système soient accessibles en écriture par les utilisateurs, sauf si vous êtes Root, mais dans ce cas, vous n'avez pas besoin de sudo ;-) Mais vous avez raison d'ajouter ce commentaire parce que c'est si rare que je l'ai probablement négligé plus d'une fois.

4voto

Oskar Points 1242

Je mettrais en place des clés ssh publiques/privées pour le second compte et je stockerais la clé dans le premier compte.

Ensuite, vous pouvez lancer une commande comme :

 ssh user@localhost -n /Applications/Skype.app/Contents/MacOS/Skype &

Il y aura toujours le problème de la confusion dans Skype, puisque deux instances sont exécutées sur le même compte utilisateur et que les fichiers lus/écrits par ce programme peuvent entrer en conflit. Il se peut également que cette solution réponde à vos besoins et que vous n'ayez pas besoin d'un iPod touch pour exécuter votre deuxième instance de Skype.

1 votes

Il s'agit d'une bonne solution sécurisée dans le cas général d'une connexion sans mot de passe à n'importe quel compte sur n'importe quel hôte, mais je dirais que c'est probablement exagéré lorsque les deux comptes sont sur le même hôte et appartiennent au même utilisateur.

0 votes

@scottishwildcat C'est beaucoup plus sûr que l'alternative consistant à créer un script pour le mot de passe et à le transmettre en texte clair ou à utiliser une variable et à stocker le mot de passe dans le trousseau et à utiliser un outil comme expect pour script l'interaction. J'utilise simplement sudo su - blah et tapez mon mot de passe. Je pense que l'autre réponse couvre sudo suffisamment bien pour garder ce commentaire.

0 votes

Oh, je ne suggérais certainement pas que votre réponse soit supprimée Je n'ai même pas voté à la baisse, c'est une très bonne réponse.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X