Opción 1: utilizar el shell scriptcompilador para convertir el script en un ejecutable binario. El binario seguirá conteniendo el script (de forma muy oscura), pero a diferencia de un script normal, puedes establecer los permisos del archivo para que la cuenta que los niños están usando no tenga acceso de lectura a él (sólo de ejecución).
Opción 2: Encriptar el código seguro usando las "contraseñas", almacenar el código encriptado en el script, y usar lo que los niños introduzcan para desencriptarlo. Aquí hay un proceso de encriptación que podrías usar con tres contraseñas, "sekrit1", "hunter2", y "p4ssw0rd3":
$ echo '12 left, 25 right, 9 left' | openssl enc -aes256 -base64 -pass "pass:sekrit1|hunter2|p4ssw0rd3"
U2FsdGVkX18IFQAaSjEv2AJJ16z6wjROjcHiqHWGvji3MEsmcHwPgu3MQeh2O+c1
Luego en el script:
read -p "Enter the first password: " pass1
read -p "Enter the second password: " pass2
read -p "Enter the third password: " pass3
encrypted="U2FsdGVkX18IFQAaSjEv2AJJ16z6wjROjcHiqHWGvji3MEsmcHwPgu3MQeh2O+c1"
if result=$(echo "$encrypted" | openssl enc -d -aes256 -base64 -pass "pass:$pass1|$pass2|$pass3" 2>/dev/null); then
echo "The safe combination is $result"
else
echo "At least one password is wrong!"
fi
Si quieres dar a los niños información contraseña por contraseña, podrías añadir la comprobación de los hashes de las contraseñas a medida que se introducen:
$ echo "sekrit1" | shasum
b19fb68c28bff07cf8fcc7c53ab48c5d6f41e993 -
En script:
read -p "Enter the first password: " pass1
if [ "$(echo "$pass1" | shasum)" = "b19fb68c28bff07cf8fcc7c53ab48c5d6f41e993 -" ]; then
echo "Correct so far..."
else
echo "Wrong!"
exit
fi
...etc
Por cierto, esta no es una forma realmente segura de almacenar contraseñas; los hashes de contraseñas seguros adecuados están diseñados para ser lentos y utilizar "sal". Pero esto debería ser lo suficientemente seguro para algunos niños.
0 votos
Si a alguien se le ocurre un título mejor para la pregunta, no dude en sugerirlo. En realidad, no tendréis ni idea de lo que pido hasta que leáis el post.
0 votos
Esto puede ser útil/relevante: unix.stackexchange.com/questions/34202/
0 votos
Ver unix.stackexchange.com/questions/19292/