Механизм шифрования:
использует значения по умолчанию Cryptsetup с LUKS для AES в режиме XTS_plain64, 256-битный ключ с хешированием пароля SHA1 проходит через 1 секунду PBKDF2, поэтому количество итераций зависит от вашего Сила процессора. Системная (/ или «корневая»), домашняя область и область подкачки объединены в один зашифрованный логический том. Загрузочный раздел должен быть отдельным в Linux FDE, независимо от того, какая конфигурация или дистрибутив, и для большинства он также должен быть незашифрованным (исключения: Arch и Gentoo), поэтому / boot открыт для злоумышленников с физическим доступом к компьютеру. Ubiquity создает загрузочный раздел ext2 размером около 250 МБ. [Источник - имеет хороший обзор]
blockquote>Поддерживаемые разрешения доступа в основном «заблокированы» и «разблокированы»; любой, у кого есть действительная фраза-пароль, может разблокировать и прочитать любой файл (при условии физического доступа = root-доступ).
Вы можете использовать аргументы -e
или -x
для запуска команды внутри недавно запущенного терминала, но это не совсем то, что вам нужно.
Два ответа, которые мне больше всего понравились, - это использовать expect
и , этот , где они рекомендуют использовать флаг --init-file
либо в шебанге, либо при выполнении терминала:
#!/bin/bash --init-file
commands to run
... и выполнить его как:
xterm -e /path/to/script
# or
gnome-terminal -e /path/to/script
# or
the-terminal -e bash --init-file /path/to/script/with/no/shebang
expect
, вероятно, лучшее решение (по причинам, которые я обрисую), за исключением того, что я не могу контролировать, установлено ли оно в моем целевая среда.
Проблема, с которой я столкнулся с bash --init-file
и gnome-terminal
--command
в качестве хака для решения этой проблемы, заключается в том, что оболочка не имеет доступа к STDIN при выполнении сценариев инициализации. Если, например, я хочу запустить что-то, что потребует ввода данных пользователем (ftp, telnet и т. Д.), Но потом оставить родительскую оболочку включенной, это не сработает; единственное исключение, которое я видел до сих пор, это ssh:
xterm -e /bin/bash --init-file <(echo 'ssh -X some-machine')
... но что мне нужно, сложнее, чем этот пример с игрушкой. В любом случае, я надеюсь, что материал --init-file
будет полезен всем, кто читает этот вопрос.
Ответ Ундрука хорош, но, возможно, немного тяжеловес для этой задачи.
Вот скрипт, который пишет скрипт на основе своих аргументов.
#!/bin/sh
# terminal-plus-command: start a subordinate terminal which runs
# the interactive shell after first running the command arguments
tmpscript=/tmp/tmpscript.$
echo "#!$SHELL" > $tmpscript
echo "$@" >> $tmpscript
echo exec "$SHELL" >> $tmpscript
chmod +x $tmpscript
gnome-terminal --command $tmpscript
rm -f $tmpscript
Если вы не занимались программированием оболочки, здесь, похоже, больше магии, чем есть. Сначала я назову временный файл для хранения скрипта, где $
- это идентификатор процесса оболочки, выполняющей этот скрипт. Метафора /tmp/something.$
используется в случае, если два экземпляра этого скрипта выполняются одновременно, они не будут пытаться использовать один и тот же временный файл.
Переменная $SHELL
установлена на имя оболочки, в которой выполняется скрипт. Если вы используете / usr / bin / bash, возможно, вы захотите использовать его и в мини-скрипте.
"$@"
является идиомой оболочки для «интерполировать все мои аргументы, цитируя их при необходимости». Этот специфический синтаксис заставляет
script.sh 'my file' your\ file
интерполировать аргументы как два элемента
"my file" "your file"
вместо четырех, которые $@
будут давать
"my" "file" "your" "file"
Последний В строках сценария gnome-терминал запускает мини-сценарий, а затем запускает интерактивную оболочку. Когда gnome-терминал завершает работу, временный скрипт удаляется, потому что мусор не охлаждается.
Последняя строка не является частью мини-скрипта, она показывает, что мини-скрипт работает. Если приведенный выше 11-строчный скрипт находится в файле с именем rt.sh
, то chmod
делает его исполняемым, а затем выполняется.
$ chmod +x rt.sh && ./rt.sh echo hello world
Результатом всего этого будет терминал гнома, который запускается, отображает
hello world
в первой строке и затем запускает интерактивную оболочку:
msw@myhost:~$
gnome-terminal -x sh -c "echo hello world; bash"
, о котором я не думаю, что вопрос задается.
– Nthalk
25.10.2019, 02:47
Предложение Эндрюка очень хорошо и работает для меня, однако команда жестко запрограммирована в скрипте, и если вы измените размер окна терминала, он не будет работать хорошо. Используя его код в качестве основы, я добавил возможность посылать сценарию myprompt команду в качестве аргумента, и этот скрипт правильно обрабатывает изменение размера окна терминала.
#!/usr/bin/expect
#trap sigwinch and pass it to the child we spawned
#this allows the gnome-terminal window to be resized
trap {
set rows [stty rows]
set cols [stty columns]
stty rows $rows columns $cols < $spawn_out(slave,name)
} WINCH
set arg1 [lindex $argv 0]
# Get a Bash shell
spawn -noecho bash
# Wait for a prompt
expect "$ "
# Type something
send $arg1
# Hand over control to the user
interact
exit
и запустите Терминал Gnome с:
gnome-terminal -e "~/bin/myprompt \"my text to be posted\""
Если я правильно понимаю, вы хотите, чтобы ваша первая строка ввода была предварительно заполнена содержимым, которое вы передаете в командной строке gnome-терминала.
Я не знаю, как именно это сделать с помощью bash, но вот кое-что, что близко. В вашем ~/.bashrc
добавьте следующую строку в самом конце:
history -s "$BASH_INITIAL_COMMAND"
Запустите gnome-terminal -x env BASH_INITIAL_COMMAND='my text to be posted' bash
и нажмите Up kbd> в приглашении, чтобы вызвать текст.
Также обратите внимание, что если вы поставите set -o history
с последующими комментариями в конце вашего .bashrc
, они будут внесены в историю при запуске bash, так что вы можете использовать их в качестве основы для редактирования, достигнув их с помощью Up kbd> и удаление начальных #
.
Вы можете сделать это с ожидайте ( установить ). Создайте и сделайте исполняемый файл ~/bin/myprompt
:
#!/usr/bin/expect -f
# Get a Bash shell
spawn -noecho bash
# Wait for a prompt
expect "$ "
# Type something
send "my text to be posted"
# Hand over control to the user
interact
exit
и запустите Gnome Terminal с:
gnome-terminal -e ~/bin/myprompt