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.