Создать временную пустую среду в Linux

Можно ли создать временную пустую среду для нового пользователя в командной консоли, например, Bash или Zsh?

Я имею в виду режим инкогнито в Chrome, который открывает изолированную среду, в которой все, что вы сделали, удаляется локально (без истории, без файлов cookie, без кэша и т. Д.). Это возможно в Linux Shell?

    Чтобы просто добавить очевидное (на данный момент это не было упомянуто), это является одним из намерений тюрем / контейнеров / зон, и хотя это может показаться излишним для непосвященных (я предполагаю, что ничего), это тривиально если кто-то уже использует их. (И если кто- то их не использует, попытка изобрести это колесо будет ужасно подвержена ошибкам.)

    Короче говоря, создайте экземпляр временного dockerа, сделайте все возможное, а затем удалите его. https://docs.docker.com/get-started/

    Смотрите также этот фон: https://blog.jessfraz.com/post/containers-zones-jails-vms/

    Вы можете использовать это, если вы просто хотите запустить программу без ваших файлов конфигурации, но вы уверены, что программа не является вредоносной и не пытается смотреть за пределы коробки.

    Некоторое время назад я написал кое-что, что настраивает временный каталог и запускает оболочку с минимальным окружением. Я использую это много раз в день, чтобы проверить свои решения вопросов для этого сайта.

    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 .

    Используйте снимок на виртуальной машине.

    1. Создайте виртуальную машину с необходимыми условиями.
    2. Создайте снимок виртуальной машины.
    3. Сделайте любой тест в вашей виртуальной машине.
    4. Восстановите снимок, удалив все изменения, которые вы сделали в системе.
    5. Перейти к 3.

    Если вам нужна полностью чистая shell без переменных или псевдонимов окружения, вы можете создать новую оболочку и набрать:

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

    Это в значительной степени удалит все, что можно удалить. Конечно, вы захотите установить PS1 на что-то другое, иначе вы не сможете определить, находитесь ли вы в кавычках или в командной строке.

    Примечание: это относится только к bash и zsh .