我需要创建一个设置过程,在系统上添加一个新用户和组,用于运行应用程序;就像安装 mariaDb 或 openSSh 等程序时一样。最好的方法是什么?现在我使用带有 python 子进程模块的 bash 脚本;但这给了我很多疑问。后来……我如何以另一个用户身份运行程序?谢谢。
答案1
要在 Debian 系统上创建新用户或组,您可以使用命令adduser
(addgroup
它们是useradd
和的包装器groupadd
):
$ man 8 adduser
包安装程序使用相同的命令。
如果你想创建一个系统用户或组,与“普通”用户(具有登录 shell)相比,您可以使用调用
$ adduser --system [...]
如同
$ adduser --system --home /var/local/lib/mysrv --group --disabled-login mysrv
Adding system user `mysrv' (UID 137) ...
Adding new group `mysrv' (GID 173) ...
Adding new user `mysrv' (UID 137) with group `mysrv' ...
Creating home directory `/var/local/lib/mysrv' ...
这将创建系统用户mysrv
和组mysrv
,将其添加到该组,并为其创建一个主目录/var/local/lib/mysrv
(它可以在其中放置其数据和日志文件等)。
要再次删除它,请使用deluser --remove-home mysrv
。
有关更多选项,请阅读手册页。
如何跑步以新用户身份运行程序将取决于您的偏好和代码。基本上,您需要先成为 root,然后切换到用户(因为系统服务不会“登录”)。
例如,可以通过使用cron
和安装系统范围的 cronjob(您可以在其中指定以哪个用户身份运行它)来实现。
另一种方法(可能是最好的方法)是使用主管,例如守护进程工具或者主管。
最后一个选项是成为系统守护进程,并完成所有相关操作。如果您的程序是作为守护进程编写的,则 init 系统将处理它(systemd、sysvinit 等),但您需要为其编写 init 脚本。
运行安全的系统服务并非易事,但有一些工具可以帮助您实现这一点,例如daemon
和python-daemon
(均为 Debian 软件包)。
daemon(1) 将其他进程转换为守护进程。要正确设置守护进程,需要执行许多任务。这可能很繁琐。守护进程为其他进程执行这些任务。
阅读手册页。