如何创建专用用户来运行服务?

如何创建专用用户来运行服务?

我有一个应用程序,我想在系统启动时作为服务运行,并且该应用程序应该以特定用户身份运行(该应用程序是阿帕奇卡拉夫)。我已经完成了所有这些设置,但是我为此使用的用户有密码,因此每次启动服务时,都必须输入该用户的密码。

/etc/passwd我当前有一个用户,在和中有以下条目/etc/shadow

# /etc/passwd
karaf-test-user:x:1002:1002::/home/karaf-test-user:/usr/sbin/nologin

# /etc/shadow
karaf-test-user::15659:0:99999:7:::

据我所知,该用户没有设置密码,无法登录,但有一个主目录(这是应用程序所必需的)。但是,当我输入:

/etc/init.d/karaf-service start

我被提示输入该用户的密码。我该如何避免这种情况?我该如何修改此用户以使其此时不需要密码?我发现这个答案,但我觉得这很不靠谱。这真的是唯一的方法吗?有什么最佳实践值得遵循吗?

我在 Ubuntu 12.04.1 上运行。

答案1

我决定的方法是创建一个带密码的专用用户,但始终以 root 身份管理服务,这样就不需要密码了su。为了确保安全,我创建了一个组karaf-admins并向中添加了以下条目sudoers

%${KARAF_ADMINS} ALL=NOPASSWD: /etc/init.d/karaf-service

这样该组的成员就可以像 root 一样运行命令,sudo /etc/init.d/karaf-service start而无需输入密码。karaf-service脚本本身将切换到我设置的专用用户。只要karaf-admins不允许用户编辑服务脚本或符号链接(他们不应该这样做),这绝对是安全的。

相关内容