如何以root身份仅调用一个可执行文件而不需要使用sudo

问题描述 投票:0回答:1

我创建了一个应用程序,也使用 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 文件更轻松。

linux ubuntu permissions sudo tpm
1个回答
0
投票

要在不依赖 sudo 的情况下以 root 权限运行二进制文件,您可以利用 setuid 功能或调整二进制文件的所有权和权限。

更改所有权和权限:

您可以将二进制文件的所有权修改为root,并设置其权限以允许root用户执行。这种方法赋予二进制文件以 root 权限运行的能力。

sudo chown root:root ./tpmProjectApp
sudo chmod +s ./tpmProjectApp

使用setuid:

另一种方法涉及使用 setuid 功能,该功能允许用户以文件所有者的权限执行可执行文件。通过在二进制文件上设置 setuid 位,您可以使其以 root 权限运行。

sudo chmod u+s ./tpmProjectApp
© www.soinside.com 2019 - 2024. All rights reserved.