Linux에서 임시 빈 환경 만들기 [닫기]

Linux에서 임시 빈 환경 만들기 [닫기]

Bash 또는 zsh와 같은 셸에서 새 사용자를 위한 임시 빈 환경을 만드는 것이 가능합니까?

즉, Chrome의 시크릿 모드와 마찬가지로 사용자가 수행한 모든 작업이 로컬에서 삭제되는(기록 없음, 쿠키 없음, 캐시 없음 등) 격리된 환경이 열립니다. Linux 쉘에서 이것이 가능합니까?

답변1

(아직 언급되지 않은) 명백한 점을 추가하자면, 이것은 감옥/컨테이너/구역의 의도 중 하나이며, 일반인에게는 과잉으로 보일 수 있지만(없는 것으로 가정합니다) 누군가 이미 사용하고 있다면 사소한 일입니다. (하나라면아니요그것들을 사용하여 바퀴를 재발명하려고 하면 오류가 발생하기 쉽습니다. )

즉, 임시 Docker 인스턴스를 생성하고 최선을 다한 다음 삭제하십시오.https://docs.docker.com/get-started/

다음 배경 정보도 참조하세요.https://blog.jessfraz.com/post/containers-zones-jails-vms/

답변2

구성 파일 없이 프로그램을 실행하고 싶지만 프로그램이 악성이 아니며 상자 밖으로 나가려고 하지 않을 것이라고 신뢰하는 경우 이 옵션을 사용할 수 있습니다.

나는 임시 디렉토리를 설정하고 최소한의 환경을 사용하여 쉘을 시작하는 내용을 얼마 전에 썼습니다. 나는 이것을 사용한다많은이 사이트의 문제에 대한 솔루션을 하루에 여러 번 테스트합니다.

https://github.com/kusalananda/shell-toolbox

이 포트는 FreeBSD 사용자도 사용할 수 있습니다 devel/shell-toolbox.

이 명령이 호출되어 shell임시, 일회성 작업 디렉토리를 생성하고 선택적으로 다른 디렉토리의 내용으로 미리 채워지며 그 안에서 쉘을 시작합니다. 쉘 세션이 종료되면 임시 디렉토리가 해제됩니다(사용된 명령줄 플래그에 따라 다름).

이는 사용자의 로그인 쉘이 아닌 다른 쉘을 시작하는 데에도 사용할 수 있습니다.

임시 사용자를 생성하지는 않지만(관리 권한이 필요하므로) 변수를 HOME임시 디렉토리로 설정합니다. 즉, 사용자의 "실제 홈 디렉토리"가 아닌 임시 디렉토리에 대한 참조 $HOME또는 해석이 이루어집니다. ~. 이것은아니요"보안" 환경은 시스템의 나머지 부분을 보호하지만 일반 쉘 환경에 최소한의 영향을 미치면서 생성된 파일과 디렉토리가 완료 시 정리되는 일회용 디렉토리에 대화형 쉘을 제공합니다.

예:

[box] $ shell -s "$HOME/skel" zsh
shell: info: Copying /home/kk/skel into /tmp_mfs/shell-zsh.5IAh9F2B
shell: info: Starting /usr/local/bin/zsh in /tmp_mfs/shell-zsh.5IAh9F2B
$ ls -a
.          .Xdefaults .cvsrc     .mailrc    .vimrc
..         .cshrc     .login     .profile   .zshrc
$ echo "$HOME"
/tmp_mfs/shell-zsh.zqHtjz49
$ env
HOME=/tmp_mfs/shell-zsh.zqHtjz49
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/local/bin
PS1=$
SHELL=/usr/local/bin/zsh
TERM=screen
LOGNAME=kk
SHLVL=1
PWD=/tmp_mfs/shell-zsh.zqHtjz49
OLDPWD=/tmp_mfs/shell-zsh.zqHtjz49
_=/usr/bin/env
$ exit
shell: info: Removing /tmp_mfs/shell-zsh.5IAh9F2B

chroot그런 일은 일어나지 않을 것입니다 . 기본적으로 영광스러운 래퍼입니다 env -i.

바라보다shell선적 서류 비치.

답변3

가상 머신에서 스냅샷을 사용하세요.

  1. 필수 구성 요소를 갖춘 가상 머신을 만듭니다.
  2. 가상 머신의 스냅샷을 생성합니다.
  3. 가상 머신에서 테스트를 수행합니다.
  4. 스냅샷을 복원하고 시스템에 대한 수정 사항을 제거합니다.
  5. 3으로 가세요.

답변4

모든 환경 변수나 별칭 없이 완전히 깨끗한 셸을 원한다면 새 셸을 생성하고 다음을 입력할 수 있습니다.

$ unalias -a
$ unset `set|grep '^[A-Z_a-z].*=' |sed 's|=.*$||g'`

이렇게 하면 삭제할 수 있는 거의 모든 항목이 삭제됩니다. 물론 PS1을 어떤 값으로 설정해야 합니다. 그렇지 않으면 현재 참조 창에 있는지 명령 프롬프트에 있는지 알 수 없습니다.

bash참고: 이는 및 에만 적용됩니다 zsh.

관련 정보