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 filey establecer los permisos a 700
chmod 700 filelogrará 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
$EUIDmuestra el UID efectivo en el que se ejecuta el script, si desea asegurarse de que el script se ejecute como root, verifique si$EUIDcontiene 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
echolínea consudo "$0" "$@"y reemplazandoexit 2conexit $?.Una manera simple de hacer que el script solo sea ejecutable por root es comenzar el script con la línea:
#!/bin/su rootfuente
"#! / 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