web-dev-qa-db-fra.com

Créer une commande personnalisée Sudo sans mot de passe

Je veux implémenter un script pour exécuter n'importe quelle commande avec les privilèges root, mais sans avoir à saisir de mot de passe. Au terminal, j'aimerais voir cela comme ceci:

./newsudo "comand with root privileges" 

Je pense que la meilleure solution serait d'utiliser la commande "avec les privilèges root" comme argument dans le script avec et exec ou similaire, pour l'exécuter.

La vérité est que je suis très noob dans tout ce domaine et je ne sais pas par où commencer.

Merci!!

4
Binkpang34

Créez une commande générique pour exécuter n'importe quelle commande (sous) en tant que Sudo, sans mot de passe; c'est possible?

Théoriquement, ce que vous demandez est possible. Puisqu'il est possible de définir une application dans le fichier sudoers pour qu'elle s'exécute avec des arguments, nous pouvons créer une commande (script) à appeler, qui s'exécute avec Sudo, avec la commande en question. comme argument.

Devrions-nous le faire?

JAMAIS, car cela briserait le principe d'administrateur. N'IMPORTE QUEL processus malveillant pourrait exécuter du code pour détruire votre système.

L'essentiel est que je ne vais même pas poster comment faire.


Plus de choses à faire et à ne pas faire pour utiliser un logiciel sans mot de passe

Comme mentionné par @Groundzero, vous pouvez ajouter des applications ou des scripts spécifiques au fichier sudoers, pour qu'ils s'exécutent sans mot de passe, comme décrit ici . Cependant, gardez à l'esprit:

  • N'ajoutez pas au fichier sudoers des applications pouvant être utilisées pour nuire à votre système ou pour faire des choses néfastes en général. Surtout si l'application comporte de nombreuses options climatiques.
  • Ne stockez pas les scripts à exécuter avec Sudo (sans mot de passe) dans un emplacement où ils peuvent être modifiés sans les privilèges de l'administrateur. Un simple montage par n'importe qui (ou n'importe quel processus) peut le faire faire n'importe quoi.
14
Jacob Vlijm

Il suffit de créer une règle Sudo accordant les commandes en question à l'utilisateur/groupe souhaité avec NOPASSWD: devant la commande. Vous n'avez pas besoin d'un nouveau script, vous avez juste quelque chose comme ceci pour donner la possibilité d'exécuter quoi que ce soit en tant qu'utilisateur root au groupe d'admins sans mot de passe requis:

%admins ALL = NOPASSWD: ALL

En général, il est judicieux d’exiger des mots de passe pour les commandes très dangereuses, mais votre stratégie de sécurité vous appartient. Il y a eu quelques discussions (maintenant supprimées) sur la précarité, et je suis d'accord: c'est est dangereux. C'est presque toujours une mauvaise idée de dire "cet utilisateur peut exécuter n'importe quoi en tant que root sans requalifier de nouveau son identité de temps en temps".

Il existe cependant d'autres forums dédiés à la sécurité. Si l'objectif légitime est d'exécuter des commandes arbitraires en tant que root sans mot de passe, la procédure ci-dessus constitue le moyen le plus sûr de le faire. La mise en garde étant que toute personne implémentant ceci doit être consciente des risques, y compris "quiconque peut exécuter une commande avec les privilèges de cet utilisateur est en réalité root". Cela inclut des éléments tels que les scripts téléchargés et peut-être même des pages Web malveillantes, si le navigateur a une faille de sécurité. La séparation entre "utilisateur non privilégié" et "racine" est pratiquement disparue avec une règle comme celle-ci en place. Méfiez-vous de l'acheteur. :)

3
dannysauer