시크릿 bash 세션을 어떻게 열 수 있습니까?


50

시크릿 세션을 열 수 bash있습니까?

예를 들어 명령에 암호를 입력해야하고 기록에 암호 bash를 추가 하고 싶지 않은 경우 .


9
cat | bashbash프롬프트, 명령 줄 편집 (행 규칙의 내부 편집기 만) 또는 기록없이 비 대화식을 실행합니다 .
Stéphane Chazelas

명령 앞에 공백을 씁니다 : 'secretcommand'. 이제 secrectcommand배쉬 히스토리에 있지 않습니다.
Martin Thoma

답변:


79

당신이 원하는 때 bash당신의 명령을 로깅 중지, 단지 설정 해제 HISTFILE변수를 :

HISTFILE=

모든 추가 명령은 더 이상에 기록되지 않아야합니다 .bash_history.

반면에 실제로 명령에 대한 인수로 암호를 제공하는 경우 이미 잘못된 일이 있습니다. .bash_history세계가 읽을 수 없으므로이 상황에서 가장 큰 위협은 아닙니다.

ps그리고 /proc큰 문제입니다. 시스템의 모든 사용자는 현재 모든 명령으로 실행중인 명령을 볼 수 있습니다 . 따라서 암호를 명령 줄 인수로 전달하는 것은 본질적으로 안전하지 않습니다 . 환경 변수 또는 구성 파일 (600을 chmodded)을 사용하여 비밀번호를 안전하게 제공하십시오.


5
저는 10 년 이상 Linux를 사용해
왔으며이

3
unset HISTFILE비슷한 효과가 있습니다. 나는 이것을위한 기능을 가지고있다 : n() { HISTFILE=; PS1="~${PS1#\~}"; }. 그렇게하면 내가 "시크릿 모드"인지 아닌지를 명확하게 볼 수 있습니다.
Lekensteyn

13
단순히 질문에 대답하기보다는 실제 문제를 해결하기위한 +1 신임 정보를 전달하기위한 추가 옵션은 Unix 도메인 소켓입니다.
Nathan Osman

1
또 다른 유용한 팁은 "HISTFILE ="앞에 공백을 두는 것입니다. 이전에 공백이있는 명령은 기록되지 않습니다.
FUD

이것에 대한 또 다른 멋진 점은 해당 창의 이전 명령조차도 무시한다는 것입니다. P : 그것은에 시크릿 기존 세션을 돌려 같다
Uzumaki D. 이치고를

37
HISTCONTROL=ignorespace

이 옵션이 아직 설정되어 있지 않으면 bash필요한 것일 수 있습니다. 모든 기록을 비활성화하는 것보다 덜 쇠약합니다. 이 세트를 사용하면 공백 문자로 시작하는 명령 행이 내역 목록에 저장되지 않습니다.

이러한 관련 링크에서 :

bash에 왜 HISTCONTROL = ignorespace 옵션이 있습니까?

bash가 공백으로 시작하는 명령을 저장하지 않는 이유는 무엇입니까?


6
이것은 종종 기본값입니다.
Ángel

3

기록을 일시적으로 비활성화 할 수 있습니다. 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다른 시간에.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.