GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment saisir le mot de passe une seule fois dans un script bash nécessitant sudo ?

Données

  • Je veux que les utilisateurs opérateurs sur cette machine montent leurs propres partages cifs
  • Les sudoers le fichier contient déjà le /bin/mount -t cifs //*/* /media/* -o username=* commande pour tous les opérateurs
  • Je veux que les utilisateurs montent un cifs partager via un script en saisissant le mot de passe une seule fois, pas deux.
  • Le mot de passe sudo et le mot de passe cifs sont identiques.

Ce que j'ai déjà

Ce script fonctionne :

#!/bin/bash
sudo 'mount -t cifs //192.168.1.1/home /media/$USER/home -o username=$USER'

mais cela oblige les utilisateurs à saisir deux fois le même mot de passe !

  • Une fois pour sudo
  • Une fois pour la monture elle-même

Cela fonctionnerait également :

#!/bin/bash
echo -n Password: 
read -s szPassword
echo $szPassword | sudo -S sh -c 'echo $szPassword | mount -t cifs //192.168.1.1/home /media/$USER/home -o username=$USER'

mais cela nécessiterait que j'autorise tous les utilisateurs de l'opérateur à pouvoir sudo sh (problème de sécurité majeur)

Question

Comment monter un partage cifs dans bash ¹ sans mettre sh dans les sudoers fichier ni créer un fichier permanent/temporaire ???

Remarque 1 : pas de python, perl, C, Go, … s'il vous plait ?
Remarque 2 : Je sais que je peux simplement supprimer le mot de passe via les sudoers fichier, mais j'essaie de renforcer la sécurité, pas de la desserrer, sans renoncer à la commodité…

Réponse acceptée :

Vous devriez plutôt demander à l'utilisateur d'utiliser sudo comme sudo script . vérifiez simplement si le script est exécuté en tant que root, sinon demandez-le

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root, use sudo "$0" instead" 1>&2
   exit 1
fi

N'essayez pas de capturer le mot de passe de vos utilisateurs.


Ubuntu
  1. Comment s'assurer qu'une seule instance d'un script Bash s'exécute ?

  2. Comment supprimer l'exigence de mot de passe d'Ubuntu ??

  3. Confirmation automatique lors de l'exécution de scripts bash ?

  4. Comment diviser une chaîne dans un script bash

  5. Comment ajouter automatiquement un compte utilisateur ET un mot de passe avec un script Bash ?

Comment trouver/modifier le mot de passe root par défaut d'Ubuntu

Comment réinitialiser le mot de passe Sudo dans Ubuntu 20.04 LTS

Comment utiliser les instructions conditionnelles dans les scripts Bash

Comment changer le mot de passe sudo dans Ubuntu

Comment changer le délai d'expiration du mot de passe Sudo dans Ubuntu

Comment exécuter un script bash