web-dev-qa-db-ja.com

Linuxで一時的に空の環境を作成する

Bashやzshのようなシェルで新しいユーザーのために一時的に空の環境を作成することは可能ですか?

Chromeのシークレットモードのように、実行したすべてがローカルで削除される分離された環境を開きます(履歴、Cookie、キャッシュなどはありません)。 Linuxシェル?

2
soner

明白なことを追加するだけです(現時点では言及されていません)、これは刑務所/コンテナ/ゾーンの意図の1つであり、初心者にはやり過ぎに見えるかもしれませんが(私は何も想定していません)、それは些細なことですすでにそれらを使用している場合。 (そして、それらを使用していない場合、このホイールを再発明しようとすると、ひどくエラーが発生しやすくなります。)

つまり、一時的なDockerインスタンスを作成し、最悪の場合を実行してから、後で削除します。 https://docs.docker.com/get-started/

この背景説明も参照してください: https://blog.jessfraz.com/post/containers-zones-jails-vms/

3
michael

これは、構成ファイルなしでプログラムを実行したいが、プログラムが悪意のあるものではなく、箱の外を見ようとしない場合に使用できます。

少し前に、一時ディレクトリを設定し、最小限の環境でシェルを起動する何かを書きました。私はこの多くの回を毎日使用して、このサイトの質問に対する解決策をテストしています。

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

FreeBSDユーザーはdevel/Shell-toolboxポートを使用することもできます。

このコマンドはShellと呼ばれ、一時的に使い捨ての作業ディレクトリを作成します。オプションで別のディレクトリの内容が事前に入力され、その中でシェルが起動します。シェルセッションが終了すると、一時ディレクトリは破棄されます(使用されるコマンドラインフラグによって異なります)。

これは、ユーザーのログインシェル以外の別のシェルを起動するためにも使用できます。

一時ユーザーは作成されませんが(管理者権限が必要になるため)、HOME変数を一時ディレクトリに設定します。つまり、$HOMEまたは~への参照はすべて一時ディレクトリに解決されます。ユーザーの「本当の家」ではありません。システムの残りの部分が保護されているという意味では、これはnot「安全な」環境ですが、使い捨てディレクトリにインタラクティブなシェルを提供します作成されたファイルとディレクトリは、通常のシェル環境からの影響を最小限に抑えて終了するとクリーンアップされます。

例:

[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ドキュメント を参照してください。

1
Kusalananda

仮想マシンでスナップショットを使用します。

  1. 必要な前提条件を備えた仮想マシンを作成します。
  2. VMのスナップショットを作成します。
  3. VMでテストを実行します。
  4. スナップショットを復元し、システムに加えた変更をすべて削除します。
  5. 3に進みます。
0
andcoz