GNU/Linux >> Znalost Linux >  >> Ubuntu

Jak zadat heslo pouze jednou do skriptu Bash, který potřebuje sudo?

Data

  • Chci, aby uživatelé operátora na tomto počítači připojovali své vlastní sdílené soubory CIF
  • sudoers soubor již obsahuje /bin/mount -t cifs //*/* /media/* -o username=* příkaz pro všechny operátory
  • Chci, aby uživatelé připojili cifs sdílet prostřednictvím skriptu zadáním hesla pouze jednou, nikoli dvakrát.
  • Heslo sudo a heslo CIF jsou totožné.

Co již mám

Tento skript funguje:

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

ale vyžaduje, aby uživatelé zadali stejné heslo dvakrát!

  • Jednou pro sudo
  • Jednou pro samotný držák

To by také fungovalo:

#!/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'

to by ale vyžadovalo, abych všem uživatelům operátora umožnil sudo sh (hlavní bezpečnostní problém)

Otázka

Jak připojit sdílení CIF v bash ¹ bez zadání sh v sudoers soubor ani vytvoření trvalého/dočasného souboru???

Poznámka 1: no python, perl, C, Go, … please?
Poznámka 2: Vím, že mohu odstranit heslo pomocí sudoers soubor, ale Snažím se zpřísnit zabezpečení, nikoli ho uvolnit, aniž bych se vzdal pohodlí…

Přijatá odpověď:

Místo toho byste měli přimět uživatele, aby zavolal pomocí sudo jako sudo script . stačí zkontrolovat, zda je skript spuštěn jako root, pokud ne, požádejte ho

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

Nepokoušejte se zachytit hesla svých uživatelů.


Ubuntu
  1. Jak ladit Bash skript?

  2. Jak přidat uživatele Unix/linux do skriptu Bash?

  3. Jak se ujistit, že běží pouze jedna instance Bash skriptu?

  1. Jak odstranit požadavek na heslo Ubuntu?

  2. Automatické potvrzení při spouštění skriptů Bash?

  3. Bash Script - Jak číst uživatelský vstup

  1. Jak používat šifrované heslo ve skriptu Linux Bash Shell

  2. Jak změnit časový limit hesla Sudo

  3. Jak spustit bash skript?