Работаю над чипом Trusted Platform Module (TPM) (как TPM12, так и TPM20). На данный момент выполняю некоторые операции с TPM, такие как получение права собственности на TPM, очистка TPM, генерация ключей внутри TPM и т. д. Но для всех этих операций мне нужны права sudo на моем ноутбуке Linux.
Так могу ли я выполнить все вышеперечисленные операции как обычный пользователь без прав root? Если да, то как получить доступ к TPM без прав root?
решение1
Этот ответ применим к TPM2 (принцип должен быть аналогичным для TPM1.2). Прежде всего: ваш TPM доступен через следующие символьные устройства.
/dev/tpm0
: прямой доступ к драйверу TPM/dev/tpmrm0
: доступ к драйверу TPM через встроенный в ядро менеджер ресурсов TPM (рекомендуется)
Конечно, вы можете временно изменить разрешения на чтение/запись этих файлов. Однако на самом деле вам нужно создать правило udev
. Это по сути файл в /etc/udev/rules.d/
. Для справки взгляните направила udev, предоставляемые TSS:
# tpm devices can only be accessed by the tss user but the tss
# group members can access tpmrm devices
KERNEL=="tpm[0-9]*", MODE="0660", OWNER="tss"
KERNEL=="tpmrm[0-9]*", MODE="0660", OWNER="tss", GROUP="tss"
Как вы видите, есть правило для пользователя tss
. Этот пользователь предназначен дляменеджер ресурсов пользовательского пространства. Если вы используете этот менеджер ресурсов, вам больше не придется получать доступ к файлам самостоятельно, но менеджер ресурсов пользовательского пространства сделает это за вас. Поэтому вам больше не нужны права root. Менеджер ресурсов пользовательского пространства будет работать как служба (или запускаться вручную как пользователь tss
).