Хост имеет полный контроль над гостем. Таким образом, если существует вредоносная работа хоста, гость скомпрометирован также.
На практике большая часть вредоносного программного обеспечения там только пытается заразить стандартное программное обеспечение, такое как сама ОС, веб-браузеры, медиаплееры, и т.д. Виртуальные машины являются таким редким случаем, который обычно не беспокоят вредоносные авторы, особенно учитывая это разнообразие систем, которые могли работать в VM, означает большую работу для вредоносного автора.
Однако это может измениться, поскольку виртуальные машины распространены больше. Например, вставка копии сделала бы относительно простой вектор заражения (Вы думаете, что копируете некоторый невинный текст в VM, но вредоносное программное обеспечение заставляет Вас на самом деле вставить команду, которая открывает логические элементы; также, полагайте, что путем шпионажа буфера обмена хоста, вредоносное программное обеспечение имеет доступ к чему-либо Вы вставка копии даже из VM к в VM). И если Вы - жертва целенаправленного нападения, а не некоторого общего вредоносного программного обеспечения, все ставки выключены.
Если у Вас есть сетевой канал между хостом и гостем, вредоносное программное обеспечение может попытаться, распространяют тот путь, как он был бы к любой другой машине в Вашей локальной сети.
Добавьте это к Вашему zsh
файл конфигурации:
function pathargs {
local P=$1; local L=${#P}; shift
local N=1; while [[ $N -le $L ]]; do
[[ ($N == 1 && ${P[1]} = '/') || \
${P[$N]} != '/' && ($N == $L || ${P[$N+1]} == '/') ]] \
&& $@ ${P:0:$N}
N=$(($N+1))
done
}
Пример:
% pathargs /abc/def/ghi/jkl echo
/
/abc
/abc/def
/abc/def/ghi
/abc/def/ghi/jkl
Можно использовать его с chmod -R g+x
вместо echo
. Команду назовут на каталогах самого верхнего уровня сначала.
Что-то как
path=/a/b/c/d/e/f
while test "$path" != "/"; do
chmod g+x "$path"
path=$(dirname "$path")
done
dirname
мог использоваться рекурсивно от командной строки, но я не вижу, что происходят. +1 для самого чистого сценария.
– Bernhard
21.04.2012, 00:14
Быстрый для ввода и работы во всех оболочках:
(while [ "$PWD" != / ]; do cmd .; cd ..; done)
Круглые скобки сохраняют изменение каталога локальным. Как Ваш пример, опущен корневой каталог. Если Вы хотите остановиться при выполнении cmd
сбои, добавляют set -e;
после вводной круглой скобки.
Как насчет find start_directory -type d -exec my_cmd {} \;
/a
в Вашем примереtype d
указывает только на каталоги. type f
для файлов. Оставьте этот аргумент и в пользу файлов и в пользу каталогов.cmd
в Вашем примере{}
заменяется найденным именем каталога\;
не забывайте это, команда не будет работать без него.Example1: Это распечатает все имена каталогов полного пути под / домой:
find /home -type d -exec echo {} \;
Example2: Это - Ваш вариант использования:
find /a -type d -exec echo chmod g+x {} \;
Это печатает команды, не выполняет их. Можно проверить, действительно ли это, что Вы хотите и если так, можно передать его по каналу для избиения (или zsh, если Вы желаете):
find /a -type d -exec echo chmod g+x {} \; | bash
/a/b/c/d/e/f/
непосредственно)
– Amelio Vazquez-Reina
20.04.2012, 23:11
find /a -type d -exec echo chmod g+x {} \; > /tmp/my_commands.sh
сопровождаемый vi /tmp/my_commands
или умный grep.... затем . /tmp/my_commands
выполнить строки. Просто не забывайте echo
или все команды будут выполняться сразу же.
– jippie
20.04.2012, 23:19
-n 1
и не использование его. Как они точно отличаются? – Amelio Vazquez-Reina 20.04.2012, 23:35xargs
иxargs -n 1
. Новое (и инструмент для очистки) функция будет всегда делать последнему: Назовите один экземпляр команды на каждом аргументе. – Stéphane Gimenez 20.04.2012, 23:47