From d17856a1e9b846a1e4420107a88686822effe444 Mon Sep 17 00:00:00 2001 From: Roland Tapken Date: Fri, 9 Feb 2018 16:09:56 +0100 Subject: [PATCH] Make logfile's mode configurable. The file logger currently resets the mode of the logfile to 0640. When the webserver is running as a different user than the cron job (but both are in the same group) the files mode has to be 0660. The current implementation breaks logging for the user that is not the owner of the logfile. This patch introduces a new config option 'logfilemode' that expects an octal value (defaults to 0640). Unless the value is lower or equal than 0 the logfiles mode will be resetted to this value. Signed-off-by: Roland Tapken --- config/config.sample.php | 7 +++++++ lib/private/Log/File.php | 7 +++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/config/config.sample.php b/config/config.sample.php index 874fbc04e5..9a5648c95d 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -728,6 +728,13 @@ $CONFIG = array( */ 'logfile' => '/var/log/nextcloud.log', +/** + * Log file mode for the Nextcloud loggin type in octal notation. + * + * Defaults to 0640 (writeable by user, readable by group). + */ +'logfilemode' => 0640, + /** * Loglevel to start logging at. Valid values are: 0 = Debug, 1 = Info, 2 = * Warning, 3 = Error, and 4 = Fatal. The default value is Warning. diff --git a/lib/private/Log/File.php b/lib/private/Log/File.php index c881c6dd9d..6810e2598c 100644 --- a/lib/private/Log/File.php +++ b/lib/private/Log/File.php @@ -50,6 +50,8 @@ use OCP\ILogger; class File implements IWriter, IFileBased { /** @var string */ protected $logFile; + /** @var int */ + protected $logFileMode; /** @var SystemConfig */ private $config; @@ -67,6 +69,7 @@ class File implements IWriter, IFileBased { } } $this->config = $config; + $this->logFileMode = $config->getValue('logfilemode', 0640); } /** @@ -134,8 +137,8 @@ class File implements IWriter, IFileBased { } $entry = json_encode($entry, JSON_PARTIAL_OUTPUT_ON_ERROR); $handle = @fopen($this->logFile, 'a'); - if ((fileperms($this->logFile) & 0777) != 0640) { - @chmod($this->logFile, 0640); + if ($this->logFileMode > 0 && (fileperms($this->logFile) & 0777) != $this->logFileMode) { + @chmod($this->logFile, $this->logFileMode); } if ($handle) { fwrite($handle, $entry."\n");