Datos
- Quiero que los usuarios operadores de esta máquina monten sus propios recursos compartidos de cif
- Los
sudoers
el archivo ya contiene el/bin/mount -t cifs //*/* /media/* -o username=*
comando para todos los operadores - Quiero que los usuarios monten un
cifs
compartir a través de un script escribiendo la contraseña solo una vez, no dos veces. - La contraseña sudo y la contraseña cifs son idénticas.
Lo que ya tengo
Este script funciona:
#!/bin/bash
sudo 'mount -t cifs //192.168.1.1/home /media/$USER/home -o username=$USER'
…¡pero requiere que los usuarios escriban la misma contraseña dos veces!
- Una vez para
sudo
- Una vez para la propia montura
Esto también funcionaría:
#!/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'
…pero esto me obligaría a permitir que todos los usuarios operadores puedan sudo sh
(problema de seguridad importante)
Pregunta
Cómo montar un recurso compartido cifs en bash ¹ sin poner sh
en los sudoers
archivo ni creando un archivo permanente/temporal???
Nota 1: sin python, perl, C, Go,... por favor?
Nota 2: Sé que puedo eliminar la contraseña a través de sudoers
archivo, pero estoy tratando de reforzar la seguridad, no aflojarla, sin renunciar a la comodidad...
Respuesta aceptada:
En su lugar, debe hacer que el usuario haga la llamada de usar sudo como sudo script
. solo verifique si el script se está ejecutando como root, si no, solicítelo
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root, use sudo "$0" instead" 1>&2
exit 1
fi
No intente capturar la contraseña de sus usuarios.