내 bash 기록이 예기치 않게 삭제되는 원인은 무엇입니까?


16

오늘 나는 내 배쉬 기록이 완전히 지워지는 것을 알았다. 파일을 실행 history -c하거나 삭제 하지 않았습니다 .bash_history. .bash_history파일 을 삭제하고 history -cbash 기록 을 지우려면 어떻게해야합니까?


2
예를 들어서 발생했을 수 있습니다 >.bash_history. 어쩌면 누군가 귀하의 계정에 있고 그의 흔적을 숨기려고 시도했을 수 있습니다. 를 last통해 검색 /var/log/auth.log하여 시스템에 따라 비정상적인 로그인 시간을 확인하십시오 (시스템에 따라 다름).
ott--

답변:


17

여러 개의 bash 인스턴스를 동시에 닫을 때 기록이 지워질 수있는 알려진 경쟁 조건이 있습니다. 이것은 bash 실행 기록 파일이 기록 될 때 사용 된 잠금이 없기 때문에 발생합니다.

Chet Ramey (현재 배쉬 관리자)는 이 문제의 조건을 잘 요약 했습니다.

현재 (bash-4.3-devel) 코드는 오류가 없다고 가정하면 (lib / readline / histfile.c : history_do_write ()) 다음과 같이 작동합니다.

  • 이름 바꾸기 (Histfile, histfile ~)
  • O_CREAT | O_TRUNC로 파일 열기
  • 모든 히스토리 데이터를 보유 할만큼 큰 malloc 버퍼
  • 한 번의 write (2) 호출로 모든 히스토리 항목 쓰기
  • 파일 닫기
  • 연결 해제 (히스 파일 ~)

bash-4.2 코드는 히스토리 파일을 백업하지 않는다는 점을 제외하고 동일한 방식으로 작동합니다. 구성에서와 같이 histappend가 설정되지 않았다고 가정 할 때 각 쉘은 종료 될 때 동일한 작업을 수행합니다.

히스토리 파일이 길이가 0이되는 몇 가지 방법이 있습니다. malloc이 실패하거나 쓰기가 실패 할 수 있습니다. bash-4.2에서는 그 시점에서 잘린 기록 파일에 대한 작업을 수행하기에 너무 늦었습니다. bash-4.3에서는 이전 기록 파일이 복원됩니다.

bug-bash 의이 메일 링리스트 스레드 에는 문제점, 가능한 해결책 및이를 둘러싼 우려 사항에 대한 적절한 설명이 포함되어 있습니다.

다른 가능성도 있습니다 :

  • 어느 시점에서 HISTSIZE또는 HISTFILESIZE은 0으로 설정되었습니다.
  • 어느 시점에서, 당신의 readline history-size은 0으로 설정되었습니다
  • 누군가가 의도적으로 또는 실수인지, bash는 역사를 닦아 (경유 > "$HISTFILE"또는 이와 유사한 것)

후자의 경우 다른 사람이 귀하의 계정에 액세스하지 않았고 자신의 트랙을 원치 않는 방식으로 숨기려고하는지 확인하고 싶을 수 있습니다. 한 번 봐 가지고 last, /var/log/auth(또는 /var/log/secureCentOS는 / RHEL에)을, 당신이 그것을있는 경우, 모든 프로세스는 회계 및 / 또는 감사 소프트웨어는 당신이 설치되어 있습니다.


1

실수로 bash 기록을 삭제 한 방법 :

나는 첫 번째 원칙에서 내 자신의 대체 터미널 readline 스크립트를 굴려왔다 : https://tiswww.cwru.edu/php/chet/readline/rluserman.html

그런 다음 터미널에서 테스트합니다. GNU Readline에는 히스토리 크기 및 히스토리 보존 명령이 내장되어 있으므로 hist 크기를 기본값으로 지정할 수 있으므로 모든 히스토리가 사라집니다.

메모리에 남은 경우 히스토리 복구 :

다시 부팅하기 전에 또는 터미널을 열어 놓기 전에 열어 놓은 경우 메모리에서 기록을 찾을 수 있습니다. history | cut -c 8- > histback_user1.txt열려있는 모든 터미널과 모든 사용자에 대해 실행하십시오 . 그 확장 된 역사를 가진 파일을 생성하는 경우, 당신은 대체 할 수 있습니다 ~/.bash_historyhistback_user1.txt. 또한 최근에 시스템에 로그인 한 모든 사용자의 이력과 루트 이력을 확인하십시오. 여러 상황에서 실수로 bash 기록을 지우는 것은 쉽습니다. 따라서 기록 손실을 방지하려면 매일 백업 스크립트가 필요합니다.


감사합니다 . 도대체 무슨 일이 있었는지 모르겠지만 어제 재설정되어 지금까지 눈치 채지 못했습니다. 그러나 운이 좋으면 터미널 창을 열지 않고 10 (!)을 열었습니다. 이제 다 괜찮아
Marc.2377
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.