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

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

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

但是,如果它写在那里,它会出现它会获得自动日志旋转,并按用户预期的方式工作。

build议守护进程如何写入出现在/ var / log中的日志条目,而不必以root身份运行?

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

Solutions Collecting From Web of "我应该如何从非root用户的Debian Linux守护进程login?"

您应该创建一个像/var/log/mydaemon具有守护进程用户所有权的子目录

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

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

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

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

两个选项:

  1. root身份启动,打开文件,然后使用setuid删除权限。 (我不记得确切的系统调用权限。)如果你想绑定到TCP端口80或任何低于1024的端口,你将不得不这样做。
  2. WiseTechi说 ,创建一个像/ var / log / mydaemon这样的拥有守护进程用户所有权的子目录 。

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

使用“记录器”命令

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