diff --git a/.gitignore b/.gitignore index bf962c8abe..f793204262 100644 --- a/.gitignore +++ b/.gitignore @@ -81,7 +81,6 @@ test-*.trs /data/org.freedesktop.NetworkManager.service /data/server.conf /data/org.freedesktop.NetworkManager.policy -/data/org.freedesktop.NetworkManager.policy.in /data/nm-sudo.service /data/nm-priv-helper.service /data/NetworkManager-config-initrd.service diff --git a/NEWS b/NEWS index f9f1832be4..c93798c62b 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,10 @@ USE AT YOUR OWN RISK. NOT RECOMMENDED FOR PRODUCTION USE! * Install the systemd units in the initramfs using a systemd generator. * A new "check-connectivity" configuration option is available to disable the connectivity check for selected interfaces. +* Remove the modify_system build option that allowed setting up the + polkit permissions to allow non-admin users to create system-wide + connection. That configuration is discouraged because it can be used + to bypass filesystem permissions. ============================================= NetworkManager-1.56 diff --git a/contrib/fedora/rpm/NetworkManager.spec b/contrib/fedora/rpm/NetworkManager.spec index 820cfda607..bfcc1089ae 100644 --- a/contrib/fedora/rpm/NetworkManager.spec +++ b/contrib/fedora/rpm/NetworkManager.spec @@ -665,7 +665,6 @@ Preferably use nmcli instead. -Dselinux=true \ -Dpolkit=true \ -Dconfig_auth_polkit_default=true \ - -Dmodify_system=true \ -Dconcheck=true \ %if 0%{?fedora} -Dlibpsl=true \ diff --git a/contrib/fedora/rpm/configure-for-system.sh b/contrib/fedora/rpm/configure-for-system.sh index e52e372bca..62999b11b5 100755 --- a/contrib/fedora/rpm/configure-for-system.sh +++ b/contrib/fedora/rpm/configure-for-system.sh @@ -401,7 +401,6 @@ meson setup\ -Dselinux=true \ -Dpolkit=true \ -Dconfig_auth_polkit_default=true \ - -Dmodify_system=true \ -Dconcheck=true \ -Dlibpsl="$(bool_true "$P_FEDORA")" \ -Dsession_tracking=systemd \ diff --git a/data/meson.build b/data/meson.build index b77bf4340c..afe1800b56 100644 --- a/data/meson.build +++ b/data/meson.build @@ -55,16 +55,8 @@ if install_udevdir endif if enable_polkit - policy = 'org.freedesktop.NetworkManager.policy' - - policy_in = configure_file( - input: policy + '.in.in', - output: '@BASENAME@', - configuration: data_conf, - ) - i18n.merge_file( - input: policy_in, + input: 'org.freedesktop.NetworkManager.policy.in', output: '@BASENAME@', po_dir: po_dir, install: true, diff --git a/data/org.freedesktop.NetworkManager.policy.in.in b/data/org.freedesktop.NetworkManager.policy.in similarity index 98% rename from data/org.freedesktop.NetworkManager.policy.in.in rename to data/org.freedesktop.NetworkManager.policy.in index 13a0a5b504..cb143a2dd2 100644 --- a/data/org.freedesktop.NetworkManager.policy.in.in +++ b/data/org.freedesktop.NetworkManager.policy.in @@ -117,8 +117,8 @@ System policy prevents modification of network settings for all users auth_admin_keep - @NM_MODIFY_SYSTEM_POLICY@ - @NM_MODIFY_SYSTEM_POLICY@ + auth_admin_keep + auth_admin_keep diff --git a/meson.build b/meson.build index 56bbe28163..49f5b4214a 100644 --- a/meson.build +++ b/meson.build @@ -519,6 +519,10 @@ endif config_h.set_quoted('NM_CONFIG_DEFAULT_MAIN_AUTH_POLKIT', config_auth_polkit_default) enable_modify_system = get_option('modify_system') +if enable_modify_system + # FIXME: remove this after everyone has stopped using modify_system + error('modify_system=true is no longer allowed due to security reasons') +endif polkit_agent_helper_1_path = get_option('polkit_agent_helper_1') foreach p : [ '/usr/libexec/polkit-agent-helper-1', @@ -951,7 +955,6 @@ data_conf.set('NM_DHCP_CLIENTS_ENABLED', ', '.join(config_dhcp_c data_conf.set('NM_MAJOR_VERSION', nm_major_version) data_conf.set('NM_MICRO_VERSION', nm_micro_version) data_conf.set('NM_MINOR_VERSION', nm_minor_version) -data_conf.set('NM_MODIFY_SYSTEM_POLICY', (enable_modify_system ? 'yes' : 'auth_admin_keep')) data_conf.set('NM_VERSION', nm_version) data_conf.set('VERSION', nm_version) data_conf.set('bindir', nm_bindir) @@ -1082,17 +1085,7 @@ output += ' dbus_conf_dir: ' + dbus_conf_dir + '\n' output += '\nPlatform:\n' output += ' session tracking: ' + ','.join(session_trackers) + '\n' output += ' suspend/resume: ' + suspend_resume + '\n' -output += ' policykit: ' + enable_polkit.to_string() + ' (default: ' + config_auth_polkit_default + ')' -if enable_polkit - output += ' (' - if enable_modify_system - output += 'permissive' - else - output += 'restrictive' - endif - output += ' modify.system)' -endif -output += '\n' +output += ' policykit: ' + enable_polkit.to_string() + ' (default: ' + config_auth_polkit_default + ')\n' output += ' polkit-agent-helper-1: ' + polkit_agent_helper_1_path + '\n' output += ' selinux: ' + enable_selinux.to_string() + '\n' output += ' systemd-journald: ' + enable_systemd_journal.to_string() + ' (default: logging.backend=' + config_logging_backend_default + ')\n' diff --git a/meson_options.txt b/meson_options.txt index 8ec68a46bd..44d50c6a7a 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -19,7 +19,7 @@ option('session_tracking', type: 'combo', choices: ['systemd', 'elogind', 'no'], option('suspend_resume', type: 'combo', choices: ['systemd', 'elogind', 'consolekit', 'auto'], value: 'auto', description: 'Build NetworkManager with specific suspend/resume support') option('polkit', type: 'boolean', value: true, description: 'User auth-polkit configuration option.') option('config_auth_polkit_default', type: 'combo', choices: ['default', 'true', 'false', 'root-only'], value: 'default', description: 'Default value for configuration main.auth-polkit.') -option('modify_system', type: 'boolean', value: false, description: 'Allow users to modify system connections') +option('modify_system', type: 'boolean', value: false, description: 'Allow users to modify system connections (option no longer supported, don\'t use)') option('polkit_agent_helper_1', type: 'string', value: '', description: 'Path name to the polkit-agent-helper-1 binary from polkit') option('selinux', type: 'boolean', value: true, description: 'Build with SELinux') option('systemd_journal', type: 'boolean', value: true, description: 'Use systemd journal for logging') diff --git a/po/POTFILES.in b/po/POTFILES.in index feeaf9ebbe..20bd8f253a 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,6 +1,6 @@ # List of source files containing translatable strings. # Please keep this file sorted alphabetically. -data/org.freedesktop.NetworkManager.policy.in.in +data/org.freedesktop.NetworkManager.policy.in src/core/NetworkManagerUtils.c src/core/devices/adsl/nm-device-adsl.c src/core/devices/bluetooth/nm-bluez-manager.c