Revert "selinux: split up mac_selinux_have() from mac_selinux_use()"
This reverts commit 6355e75610.
The previously mentioned commit inadvertently broke a lot of SELinux related
functionality for both unprivileged users and systemd instances running as
MANAGER_USER. In particular, setting the correct SELinux context after a User=
directive is used would fail to work since we attempt to set the security
context after changing UID. Additionally, it causes activated socket units to
be mislabeled for systemd --user processes since setsockcreatecon() would never
be called.
Reverting this fixes the issues with labeling outlined above, and reinstates
SELinux access checks on unprivileged user services.
This commit is contained in:
@@ -53,7 +53,7 @@ static struct selabel_handle *label_hnd = NULL;
|
||||
#define log_enforcing(...) log_full(security_getenforce() == 1 ? LOG_ERR : LOG_DEBUG, __VA_ARGS__)
|
||||
#endif
|
||||
|
||||
bool mac_selinux_have(void) {
|
||||
bool mac_selinux_use(void) {
|
||||
#ifdef HAVE_SELINUX
|
||||
if (cached_use < 0)
|
||||
cached_use = is_selinux_enabled() > 0;
|
||||
@@ -64,16 +64,6 @@ bool mac_selinux_have(void) {
|
||||
#endif
|
||||
}
|
||||
|
||||
bool mac_selinux_use(void) {
|
||||
if (!mac_selinux_have())
|
||||
return false;
|
||||
|
||||
/* Never try to configure SELinux features if we aren't
|
||||
* root */
|
||||
|
||||
return getuid() == 0;
|
||||
}
|
||||
|
||||
void mac_selinux_retest(void) {
|
||||
#ifdef HAVE_SELINUX
|
||||
cached_use = -1;
|
||||
@@ -205,7 +195,7 @@ int mac_selinux_get_create_label_from_exe(const char *exe, char **label) {
|
||||
assert(exe);
|
||||
assert(label);
|
||||
|
||||
if (!mac_selinux_have())
|
||||
if (!mac_selinux_use())
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
r = getcon_raw(&mycon);
|
||||
@@ -231,7 +221,7 @@ int mac_selinux_get_our_label(char **label) {
|
||||
assert(label);
|
||||
|
||||
#ifdef HAVE_SELINUX
|
||||
if (!mac_selinux_have())
|
||||
if (!mac_selinux_use())
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
r = getcon_raw(label);
|
||||
@@ -255,7 +245,7 @@ int mac_selinux_get_child_mls_label(int socket_fd, const char *exe, const char *
|
||||
assert(exe);
|
||||
assert(label);
|
||||
|
||||
if (!mac_selinux_have())
|
||||
if (!mac_selinux_use())
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
r = getcon_raw(&mycon);
|
||||
@@ -310,7 +300,7 @@ char* mac_selinux_free(char *label) {
|
||||
if (!label)
|
||||
return NULL;
|
||||
|
||||
if (!mac_selinux_have())
|
||||
if (!mac_selinux_use())
|
||||
return NULL;
|
||||
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
#include "macro.h"
|
||||
|
||||
bool mac_selinux_use(void);
|
||||
bool mac_selinux_have(void);
|
||||
void mac_selinux_retest(void);
|
||||
|
||||
int mac_selinux_init(void);
|
||||
|
||||
Reference in New Issue
Block a user