我应该如何从非root用户的Debian Linux守护进程登录?

问题描述:

我在写一个新的守护进程,它将在Debian Linux上托管。我应该如何从非root用户的Debian Linux守护进程登录?

我发现/ var/log只有root权限,所以我的守护进程无法写入日志文件。

但是,如果它写在那里,它会显示它会获得自动日志轮换,并且也可以按用户预期的方式工作。

建议守护进程写入出现在/ var/log中的日志条目而不必以root身份运行的建议方式是什么?

守护进程是一个web服务器,所以日志流量将类似于Apache。

您应该创建就像守护进程的用户所有权

作为根/var/log/mydaemon子目录中,创建一个日志文件有和文件所有者更改为web服务器用户:

# touch /var/log/myserver.log 
# chown wwwuser /var/log/myserver.log 

然后服务器可以写入这些文件如果以用户wwwuser运行。但它不会获得自动日志轮换。您必须将日志文件添加到/etc/logrotate.conf/etc/logrotate.d/...,并在logrotate发出信号时让服务器重新打开日志文件。

您也可以使用syslog进行日志记录,如果这更符合您的情况。

+2

其更好地把日志在一个子目录WiseTechi的回答中提到。如果在/ var/log中有该文件并且该文件被删除,则非根进程将无法重新创建该文件 – 2015-09-25 17:41:47

+0

此外,守护进程将无法记录旋转,因为它没有权限在logdir中创建新文件。 – 2017-01-09 01:35:32

两个选项:

  1. 开始为root,打开该文件,然后删除与setuid权限。 (我不记得确切的系统调用权限。)如果要绑定到TCP端口80或任何低于1024的端口,则必须执行此操作。
  2. 创建子目录/ var/log /具有守护进程用户所有权的mydaemon,如WiseTechi said

/var/log下的文件不会自动旋转;相反,旋转由/etc/logrotate.conf/etc/logrotate.d下的文件控制。

使用“记录”命令

http://linux.die.net/man/1/logger