Подробный гайд: pcsc_scan не видит Рутокен на Альт Линукс в ВМ zVirt - Часть 3

Подробный гайд, если pcsc_scan не видит Рутокен на Альт Линукс в ВМ zVirt. Разбор проброса USB, настройки udev, прав pcscd и анализа логов.

2026.10.18                  


Подробный гайд: pcsc_scan не видит Рутокен на Альт Линукс в ВМ zVirt - Часть 3Подробный гайд: pcsc_scan не видит Рутокен на Альт Линукс в ВМ zVirt - Часть 3

11. Проверить права доступа

Вы запускаете pcsc_scan через sudo, поэтому права обычного пользователя пока не критичны. Но если потом захотите работать без sudo, настройте правила.

Проверьте группы:

getent group usb
getent group pcsc

Добавьте своего пользователя, если нужно:

sudo usermod -aG usb $USER
sudo usermod -aG pcsc $USER

После этого нужно перелогиниться.

Можно создать правило udev:

sudo tee /etc/udev/rules.d/99-rutoken.rules <<'EOF'
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0a89", ATTR{idProduct}=="0030", MODE="0660", GROUP="usb", TAG+="uaccess", ATTR{power/autosuspend}="-1", ATTR{power/control}="on"
EOF


Затем:

sudo udevadm control --reload
sudo udevadm trigger --action=add --subsystem-match=usb
sudo udevadm settle

Для диагностики можно временно поставить MODE="0666", но для боевого сервера с ключами это небезопасно.


12. Проверить сервис pcscd

Проверьте статус:

systemctl status pcscd --no-pager
systemctl status pcscd.socket --no-pager

Включите автозапуск, если нужно:

sudo systemctl enable --now pcscd.socket pcscd.service

Или, если pcscd.socket отсутствует:

sudo systemctl enable --now pcscd

Посмотрите параметры юнита:

systemctl cat pcscd
systemctl show pcscd -p User -p PrivateDevices -p DevicePolicy -p ProtectSystem -p ProtectHome -p DynamicUser

Если там есть:

PrivateDevices=yes

или:

DevicePolicy=closed

это может мешать доступу к USB.

Тогда можно сделать override:

sudo systemctl edit pcscd

И добавить, если это допустимо:

[Service]
PrivateDevices=no
DevicePolicy=auto

Затем:

sudo systemctl daemon-reload
sudo systemctl restart pcscd

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


13. Особенности zVirt / KVM / QEMU

Судя по картине, это самый вероятный источник проблемы.

13.1. Пробрасывать лучше устройство, а не порт

В zVirt лучше пробрасывать конкретное устройство по:

vendor = 0x0a89
product = 0x0030

а не просто порт шины или весь контроллер. Если у вас проброшен именно порт, удалите этот проброс и добавьте устройство заново.


13.2. Освободите Рутокен на хосте

На физическом хосте, где установлен zVirt/KVM, устройство не должно использоваться:

  • pcscd;
  • scdaemon;
  • openct;
  • gpg-agent;
  • КриптоПро;
  • другими процессами подписи.

На хосте для теста можно остановить:

sudo systemctl stop pcscd pcscd.socket 2>/dev/null
gpgconf --kill scdaemon 2>/dev/null
sudo pkill -f pcscd 2>/dev/null
sudo pkill -f scdaemon 2>/dev/null

13.3. Проверьте контроллер: лучше использовать USB 2.0, а не USB 3.0

У вас в ВМ есть:

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Рутокен находится на Bus 001, но в виртуальной машине может присутствовать контроллер xHCI, который иногда плохо работает с full-speed/low-speed USB-токенами.

Если есть возможность в zVirt:

  • уберите или отключите USB 3.0/xHCI для этой ВМ;
  • добавьте или используйте USB 2.0 EHCI;
  • для очень старых или низкоскоростных токенов иногда помогает USB 1.1 UHCI/OHCI.

После изменения конфигурации ВМ лучше полностью выключить и запустить, а не просто перезагрузить.


13.4. Проверьте скорость устройства

Команда:

lsusb -t

Если Рутокен виден как:

12M

это full-speed, нормально.

Если:

1.5M

это low-speed, и в виртуальных машинах с xHCI иногда бывают проблемы. Тогда лучше использовать UHCI/OHCI/EHCI контроллер.

13.5. Отключите автосон USB в гостевой ОС

Временно:

echo -1 | sudo tee /sys/module/usbcore/parameters/autosuspend 2>/dev/null || true

И для конкретного устройства, если DEV найден:

echo on | sudo tee "$DEV/power/control" 2>/dev/null || true
echo -1 | sudo tee "$DEV/power/autosuspend" 2>/dev/null || true

Постоянное правило было выше:

ATTR{power/autosuspend}="-1", ATTR{power/control}="on"

Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

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