summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlya Mashchenko <ilya@netdata.cloud>2023-12-07 15:25:16 +0200
committerTasos Katsoulas <12612986+tkatsoulas@users.noreply.github.com>2023-12-12 17:25:00 +0200
commit47bacfab3bb03aa0a49aabe80a44174265b3a5ee (patch)
treea35480d3786edd84c6bc23eb97e5bb087c52759b
parent48010eacd90e113ec794fa1fc14b75abe15140b3 (diff)
set "HOME" after switching to netdata user (#16548)
(cherry picked from commit 9fdf1c96e4b6d65a70f52ae4dd9272121aa7f0a4)
-rw-r--r--daemon/analytics.c1
-rw-r--r--daemon/main.c12
-rw-r--r--system/Makefile.am1
3 files changed, 11 insertions, 3 deletions
diff --git a/daemon/analytics.c b/daemon/analytics.c
index 9f19e313bb..b026e34f8f 100644
--- a/daemon/analytics.c
+++ b/daemon/analytics.c
@@ -842,7 +842,6 @@ void set_global_environment() {
setenv("NETDATA_LIB_DIR", verify_or_create_required_directory(netdata_configured_varlib_dir), 1);
setenv("NETDATA_LOCK_DIR", verify_or_create_required_directory(netdata_configured_lock_dir), 1);
setenv("NETDATA_LOG_DIR", verify_or_create_required_directory(netdata_configured_log_dir), 1);
- setenv("HOME", verify_or_create_required_directory(netdata_configured_home_dir), 1);
setenv("NETDATA_HOST_PREFIX", netdata_configured_host_prefix, 1);
{
diff --git a/daemon/main.c b/daemon/main.c
index a799726b23..3c8cb679d9 100644
--- a/daemon/main.c
+++ b/daemon/main.c
@@ -1167,8 +1167,6 @@ static void get_netdata_configured_variables() {
netdata_configured_web_dir = config_get(CONFIG_SECTION_DIRECTORIES, "web", netdata_configured_web_dir);
netdata_configured_cache_dir = config_get(CONFIG_SECTION_DIRECTORIES, "cache", netdata_configured_cache_dir);
netdata_configured_varlib_dir = config_get(CONFIG_SECTION_DIRECTORIES, "lib", netdata_configured_varlib_dir);
- char *env_home=getenv("HOME");
- netdata_configured_home_dir = config_get(CONFIG_SECTION_DIRECTORIES, "home", env_home?env_home:netdata_configured_home_dir);
netdata_configured_lock_dir = initialize_lock_directory_path(netdata_configured_varlib_dir);
@@ -2080,6 +2078,16 @@ int main(int argc, char **argv) {
if(become_daemon(dont_fork, user) == -1)
fatal("Cannot daemonize myself.");
+ // The "HOME" env var points to the root's home dir because Netdata starts as root. Can't use "HOME".
+ struct passwd *pw = getpwuid(getuid());
+ if (config_exists(CONFIG_SECTION_DIRECTORIES, "home") || !pw || !pw->pw_dir) {
+ netdata_configured_home_dir = config_get(CONFIG_SECTION_DIRECTORIES, "home", netdata_configured_home_dir);
+ } else {
+ netdata_configured_home_dir = config_get(CONFIG_SECTION_DIRECTORIES, "home", pw->pw_dir);
+ }
+
+ setenv("HOME", netdata_configured_home_dir, 1);
+
dyn_conf_init();
netdata_log_info("netdata started on pid %d.", getpid());
diff --git a/system/Makefile.am b/system/Makefile.am
index 54e9278c84..1e96f6f4f1 100644
--- a/system/Makefile.am
+++ b/system/Makefile.am
@@ -3,6 +3,7 @@
MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
CLEANFILES = \
+ install-service.sh \
cron/netdata-updater-daily \
freebsd/rc.d/netdata \
initd/init.d/netdata \