@cryptotaxi247 / netdata-1 / commits / 9fdf1c96e

set "HOME" after switching to netdata user (#16548)

Ilya Mashchenko committed Dec 7, 2023 at 15:25 UTC 9fdf1c96e4b6d65a70f52ae4dd9272121aa7f0a4
3 files changed +11 -3
daemon/analytics.c
-1
@@ -842,7 +842,6 @@ void set_global_environment() {
842 setenv("NETDATA_LIB_DIR", verify_or_create_required_directory(netdata_configured_varlib_dir), 1);
843 setenv("NETDATA_LOCK_DIR", verify_or_create_required_directory(netdata_configured_lock_dir), 1);
844 setenv("NETDATA_LOG_DIR", verify_or_create_required_directory(netdata_configured_log_dir), 1);
845 - setenv("HOME", verify_or_create_required_directory(netdata_configured_home_dir), 1);
845 setenv("NETDATA_HOST_PREFIX", netdata_configured_host_prefix, 1);
846
847 {
daemon/main.c
+10 -2
@@ -1167,8 +1167,6 @@ static void get_netdata_configured_variables() {
1167 netdata_configured_web_dir = config_get(CONFIG_SECTION_DIRECTORIES, "web", netdata_configured_web_dir);
1168 netdata_configured_cache_dir = config_get(CONFIG_SECTION_DIRECTORIES, "cache", netdata_configured_cache_dir);
1169 netdata_configured_varlib_dir = config_get(CONFIG_SECTION_DIRECTORIES, "lib", netdata_configured_varlib_dir);
1170 - char *env_home=getenv("HOME");
1171 - netdata_configured_home_dir = config_get(CONFIG_SECTION_DIRECTORIES, "home", env_home?env_home:netdata_configured_home_dir);
1170
1171 netdata_configured_lock_dir = initialize_lock_directory_path(netdata_configured_varlib_dir);
1172
@@ -2080,6 +2078,16 @@ int main(int argc, char **argv) {
2078 if(become_daemon(dont_fork, user) == -1)
2079 fatal("Cannot daemonize myself.");
2080
2081 + // The "HOME" env var points to the root's home dir because Netdata starts as root. Can't use "HOME".
2082 + struct passwd *pw = getpwuid(getuid());
2083 + if (config_exists(CONFIG_SECTION_DIRECTORIES, "home") || !pw || !pw->pw_dir) {
2084 + netdata_configured_home_dir = config_get(CONFIG_SECTION_DIRECTORIES, "home", netdata_configured_home_dir);
2085 + } else {
2086 + netdata_configured_home_dir = config_get(CONFIG_SECTION_DIRECTORIES, "home", pw->pw_dir);
2087 + }
2088 +
2089 + setenv("HOME", netdata_configured_home_dir, 1);
2090 +
2091 dyn_conf_init();
2092
2093 netdata_log_info("netdata started on pid %d.", getpid());
system/Makefile.am
+1
@@ -3,6 +3,7 @@
3
4 MAINTAINERCLEANFILES = $(srcdir)/Makefile.in
5 CLEANFILES = \
6 + install-service.sh \
7 cron/netdata-updater-daily \
8 freebsd/rc.d/netdata \
9 initd/init.d/netdata \