TL; DR: Во многих случаях Вы видите, получили ли к файлу доступ; однако, невозможно сказать, была ли копия сделана или нет.
Это кажется этим atime
был бы обновлен при использовании cp
(если noatime
в действительности); однако, делая любую другую операцию чтения (как grep somestring $filename
) также коснулся бы файла.
В большинстве установок (без тонны аудита), не возможно узнать, почему точно файл был считан, и записал ли процесс, читая файл также копию данных в другом месте (к USB? снабжать сокетом? к RAM?).
Кроме того, это только касается непривилегированных нападений онлайн. Если у меня есть физический доступ, я мог бы перезагрузить в дистрибутив живого CD, смонтировать раздел, только для чтения, скопировать что-либо от него (или даже сделать полный образ диска) и не будет никаких меток на разделе (кроме увеличенного счетчика монтирования).
dmidecode -s system-product-name
Я протестировал на Рабочей станции VMware, VirtualBox, QEMU с KVM, автономном QEMU с Ubuntu как гость ОС. Другие добавили дополнительные платформы, с которыми они знакомы также.
VMware Workstation
root@router:~# dmidecode -s system-product-name
VMware Virtual Platform
VirtualBox
root@router:~# dmidecode -s system-product-name
VirtualBox
Qemu с KVM
root@router:~# dmidecode -s system-product-name
KVM
Qemu (эмулирован)
root@router:~# dmidecode -s system-product-name
Bochs
Microsoft VirtualPC
root@router:~# dmidecode | egrep -i 'manufacturer|product'
Manufacturer: Microsoft Corporation
Product Name: Virtual Machine
Virtuozzo
root@router:~# dmidecode
/dev/mem: Permission denied
Xen
root@router:~# dmidecode | grep -i domU
Product Name: HVM domU
На чистом металле это возвращает идентификацию модели компьютера или материнской платы.
/dev/disk/by-id
Если Вы не имеете прав работать dmidecode
затем можно использовать:
Технология виртуализации: QEMU
ls -1 /dev/disk/by-id/
Вывод
[root@host-7-129 ~]# ls -1 /dev/disk/by-id/
ata-QEMU_DVD-ROM_QM00003
ata-QEMU_HARDDISK_QM00001
ata-QEMU_HARDDISK_QM00001-part1
ata-QEMU_HARDDISK_QM00002
ata-QEMU_HARDDISK_QM00002-part1
scsi-SATA_QEMU_HARDDISK_QM00001
scsi-SATA_QEMU_HARDDISK_QM00001-part1
scsi-SATA_QEMU_HARDDISK_QM00002
scsi-SATA_QEMU_HARDDISK_QM00002-part1
Эта команда производит следующий вывод на различных технологических гостях VM.
$ sudo lshw -class system
KVM
mungr
description: Computer
product: KVM
vendor: Red Hat
width: 64 bits
capabilities: smbios-2.4 dmi-2.4 vsyscall64 vsyscall32
Виртуальное поле
fedora17
description: Computer
product: VirtualBox ()
vendor: innotek GmbH
version: 1.2
serial: 0
width: 64 bits
capabilities: smbios-2.5 dmi-2.5 vsyscall32
VMware
partedmagic
description: Computer
product: VMware Virtual Platform ()
vendor: VMware, Inc.
version: None
serial: VMware-56 4d 94 a0 53 e3 f3 c6-f9 a6 eb 1a 89 70 04 57
width: 32 bits
capabilities: smbios-2.4 dmi-2.4 smp-1.4 smp
Если Вы находитесь на Ubuntu/Debian существует пакет open-vm-tools
может быть установлен. Это обеспечивает vmware-checkvm
. Это возвращает только цифру. A 0
средства это - VM, a 1
средства это - физическая система.
Если это - KVM /proc/scsi/scsi
и ethtool
опции обнаруживаются следующим образом:
$ cat /proc/scsi/scsi
Attached devices:
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: QEMU Model: QEMU DVD-ROM Rev: 0.9.
Type: CD-ROM ANSI SCSI revision: 05
$ ethtool -i eth0
driver: virtio_net
version:
firmware-version:
bus-info: virtio0
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no
virtio_net является частью KVM. /proc/scsi/scsi
говорит Вам, что Вы находитесь в VM, и что Вы - наиболее вероятный KVM.
Используя следующие команды grep
'луг через dmesg
журнал.
$ sudo dmesg | grep -i virtual
VMware
VMware vmxnet virtual NIC driver
Vendor: VMware Model: Virtual disk Rev: 1.0
hda: VMware Virtual IDE CDROM Drive, ATAPI CD/DVD-ROM drive
QEmu или KVM
Если "-cpu host"
опция не использовалась, QEmu и KVM идентифицируют себя как:
CPU: AMD QEMU Virtual CPU version 0.9.1 stepping 03
иначе информация о ЦП хоста будет использоваться оба в dmesg
, или в /proc/cpuinfo
. Однако необходимо видеть что-то как:
[ 0.000000] Booting paravirtualized kernel on KVM
В более новых ядрах, которые понимают, что они работают при паравиртуализации.
Microsoft VirtualPC
hda: Virtual HD, ATA DISK drive
hdc: Virtual CD, ATAPI CD/DVD-ROM drive
Xen
$ sudo dmesg | grep -i xen
Xen virtual console successfully installed as tty1
Virtuozzo
# method #1
$ sudo dmesg
(returns no output)
# method #2
$ sudo cat /var/log/dmesg
(returns no output)
# method #3
$ sudo ls -al /proc/vz
veinfo veinfo_redir veredir vestat vzaquota vzdata
lshw -class system
и dmidecode
точно, что я надеялся найти.
– Gilles 'SO- stop being evil'
07.09.2013, 01:58
lshw
вывод также для тех платформ. Дайте мне несколько минут, и я обновлю A.
– slm♦
07.09.2013, 02:08
isVMware() { [[ $(dmidecode -s system-manufacturer) = 'VMware, Inc.' ]]; }
isXen () { [[ $(dmidecode -s system-manufacturer) = 'Xen' ]]; }
isKVM () { [[ $(dmidecode -s system-product-name) = 'KVM' ]]; }
isVBox () { [[ $(dmidecode -s system-product-name) = 'VirtualBox' ]]; }
isVM () { isVMware || isXen || isKVM || isVBox; }
Это - тесты, которые мы используем в моей компании.
Если Вы получаете человека, Вы помогаете установить facter
, можно сделать
facter virtual
Никакой корневой доступ не необходим.
Гость Debian на хосте Debian:
[user@guest]$ facter virtual
virtualbox
Я не могу ручаться за то, как хорошо это работало бы с Xen/KVM/Qemu...
Для VirtualBox Вы могли lspci | grep -i virtualbox
, это дает:
$ lspci | grep -i virtualbox
00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service
С другой стороны, dmidecode -s system-product-name
(как @Rahul Patil предлагает), еще больше прямо к точке (но должен базироваться):
$ sudo dmidecode -s system-product-name
VirtualBox
Для non-KVM QEMU, dmidecode -s system-product-name
смутно возвраты Bochs, но dmesg | grep -i qemu
работы (устройства хранения, которые QEMU эмулирует обычно, имеют имя QEMU HARDDISK
, QEMU DVD-ROM
и т.д....).
Иногда это хитро :)
root@server:~# dmidecode -s system-product-name
Bochs
root@server:~# dmidecode | egrep -i 'manufacturer|product|vendor'
Vendor: Bochs
Manufacturer: Bochs
Product Name: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
Manufacturer: Bochs
root@server:~# virt-what
root@server:~# dpkg -l |grep virt-what
ii virt-what 1.2-1 detect if we are running in a virtual machine
root@server:~# egrep -i 'virtual|vbox' /var/log/dmesg
[ 0.000000] Booting paravirtualized kernel on KVM
[ 0.385701] input: Macintosh mouse button emulation as /devices/virtual/input/input0
вируса, который[113259], кажется, хорошо охватывает большинство случаев...
I [112677]do[112678], как и отказ от ответственности авторов:
В большинстве случаев использование этой программы является неправильным. Вместо этого вы должны обнаружить [113260]специфические [113261] возможности, которые вы на самом деле хотите использовать.
Если контейнер работает systemd
:
$ systemd-detect-virt
lxc
Например, на KVM он возвращает:
kvm
, а на невиртуализированном хосте:
none
См. Также:
, по-видимому, виртуализация поступает в нескольких частях - в моем случае QEMU, BOCHS и KVM (затем Ubuntu 14.04). Я нашел самый простой способ обнаружения гипервизора в использовании было:
sudo apt-get install virt-what
sudo virt-what
, который в моем случае вернулся просто KVM
, который был основной информацией, которую я искал (также я думаю, потому что это говорит То, что мне разрешено делать (например, запустить IPset, чтобы заблокировать атаку DDOS) и как ресурсы совместно используются между VMS.
Кроме того, я пробовал
sudo dmidecode -s system-product-name
и
sudo lshw -class system
ни один из которых не упоминает КВМ, но они оба сообщают мне, что мое оборудование обеспечивается BOCHS
, которые я признаюсь, что я даже не слышал, Но быстрый поиск оказался интересной информацией ( http://en.wikipedia.org/wiki/bochs ). Команда LSCW немного более подробнее, чем DmideCode (например, рассказывая мне, что это 64-битный).
Другие ответы на самом деле не сказали мне что-то полезное - Fairual
только что вернулся
и LS -1 / DEV / DICK / BY-ID /
вернулся ATA-QEMU_DVD-ROM_QM00003
, который показывает QEMU, но у меня нет доступа к эмулируемому DVD-ROM в любом случае.
при настройке используются флаги: --without-libpam --without-sha-crypt
. Команда useradd
успешно создала пользователей.
Хорошо, ребята, вот проблема:
Используя Thinkpad Ultra Dock, все подключенные дисплеи внутри обрабатываются концентратором Displayport. К сожалению, Linux не может различать несколько мониторов с помощью концентратора Displayport MST.
Читайте здесь: http://www.thinkwiki.org/wiki/ThinkPad_Ultra_Dock
Linux пока не предлагает явной поддержки концентратора DisplayPort MST, встроенного в эту док-станцию, поэтому поддержка нескольких экранов не полностью функционирует в Linux. Один экран работает нормально и является полностью управляемым, но несколько экранов обрабатываются неким несконфигурируемым резервным режимом и появляются на одном дисплее; они не могут быть индивидуально настроены с точки зрения разрешения, относительного положения и т.д.
Однако в отношении моего X240 на странице написано:
На X240 ThinkPad одним из способов использования двух внешних экранов является подключение одного к док-порту, а другого - к собственному порту mini DisplayPort ноутбука.
Который работает нормально.
-121--111619- В «последних» ядрах linux ядро обнаруживает гипервизор и распечатывает сообщение, которое легко доступно с помощью dmesg
. Это говорит вам просто:
dmesg | grep "Hypervisor detected"
Например:
$ dmesg | grep "Hypervisor detected"
Hypervisor detected: VMware
Что касается того, что означает «последнее», я не понимаю, в каком ядре он был официально выпущен, но фиксация, которая внесла эту функцию в кодовую базу, была 7 мая 2010 года. См. здесь .
Debian поставляется с этим небольшим пакетом для обнаружения типа виртуализации:
$ sudo apt-get install virt-what
$ virt-what
и немного больше из-за Perl-зависимостей:
$ sudo apt-get install imvirt
$ imvirt
Как обычно выполняется:
free
cat /proc/meminfo
cat /proc/cpuinfo
dmesg
htop
lshw
dmidecode
lsmod
hwinfo
hostnamectl
- ваш друг (требуется systemd
).
Несколько примеров:
Ноутбук без виртуализации
$ hostnamectl status
Static hostname: earth.gangs.net
Icon name: computer-laptop
Chassis: laptop
Machine ID: 18a0752e1ccbeef09da51ad17fab1f1b
Boot ID: beefdc99969e4a4a8525ff842b383c62
Operating System: Ubuntu 16.04.2 LTS
Kernel: Linux 4.4.0-66-generic
Architecture: x86-64
Xen
$ hostnamectl status
Static hostname: pluto.gangs.net
Icon name: computer-vm
Chassis: vm
Machine ID: beef39aebbf8ba220ed0438b54497609
Boot ID: beefc71e97ed48dbb436a470fe1920e1
Virtualization: xen
Operating System: Ubuntu 16.04.2 LTS
Kernel: Linux 3.13.0-37-generic
Architecture: x86-64
OpenVZ
$ hostnamectl status
Static hostname: mars.gangs.net
Icon name: computer-container
Chassis: container
Machine ID: 55296cb0566a4aaca10b8e3a4b28beef
Boot ID: 1bb259b0eb064d9eb8a22d112211beef
Virtualization: openvz
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 2.6.32-042stab120.16
Architecture: x86-64
KVM
$ hostnamectl status
Static hostname: mercury.gangs.net
Icon name: computer-vm
Chassis: vm
Machine ID: beeffefc50ae499881b024c25895ec86
Boot ID: beef9c7662a240b3b3b04cef3d1518f0
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-514.10.2.el7.x86_64
Architecture: x86-64
Это определит тип используемой технологии виртуализации и выведет ее.
systemd-detect-virt
Используйте параметры --container
и --vm
, чтобы ограничить тип обнаруживаемой виртуализации.
Если вы просто хотите узнать обнаружена виртуализация или нет, без конкретики, то проще проверить код выхода. Он вернет код выхода 0, если обнаружена виртуализация, и отличный от -ноль в противном случае.
Пример, как это решается в linux -test -проекте . Это может быть полезно для тех, кому это нужно в коде C, в идеале без особых зависимостей.
systemd-detect-virt
/proc/xen
или /sys/hypervisor/type
, "QEMU Virtual CPU"
в /proc/cpuinfo
с примечанием, что он не работает с пользовательскими значениями -cpu
, так как не существует простого, разумного или надежного способа их обойти. => большая часть работы выполняется с помощью systemd-detect-virt
. src/detect -virt/detect -virt.c показывает, как обнаруживать другие технологии виртуализации.
Обычно я использую lscpu
из пакета util -linux . Он сообщает Hypervisor vendor
и Virtualization type
.
Мой ответ с точки зрения ядра Linux.
Если вы знаете, как использовать аварийную утилиту, попробуйте следующее:
crash> p x86_hyper
x86_hyper = $4 = (const struct hypervisor_x86 *) 0xffffffff81b166e0 <x86_hyper_kvm>
crash> p x86_hyper_type
x86_hyper_type = $1 = X86_HYPER_NATIVE
Для вашей системы вам необходимо прочитать коды, относящиеся к обнаружению _гипервизора _поставщика ().
Virtual Machine
дляdmidecode -s system-product-name
. Нет ничего очевидного под/dev/disk/by-id также. фактор, кажется, обнаруживает hyperv путем рассмотрения вывода lspci. – Zoredache 07.09.2013, 02:39/proc/user_beancounters
– exussum 07.09.2013, 15:45/proc/user_beancounters
по OpenVZ, который вероятен на дешевом VPS's как пример. – m3nda 21.01.2015, 04:37dmidecode
и/dev/disk/by-id
решения перестали работать в контейнере Докера. Посмотрите, что unix.stackexchange.com/a/257207/106572 – Martin Bramwell 23.01.2016, 19:35dmidecode -s system-product-name
возвращает универсальное аппаратное описание вместо "KVM" или "Bochs", показанного выше. Для меня эта строкаStandard PC (i440FX + PIIX, 1996)
.dmidecode -s system-manufacturer
возвращает намного меньше универсальной строкиQEMU
. Так как qemu позволяет данным DMI быть обеспеченными, я подозреваю, что dmidecode относительно легко одурачить - неважно, считанное поле. – Mark 27.02.2016, 00:46