GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Cómo ingresar la contraseña solo una vez en un script Bash que necesita Sudo?

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.


Ubuntu
  1. Cómo cambiar el tiempo de espera de la contraseña de Sudo

  2. ¿Cómo depurar un script Bash?

  3. ¿Cómo asegurarse de que solo se ejecute una instancia de un script Bash?

  4. ¿Cómo eliminar el requisito de contraseña de Ubuntu?

  5. Cómo dividir una cadena en Bash Script

Cómo encontrar/cambiar la contraseña raíz predeterminada de Ubuntu

Cómo restablecer la contraseña de Sudo en Ubuntu 20.04 LTS

Cómo usar declaraciones condicionales en Bash Scripts

Cómo cambiar la contraseña de sudo en Ubuntu

Cómo cambiar el tiempo de espera de la contraseña de Sudo en Ubuntu

Cómo ejecutar un script Bash