¿Hay algún método para verificar lo que realmente está ejecutando desde un script bash?
Digamos que su escritura del golpe está llamando a varios comandos (por ejemplo: tar
, mail
, scp
, mysqldump
) y que está dispuesto para asegurarse de que tar
es la real, verdadera tar
, que es determinable por el root
usuario sea el propietario del archivo y directorio padre y el único que tiene permiso de escritura y no algunos /tmp/surprise/tar
con www-data
o apache2
siendo el dueño.
Claro que sé sobre PATH
el medio ambiente, tengo curiosidad por saber si esto se puede verificar adicionalmente desde un script bash en ejecución y, de ser así, ¿cómo exactamente?
Ejemplo: (pseudocódigo)
tarfile=$(which tar)
isroot=$(ls -l "$tarfile") | grep "root root"
#and so on...
which
no decir correctamente qué tar
hará, como respondió xhienne, ls
podría ser pirateado para devolver información falsa sobre el (los) archivo (s), si corresponde. También grep
podría ser pirateado para devolver información falsa; eso podría evitarse mediante el uso de la coincidencia de shell, pero luego se podría piratear shell. En type
primer lugar, se podría piratear Shell para obtener resultados incorrectos , o reemplazarlo por completo, ya que la capacidad de reemplazo del shell fue una innovación importante de Unix en comparación con los sistemas operativos de 50 años. Ver la dirección de Turing de 1984 de Ken Thompson. Son tortugas hasta el fondo.
TE
), que tiene una base de datos con firmas (es decir, más extensa que una suma de comprobación MD5. Cuando TE está activo Y hay un archivo en la base de datos, puede elegir si el programa se ejecuta o solo advierte que no coincide con la base de datos. Además, hay otras dos configuraciones: TEP
(RUTA de ejecución confiable) y TLP
(RUTA LIBrary confiable). Solo se pueden ejecutar programas en TEP y las bibliotecas solo se pueden cargar con el directorio está incluido en TLP. En Linux I hay algo llamado 'AppArmor' que puede ayudarte.