Linuxで一時的な空の環境を作成する[閉じる]

Linuxで一時的な空の環境を作成する[閉じる]

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

つまり、Chromeのシークレットモードと同様に、ユーザーが行ったすべての操作がローカルで削除される(記録なし、Cookieなし、キャッシュなしなど)、孤立した環境が開きます。 Linuxシェルでこれは可能ですか?

答え1

(まだ言及されていない)明白な点を追加すると、これは刑務所/コンテナ/ゾーンの意図の1つであり、一般人にとっては過剰に見えるかもしれませんが(ないと仮定します)、誰かがすでに使用している場合はマイナーです。 (一つならいいえそれらを使用してホイールを再発明しようとすると、エラーが発生しやすいです。 )

つまり、一時的なDockerインスタンスを作成し、最善を尽くしてから削除します。https://docs.docker.com/get-started/

次の背景情報も参照してください。https://blog.jessfraz.com/post/containers-zones-jails-vms/

答え2

設定ファイルなしでプログラムを実行したいのですが、プログラムが悪意のあるものではなく、箱から出ようとしないことを信頼している場合は、このオプションを使用できます。

私は一時ディレクトリを設定し、最小限の環境でシェルを起動することをしばらく前に書きました。私はこれを使うたくさんこのサイトの問題に対する解決策を1日に数回テストします。

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

関連情報