Estoy tratando de escribir un script bash (en Ubuntu) que respalde un directorio usando tar.
¿Cómo puedo hacer una verificación en el script para que solo se pueda ejecutar como root (o con sudo)?
Por ejemplo, si un usuario ejecuta el script, debe decir que este script debe ejecutarse con privilegios de sudo y luego salir. Si el script se ejecuta como root, continuará más allá de la comprobación.
Sé que tiene que haber una solución fácil, simplemente no he podido encontrarla buscando en Google.
bash
scripting
root
permissions
Cory Plastek
fuente
fuente
Supongo que sabes que al cambiar la propiedad a root
chown root:root file
y establecer los permisos a 700
chmod 700 file
logrará lo mismo, sin la sugerencia de ejecutar como sudo.
Pero publicaré esta respuesta para completar.
fuente
sudo git add <file>
¿Cuál es su objetivo aquí, informar al usuario que debe ejecutar el script como root o como algún tipo de precaución de seguridad?
Si solo desea informar al usuario, cualquiera de las sugerencias de UID está bien, pero son tan útiles como los neumáticos en un caballo como precaución de seguridad: no hay nada que impida que un usuario copie el script, sacando la declaración if, y ejecutarlo de todos modos.
Si se trata de un problema de seguridad, el script debe establecerse en 700, propiedad de root: root, para que ningún otro usuario pueda leerlo o ejecutarlo.
fuente
Puedes usar el comando whoami también.
fuente
La variable bash
$EUID
muestra el UID efectivo en el que se ejecuta el script, si desea asegurarse de que el script se ejecute como root, verifique si$EUID
contiene el valor 0 o no:Esto es mejor que la solución con
/usr/bin/id
(¡para bash scripts!) Porque no requiere un comando externo.fuente
echo
línea consudo "$0" "$@"
y reemplazandoexit 2
conexit $?
.Una manera simple de hacer que el script solo sea ejecutable por root es comenzar el script con la línea:
#!/bin/su root
fuente
"#! / bin / su root" permite a los usuarios en modo superusuario ejecutar el script sin usar la contraseña de root. Si desea que los superusuarios ejecuten el script con resultados como root, esto lo hace.
fuente