Cuando inicio sesión a través de ssh en un servidor Linux (Ubuntu), noto que todos los comandos bash ejecutados por otros usuarios en el servidor se guardan en el historial de comandos. ¿Existe alguna forma que me permita ocultar los comandos que escribí en la línea de comandos a otros usuarios del servidor?
Respuesta1
Hay muchas formas de ocultar el historial de comandos, pero es una mala idea desactivarlo por completo, ya que es muy útil. Aquí hay tres buenas maneras de apagarlo temporalmente.
La solución más rápida: Tipo
unset HISTFILE
Eso evitará que todos los comandos ejecutados en la sesión de inicio de sesión actual se guarden en el archivo .bash_history cuando cierre la sesión. Tenga en cuenta que HISTFILE se restablecerá la próxima vez que inicie sesión, por lo que el historial se guardará como de costumbre. Además, tenga en cuenta que esto eliminatodocomandos de la sesión, incluidos los que se ejecutaron antes de escribir unset HISTFILE, que pueden no ser los que desea. Otra desventaja es que no puedes estar seguro de haberlo hecho bien hasta que cierres la sesión, ya que bash aún te permitirá usar la flecha hacia arriba para ver los comandos anteriores.
Mejor solución: escriba un espacio antes de un comando
Pruébelo y luego presione la flecha hacia arriba para ver si se agregó a su historial. Algunos sitios ya lo tienen configurado para que dichos comandos no se guarden. Si no funciona, agregue la línea
export HISTCONTROL=ignoreboth
a su archivo .bashrc. Cuando inicie sesión en el futuro, los comandos que comiencen con un espacio se olvidarán inmediatamente.más fácil de recordar: Tipo
sh
Eso iniciará una subcapa con la shell Bourne original. Cualquier comando escrito en él (hasta que usted
exit
) no se guardará en su historial. Cualquiera que mire su archivo de historial podrá ver que ejecutó sh (lo cual es sospechoso), pero no verá lo que ejecutó después de eso.
Hay muchas otras formas de hacer esto. Incluso puedes decirle a bash qué comandos nunca recordar (HISTIGNORE). Consulte la página de manual de bash(1) y busque HIST para ver muchas posibilidades.
Respuesta2
El historial de la línea de comando para bash
las sesiones de shell se almacena en el ~/.bash_history
archivo. Si este archivo no existe, se crea sin permisos de lectura para otros usuarios.
Puede cambiar la cantidad de comandos que bash
se guardan en este archivo configurando la HISTFILESIZE
variable de entorno. Establecerlo en cero truncará el archivo histórico a tamaño cero. El valor predeterminado es 500. Desarmar la variable HISTFILE
( unset HISTFILE
) también evitará que se almacenen comandos en el archivo histórico.
Sin embargo, la configuración actual del servidor que estás describiendo (en los comentarios) es simplemente incorrecta.
No debería haber ningún motivo para permitir que varios usuarios inicien sesión y utilicen un shell interactivo en la root
cuenta. ¡Considere utilizar sudo
en su lugar varias cuentas de usuario privadas!
El historial de comandos de root
, ya sea para sesiones interactivas o cuando se usa sudo
, es extremadamente valioso.especialmentesi tiene varios usuarios con root
acceso al sistema.
Tu equipo querrá saberexactamenteroot
Es mejor investigar y solucionar lo que el usuario ha estado haciendo desde cualquier configuración errónea u otro percance realizado por este usuario. Con un historial de línea de comando, es mucho más fácil encontrar por qué algo salió mal. La sudo
utilidad además registra cada invocación a la función syslog por este motivo, con marcas de tiempo y con una línea de comando completa, y con el nombre de usuario del usuario que ejecuta sudo
.
EDITAR: Recientemente comenzamos a tener problemas con una red de fibra en un grupo de máquinas Linux en el trabajo. Resultó que algunos controladores fueron reemplazados con la versión incorrecta cuando un usuario tonto con sudo
acceso realizó una actualización de paquete descuidada. Pudimos encontrar esto mirando los registros del sistema y las sudo
marcas de tiempo que contienen. ¡El "usuario tonto" resultó ser nadie más que yo!
Respuesta3
Emita el siguiente comando después de iniciar sesión:
HISTFILE=
Esto bloqueará el registro de cualquier comando posterior en el archivo de historial.