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=
이렇게 하면 후속 명령이 기록 파일에 기록되지 않습니다.