【问题标题】:Running Linux application as another user other than root以 root 以外的其他用户身份运行 Linux 应用程序
【发布时间】:2012-10-17 17:52:58
【问题描述】:

我想以另一个用户(Other 然后是 root)的身份运行 linux 应用程序。 在我的应用程序中,我们编写了套接字程序,并且我正在使用原始套接字来 ping 数据库服务器。当我们以 root 身份运行应用程序时,它可以 ping 服务器。但是当它以除 root 以外的普通用户身份运行时,它无法 ping 数据库服务器。

你能告诉我如何用普通用户运行这个过程吗? 我们如何检查进程与哪个用户一起运行?

谢谢,

【问题讨论】:

  • 这个问题的标签看起来很杂乱,没有多大意义。如果这是一个 linux 内核模块,那么你就不会遇到这个问题,但同时,如果你必须在嵌入式系统上以 root 身份运行又有什么关系呢?
  • 人们似乎认为困难在于以另一个用户身份启动程序,但我认为这不是对问题的准确解读。相反,我认为程序在以非特权用户身份运行时 fails (因此这里非常重要)。可能的困难是尝试执行特权操作,例如文字 ICMP ping、使用没有 CAP_NET_RAW 的原始套接字或在本地端使用特权端口号。立即围绕失败的系统发布代码会有所帮助。

标签: database linux linux-kernel embedded


【解决方案1】:

用途:

sudo -u <username> <command ...>

您可以通过以下方式查看有关您的流程的信息(其中包括所有者的用户名):

ps -Af | grep <process name>

此外,非根程序不能使用原始套接字。这表明您的程序设计存在缺陷。

【讨论】:

    【解决方案2】:

    正如 Wug 已经回答的那样,使用“sudo”以不同的用户身份运行(如果在 sudoers 中允许)。如果您想查看哪个用户拥有该进程,您可以使用不同的工具:如“top”或“ps aux”等

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-05
      • 2016-04-11
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 2018-04-29
      • 2010-09-08
      相关资源
      最近更新 更多