当前位置: 首页 > 面试题库 >

以其他用户身份运行Linux服务的最佳实践

邓正真
2023-03-14
问题内容

服务默认root在启动时在我的RHEL盒上启动。如果我没记错的话,其他使用init中的init脚本的Linux发行版也是如此/etc/init.d

您认为使流程以我选择的(静态)用户身份运行的最佳方法是什么?

我到达的唯一方法是使用类似以下内容的方法:

 su my_user -c 'daemon my_cmd &>/dev/null &'

但这似乎有点不整洁…

是否存在一些魔术,可以提供一种简单的机制来像其他非root用户一样自动启动服务?

编辑:
我应该说,我在此实例中启动的进程是Python脚本或Java程序。我不想在它们周围编写本机包装,所以不幸的是,我无法按照Black的建议调用setuid()。


问题答案:

在Debian上,我们使用该start-stop-daemon实用程序,该实用程序可以处理pid文件,更改用户,将守护程序置于后台等等。

我不熟悉RedHat,但是daemon您已经在使用的实用程序(在/etc/init.d/functions,btw中定义)被等同于所提及start- stop-daemon,因此它既可以更改程序的uid,也可以更改您的操作方式它已经是正确的了。

如果您环顾网上,可以使用几种现成的包装纸。有些甚至可能已经打包在RedHat中。看一下daemonize,例如。



 类似资料:
  • 问题内容: 但是我仍然不能以计算神的热爱,以不同的用户身份运行。这是我所做的步骤: 下载适用于jenkins的macosx pkg(LTS) 安装插件等和git 尝试建立它 我不断收到无法克隆的错误,因为詹金斯一直以匿名身份开始: 如何设置它,让詹金斯像我一样运行?我正在使用jenkins Web UI,因此它位于localhost:8080 我也尝试使用/ login登录,但是我什至无法使用我的

  • 问题内容: 伙计们,我需要在Ubuntu 14.04下以其他用户身份启动docker守护进程。我在sudoers和docker的组中都拥有该用户,但是,我需要的是docker守护进程以“测试”用户身份运行。 test @ test:/ usr / bin $启动docker 开始:拒绝发送消息,1条匹配规则;type =“ method_call”,sender =“:1.88”(uid = 11

  • 问题内容: 我有必须作为user2运行的script.sh。但是,此脚本只能在我的应用程序的user1下运行。 我想运行以下命令: 但无需密码即可运行。 我也希望这是非常严格的限制,因为在user1中只能在user2下运行script.sh,而不能在其他任何情况下运行。 我已经尝试过使用sudoers文件执行此操作,但经过数小时的尝试,它才变得无穷无尽。 如果有人可以提供一个明确的示例说明如何完成

  • 问题内容: 如何在Windows上将goroutine的运行委托给另一个非管理员帐户?我看到您可以使用在Linux上执行此操作。我看不到如何使用Windows syscall软件包在Windows上执行此操作。我希望能够在程序运行时设置goroutine在其下运行的帐户。这可能吗? 背景知识:- 我想切换运行goroutine的用户,以便当我使用go-oci8时,可以更改在数据库连接期间传递给Or

  • 问题内容: 我刚刚开始使用Jenkins CI,遇到了一个问题,我很想在文档或在线中找到答案。想知道是否有人可以提供一些建议? 我正在尝试使用它来自动部署托管在Github组织存储库(即私有)上的Django项目的dev和stage分支。目前,我有一个用户“ django”,可以通过Github部署密钥访问Github存储库。我的Jenkins用户无法访问该存储库。解决此问题的最佳实践是什么-我应

  • 问题内容: 我在Linux中安装了Jenkins,我想在用户下运行构建。 不只是一个简单的用户,而是属于访问linux计算机的用户列表的一个用户,它属于某个组,因为它具有在特定文件夹下修改/创建文件的特权。 我读过某处可以设置变量$ JENKINS_USER,但是我不知道在哪里以及如何进行设置。感谢您的时间 PS我做了一些研究,所有发布的问题都与此相似,但不相同 如果我不清楚,请阅读以下内容:通常