2048 (стартовый сектор) времена 512 (размер сектора) 1048576. Таким образом, необходимо работать
sudo mount -o loop,offset=1048576 centos6.img /mnt/centos6
Причина сообщения об ошибке, которое Вы получили, состоит в том, что Вы сказали ядру искать файловую систему в некоторой случайной незанятой точке на диске. Таким образом, это сказало Вам, что не распознало файловую систему там.
Посмотрите Чтение файловой системы от целого образа диска для фона.
Вы могли бы попробовать libguestfs, который может смонтировать много образов дисков VM автоволшебно.
Если кто-то хочет записать их терминальные сеансы автоматически - включая сессии (!) SSH - использование script
утилита, вот то, как.
Добавьте следующую строку в конце .bashrc
в Вашем корневом каталоге, или иначе /etc/bash.bashrc
если Вы только хотите записать сессии всех пользователей. Мы тестируем на родительский процесс оболочки, не являющийся script
и затем выполненный script
.
Для Linux:
test "$(ps -ocommand= -p $PPID | awk '{print $1}')" == 'script' || (script -f $HOME/$(date +"%d-%b-%y_%H-%M-%S")_shell.log)
Для BSD и macOS, изменения script -f
кому: script -F
:
test "$(ps -ocommand= -p $PPID | awk '{print $1}')" == 'script' || (script -F $HOME/$(date +"%d-%b-%y_%H-%M-%S")_shell.log)
Это все!
Теперь при открытии нового терминала, Вы будете видеть:
Script started, file is /home/username/file_name.log
script
запишет Ваши сессии в файл в Вашем корневом каталоге, называющем их что-то как 30-Nov-11_00-11-12_shell.log
в результате.
Больше настройки:
script -a /path/to/single_log_file
script -f
(Linux) или script -F
(BSD и macOS)Этот ответ предполагает, что Вы имеете script
установленный, конечно. На находящихся в Debian дистрибутивах, script
часть bsdutils
пакет.
Хотя этот вопрос был задан человеком, желающим записывать свои собственные сессии, альтернативным вариантом может быть использование системным администратором, который хочет отслеживать, что делают различные пользователи.
Боюсь, что запуск
script
внутри общесистемногоbashrc
может не подойти в случае, когда пользователи машины не хотят, чтобы записи их сессий велись.Пользователи, желающие остаться инкогнито, могут обойти протоколирование, попросив sshd открыть другую оболочку (например,
zsh
) или выполнитьbash --rcfile ___
, чтобы предотвратить загрузку/etc/bash.bashrc
.
Это руководство от 2008 года (архивировано) использует другой метод, чтобы заставить скрипт
запускаться, когда пользователь входит в систему с помощью ssh, который требует от пользователей входа с открытым/закрытым ключом.
Это делается путем добавления скрипта в файл .ssh/authorized_keys
пользователя, перед ключом:
command="/usr/local/sbin/log-session" ssh-dss AAAAB3NzaC1kc3MAAAEBAMKr1HxJz.....
Скрипт log-session
(archived) затем решает, запускать или нет /usr/bin/script
для регистрации сессии этого пользователя.
exec script -a -f -q -c "$SSH_ORIGINAL_COMMAND" $LOGFILE
Чтобы пользователь не смог удалить добавленную команду, администратор должен будет принять право собственности на файл authorized_keys
пользователя.
chown root:root ~user/.ssh/authorized_keys
К сожалению, это означает, что пользователь не сможет самостоятельно добавить дополнительные ключи или, что более важно, отозвать существующий ключ, если он скомпрометирован, что далеко не идеально.
Обычно стандартная конфигурация sshd позволяет пользователям выполнять SFTP через их логин ssh. Это дает пользователям возможность редактировать файлы без записи изменений в журнал. Если администратор не хочет, чтобы пользователи могли это делать, то он должен либо включить протоколирование для SFTP, либо отключить эту службу. Хотя даже в этом случае пользователи все равно могли бы вносить невидимые изменения в файлы, выполнив в терминале что-то вроде этого:
curl "http://users.own.server/server/new_data" > existing_file
Можно было бы отслеживать подобные изменения, используя файловую систему с функцией копирования при записи, которая записывает всю историю файлов.
Но аналогичный трюк позволит пользователю выполнять команды без записи в журнал:
curl "http://users.own.server/server/secret_commands_824" | sh
Я не знаю простых решений для этого. Возможными вариантами могут быть:
Такие вещи могут быть возможны с auditd.
Но в любом случае...
Маловероятно, что протоколирование пользовательских сессий обеспечивает какую-либо реальную безопасность для администраторов. По умолчанию пользователь может манипулировать только своими собственными файлами и не может нанести вред системе. Если злоумышленнику все же удастся повысить привилегии, он сможет отключить ведение журнала и удалить журналы (если только администратор не настроил хранение журналов на отдельной машине, только в виде приложений).
Администраторы, которые автоматически регистрируют сеансы пользователей, вероятно, должны информировать пользователей о том, что это делается. В некоторых юрисдикциях такая форма сбора данных может нарушать законы о данных или конфиденциальности. И, по крайней мере, было бы уважительно по отношению к пользователям поставить их в известность.
Более вероятно, что администратор будет заинтересован в регистрации сессий пользователей
sudo
. Возможно, это можно рассмотреть в другом ответе или даже в другом вопросе.
Вместо:
test "$(ps -ocommand= -p $PPID | awk '{print $1}')" == 'script' ||
я бы использовал:
grep -qx "$PPID" <(pgrep -x "script") ||
Двойные кавычки в этом случае не нужны, но я все равно использую их как стандартную практику. Я определенно рекомендую использовать переключатель «x» как для grep, так и для pgrep, чтобы избежать редких, но проблемных совпадений с подстроками.
edit
кнопка, которая кажется правильной ниже его. – Mat 30.11.2011, 08:51${RANDOM}
и/или$$
к имени файла начиная с запуска двух оболочек в течение секунды друг после друга вызовет конфликт имени файла. Лично, я часто используюscript.$(date -u +%Y%m%dt%H%M%S).${HOSTNAME:-$(hostname)}.$$.${RANDOM}.log
для обеспечения файлов автоматически отсортированы по дате/времени, и они последовательны через TZ, я знаю хост, который инициировал его, я знаю процесс владения, и нет никаких коллизий имени. Я редко использую${USER}
потому что это обычно - что-то для только меня. – nicerobot 02.12.2011, 18:33