Linux(Ubuntu) 서버에서 ssh를 통해 로그인을 하면, 해당 서버에서 다른 사용자가 실행한 bash 명령이 모두 명령 기록에 저장되는 것을 볼 수 있습니다. 서버의 다른 사용자가 명령줄에 입력한 명령을 숨길 수 있는 방법이 있습니까?
답변1
명령 기록을 숨기는 방법에는 여러 가지가 있지만 매우 유용하므로 기록을 모두 끄는 것은 좋지 않습니다. 일시적으로 끄는 세 가지 좋은 방법은 다음과 같습니다.
가장 빠른 솔루션: 유형
unset HISTFILE
그러면 현재 로그인 세션에서 실행되는 모든 명령이 로그아웃할 때 .bash_history 파일에 저장되지 않습니다. 다음에 로그인할 때 HISTFILE이 재설정되므로 기록은 평소대로 저장됩니다. 또한 이렇게 하면 제거됩니다.모두unset HISTFILE을 입력하기 전에 실행되는 명령을 포함하여 세션의 명령은 원하는 것이 아닐 수 있습니다. 또 다른 단점은 bash에서 여전히 위쪽 화살표를 사용하여 이전 명령을 볼 수 있기 때문에 로그아웃할 때까지 제대로 수행했는지 확신할 수 없다는 것입니다.
최고의 솔루션: 명령 앞에 공백을 입력합니다.
시도해 보고 위쪽 화살표를 눌러 기록에 추가되었는지 확인하세요. 일부 사이트에서는 해당 명령이 저장되지 않도록 이미 설정되어 있습니다. 작동하지 않으면
export HISTCONTROL=ignoreboth
.bashrc 파일에 해당 행을 추가하십시오. 앞으로 로그인할 때 공백으로 시작하는 명령은 즉시 잊혀집니다.가장 기억하기 쉬운: 유형
sh
그러면 원래 Bourne 쉘로 서브쉘이 시작됩니다. 여기에 작성된 모든 명령은 (당신이 전까지
exit
) 기록에 저장되지 않습니다. 기록 파일을 보는 사람은 누구나 sh를 실행했다는 사실을 볼 수 있지만(의심스럽습니다) 그 이후에 무엇을 실행했는지는 알 수 없습니다.
이를 수행하는 다른 방법도 많이 있습니다. 기억하지 말아야 할 명령을 bash에 알려줄 수도 있습니다(HISTIGNORE). bash(1) 매뉴얼 페이지를 참조하고 HIST를 검색하여 많은 가능성을 확인하십시오.
답변2
셸 세션 에 대한 명령줄 기록이 파일 bash
에 저장됩니다 ~/.bash_history
. 이 파일이 없으면 다른 사용자에게 읽기 권한이 없는 파일이 생성됩니다.
bash
환경 변수를 설정하여 이 파일에 저장되는 명령 수를 변경할 수 있습니다 HISTFILESIZE
. 0으로 설정하면 기록 파일이 0 크기로 잘립니다. 기본값은 500입니다. HISTFILE
( unset HISTFILE
) 변수를 설정하지 않으면 명령이 기록 파일에 저장되지 않습니다.
그러나 귀하가 설명하는(주석에서) 서버의 현재 설정은 단순히 잘못되었습니다.
여러 사용자가 로그인하여 계정에서 대화형 셸을 사용하도록 허용할 이유가 없어야 합니다 root
. sudo
대신 여러 개인 사용자 계정을 사용하는 것을 고려해 보세요 !
root
대화형 세션이든 을 사용할 때든 에 대한 명령 기록은 sudo
매우 중요합니다.특히root
시스템에 액세스할 수 있는 사용자가 여러 명인 경우 .
당신의 팀은 알고 싶어할 것입니다정확히이 사용자가 수행한 잘못된 구성이나 기타 사고 이후 사용자가 무엇을 root
했는지 가장 잘 조사하고 수정해야 합니다. 명령줄 기록을 사용하면 문제가 발생한 이유를 훨씬 쉽게 찾을 수 있습니다. sudo
이러한 이유로 유틸리티는 타임스탬프, 전체 명령줄, 실행하는 사용자의 사용자 이름을 사용하여 syslog 기능에 대한 모든 호출을 추가로 기록 합니다 sudo
.
편집하다: 최근 직장에서 Linux 시스템 클러스터의 파이버 네트워크에 문제가 발생하기 시작했습니다. sudo
액세스 권한이 있는 어리석은 사용자가 부주의하게 패키지를 업그레이드했을 때 일부 드라이버 또는 다른 드라이버가 잘못된 버전으로 교체된 것으로 나타났습니다 . 우리는 시스템 로그와 sudo
그 안의 타임스탬프를 살펴봄으로써 이를 찾을 수 있었습니다. 그 "어리석은 사용자"는 다름 아닌 나였습니다!
답변3
로그인 후 다음 명령을 실행하십시오.
HISTFILE=
이렇게 하면 후속 명령이 기록 파일에 기록되지 않습니다.