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

时间:2009-01-27 15:13:10

标签: linux logging debian root

我正在编写一个新的守护进程,它将在Debian Linux上托管。

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

但是,如果它在那里写入,它似乎会获得自动日志轮换,并且也可以像用户期望的那样工作。

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

守护程序是一个Web服务器,因此日志流量将类似于Apache。

4 个答案:

答案 0 :(得分:39)

您应该创建一个像/var/log/mydaemon这样的子目录,其中包含守护程序的用户所有权

答案 1 :(得分:11)

以root身份在那里创建一个日志文件,并将文件所有者更改为webserver用户:

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

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

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

答案 2 :(得分:2)

两个选项:

  1. root开头,打开文件,然后使用setuid删除权限。 (我不记得删除权限的确切系统调用。)如果要绑定到TCP端口80或1024以下的任何端口,无论如何都必须这样做。
  2. 创建一个子目录,如/ var / log / mydaemon,其守护程序的用户所有权为WiseTechi said
  3. /var/log下的文件不会自动轮播;相反,轮换由/etc/logrotate.conf/etc/logrotate.d下的文件控制。

答案 3 :(得分:1)

使用“logger”命令

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