Tengo diferentes usuarios en /home . Cada usuario tiene un script start.sh y un start.conf para la configuración. También start.sh vinculado a /bin/nameoftheuser para facilitar la escritura (esto agrega más complejidad a la pregunta) .
Quiero limitar el script al usuario que trabaja con él. Lo que hago actualmente es esto:
cd if [ -f start.conf ]; then . start.conf else echo "start.conf not found" exit 2 fi if [ $(whoami) != $SCRIPTUSER ]; then echo "You are logged in with $(whoami). Only $SCRIPTUSER is allowed to use this script" exit 2 fi $SCRIPTUSER está definido en start.conf . Pero cuando inicio sesión con el usuario incorrecto y quiero usar start.sh , se incluye el archivo de configuración incorrecto para que la segunda parte del código no detecte el error.
Al final, cada usuario debe limitar su script start.sh exclusivamente a él y otros no deberían poder llamarlo por accidente.
Una idea podría ser comparar al propietario de $0 con el usuario actual. Pero cuando hay un enlace simbólico en /bin/nameoftheuser , el enlace simbólico es propiedad de root .
Incluir el archivo de configuración y leer qué usuario puede usarlo y compararlo $(whoami) , tampoco satisface. Esto se debe a que un usuario diferente podría llamarlo e incluir su propio start.conf