시크릿 세션을 열 수 bash
있습니까?
예를 들어 명령에 암호를 입력해야하고 기록에 암호 bash
를 추가 하고 싶지 않은 경우 .
secrectcommand
배쉬 히스토리에 있지 않습니다.
시크릿 세션을 열 수 bash
있습니까?
예를 들어 명령에 암호를 입력해야하고 기록에 암호 bash
를 추가 하고 싶지 않은 경우 .
secrectcommand
배쉬 히스토리에 있지 않습니다.
답변:
당신이 원하는 때 bash
당신의 명령을 로깅 중지, 단지 설정 해제 HISTFILE
변수를 :
HISTFILE=
모든 추가 명령은 더 이상에 기록되지 않아야합니다 .bash_history
.
반면에 실제로 명령에 대한 인수로 암호를 제공하는 경우 이미 잘못된 일이 있습니다. .bash_history
세계가 읽을 수 없으므로이 상황에서 가장 큰 위협은 아닙니다.
ps
그리고 /proc
큰 문제입니다. 시스템의 모든 사용자는 현재 모든 명령으로 실행중인 명령을 볼 수 있습니다 . 따라서 암호를 명령 줄 인수로 전달하는 것은 본질적으로 안전하지 않습니다 . 환경 변수 또는 구성 파일 (600을 chmodded)을 사용하여 비밀번호를 안전하게 제공하십시오.
unset HISTFILE
비슷한 효과가 있습니다. 나는 이것을위한 기능을 가지고있다 : n() { HISTFILE=; PS1="~${PS1#\~}"; }
. 그렇게하면 내가 "시크릿 모드"인지 아닌지를 명확하게 볼 수 있습니다.
HISTCONTROL=ignorespace
이 옵션이 아직 설정되어 있지 않으면 bash
필요한 것일 수 있습니다. 모든 기록을 비활성화하는 것보다 덜 쇠약합니다. 이 세트를 사용하면 공백 문자로 시작하는 명령 행이 내역 목록에 저장되지 않습니다.
이러한 관련 링크에서 :
기록을 일시적으로 비활성화 할 수 있습니다. set +o history
set +o history
...
set -o history
히스토리 사용 안함과 설정 해제 사이에는 차이가 있습니다 HISTFILE
.
HISTFILE=
date
ls
HISTFILE=~/.bash_history
history
다음과 같이 출력합니다 :
84 HISTFILE=
85 date
87 ls
88 HISTFILE=~/.bash_history
89 history
즉, 모든 명령이 기록 목록에 저장됩니다. 입력 exit
하여 저장하십시오.
그러나
set +o history
date
ls
set -o history
history
다음과 같이 출력합니다 :
115 set +o history
116 history
요약 :
set +o history
긴 세션.
HISTCONTROL
그리고 <space>command
다른 시간에.
cat | bash
bash
프롬프트, 명령 줄 편집 (행 규칙의 내부 편집기 만) 또는 기록없이 비 대화식을 실행합니다 .