1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-12 20:49:12 +03:00

MDEV-9095 - [PATCH] systemd capability for --memlock

Adjust systemd files to enable CAP_IPC_LOCK to allow rootless mlockall
(triggered by memlock option).

This is amended version of a patch originally submitted by Daniel Black.
This commit is contained in:
Sergey Vojtovich
2015-12-22 14:51:26 +04:00
parent 87e6873ce9
commit 27e6fd9a59
3 changed files with 24 additions and 10 deletions

View File

@@ -5404,25 +5404,33 @@ static int init_server_components()
(void) mi_log(1); (void) mi_log(1);
#if defined(HAVE_MLOCKALL) && defined(MCL_CURRENT) && !defined(EMBEDDED_LIBRARY) #if defined(HAVE_MLOCKALL) && defined(MCL_CURRENT) && !defined(EMBEDDED_LIBRARY)
if (locked_in_memory && !getuid()) if (locked_in_memory)
{ {
if (setreuid((uid_t)-1, 0) == -1) int error;
{ // this should never happen if (user_info)
sql_perror("setreuid"); {
unireg_abort(1); DBUG_ASSERT(!getuid());
if (setreuid((uid_t) -1, 0) == -1)
{
sql_perror("setreuid");
unireg_abort(1);
}
error= mlockall(MCL_CURRENT);
set_user(mysqld_user, user_info);
} }
if (mlockall(MCL_CURRENT)) else
error= mlockall(MCL_CURRENT);
if (error)
{ {
if (global_system_variables.log_warnings) if (global_system_variables.log_warnings)
sql_print_warning("Failed to lock memory. Errno: %d\n",errno); sql_print_warning("Failed to lock memory. Errno: %d\n",errno);
locked_in_memory= 0; locked_in_memory= 0;
} }
if (user_info)
set_user(mysqld_user, user_info);
} }
else #else
locked_in_memory= 0;
#endif #endif
locked_in_memory=0;
ft_init_stopwords(); ft_init_stopwords();

View File

@@ -42,6 +42,9 @@ PrivateNetwork=false
User=mysql User=mysql
Group=mysql Group=mysql
# To allow memlock to be used as non-root user if set in configuration
CapabilityBoundingSet=CAP_IPC_LOCK
# Execute pre and post scripts as root, otherwise it does it as User= # Execute pre and post scripts as root, otherwise it does it as User=
PermissionsStartOnly=true PermissionsStartOnly=true

View File

@@ -49,6 +49,9 @@ PrivateNetwork=false
User=mysql User=mysql
Group=mysql Group=mysql
# To allow memlock to be used as non-root user if set in configuration
CapabilityBoundingSet=CAP_IPC_LOCK
# Execute pre and post scripts as root, otherwise it does it as User= # Execute pre and post scripts as root, otherwise it does it as User=
PermissionsStartOnly=true PermissionsStartOnly=true