我创建了一个应用程序,也使用 TPM 进行签名/加密/解密(使用 tss2-fapi 库)...但是当涉及到 linux(ubuntu)权限时,我是新手。现在,当我运行应用程序时,我总是必须运行它:
sudo ./tpmProjectApp
像这样运行应用程序不会产生任何问题。
我希望任何登录用户(也具有有限权限)运行此可执行文件,但我不希望他以任何其他方式与 TPM 进行通信。
所以我想知道,有什么方法可以让用户无需使用 sudo 就能运行这个应用程序?
我尝试将可执行文件分配给root:
sudo chown root ./tpmProjectApp
并设置setuid(也尝试过g+s)位:
sudo chmod u+s tpmProjectApp
权限如下:
-rwsrwsrwx 1 root root 713608 四月 14 16:02 tpmProjectApp*
但是当我运行 ./tpmProjectApp 时,我收到了通常不会出现的错误。
例如未找到密钥 P_RSA2048SHA256/HS/SRK/myRsaKey。 但我知道密钥存在,因为如果我以 sudo 身份运行该应用程序,它就可以工作。我认为,如果存在问题,为该可执行文件分配 root 权限可能比尝试修改 tpm 文件更轻松。
要在不依赖 sudo 的情况下以 root 权限运行二进制文件,您可以利用 setuid 功能或调整二进制文件的所有权和权限。
您可以将二进制文件的所有权修改为root,并设置其权限以允许root用户执行。这种方法赋予二进制文件以 root 权限运行的能力。
sudo chown root:root ./tpmProjectApp
sudo chmod +s ./tpmProjectApp
另一种方法涉及使用 setuid 功能,该功能允许用户以文件所有者的权限执行可执行文件。通过在二进制文件上设置 setuid 位,您可以使其以 root 权限运行。
sudo chmod u+s ./tpmProjectApp