1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2025-01-11 05:17:44 +03:00

Add a warning about the difference in permissions between existing directories and unit settings.

To follows the intent of 30c81ce, this change does not execute chmod() and just add warnings.
This commit is contained in:
Taro Yamada 2019-01-27 13:50:04 +09:00
parent ff9e7900c0
commit 6cff72eb0a

View File

@ -2160,9 +2160,22 @@ static int setup_exec_directory(
r = mkdir_label(p, context->directories[type].mode);
if (r < 0 && r != -EEXIST)
goto fail;
if (r == -EEXIST && !context->dynamic_user)
if (r == -EEXIST) {
struct stat st;
if (stat(p, &st) < 0) {
r = -errno;
goto fail;
}
if (((st.st_mode ^ context->directories[type].mode) & 07777) != 0)
log_warning("%s \'%s\' already exists but the mode is different. "
"(filesystem: %o %sMode: %o)",
exec_directory_type_to_string(type), *rt,
st.st_mode & 07777, exec_directory_type_to_string(type), context->directories[type].mode & 07777);
if (!context->dynamic_user)
continue;
}
}
/* Don't change the owner of the configuration directory, as in the common case it is not written to by
* a service, and shall not be writable. */