NetworkManager is a set of co-operative tools that make networking simple and
straightforward. Whether WiFi, wired, mobile or Bluetooth, NetworkManager allows
you to quickly move from one network to another.

It has two components:

1. A system level service which manages connections and reports network changes.
2. A managment tool (cli, text or graphical desktop applet) which allows the
   user to monitor and manipulate network connections. The included nmcli and
   nmtui tools provide this functionality from the command line. Desktop
   environments usually have built-in support for NetworkManager.


system connections and security
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In NetworkManager version 0.9 and onwards, network connections are stored as
keyfiles in the /etc/NetworkManager/system-connections/ directory.
When creating new wireless or wired connections, they are by default
system-owned (i.e. available to everyone) and the secrets (e.g WPA-PSK or WEP
key) are stored as plain text in the corresponding connection configuration
file. The advantage of system connections is, that they can be active before a
user has logged in and they are active across user sessions.
Modifying or creating such system-owned connections requires admin privileges.
To avoid prompts for the root/admin password, NetworkManager ships a PolicyKit
configuration file which grants everyone in group "netdev" or "sudo" the
privilege to modify a system connection without prior authentication. Adding a
user to group sudo grants them root-like privileges though. If that is not
wanted, you can choose to add them to group netdev instead.
If the user should not have the privilege to add and modify system connections
don't add them to either group.
In that case, user clients (like nm-applet) will default to creating user-owned
connections where the secrets are stored in the user keyring.
VPN and mobile connections are by default also user-owned.

For more information see NetworkManager.conf(5) or
https://www.networkmanager.dev/docs/api/latest/NetworkManager.conf.html

The keyfile specification is available at
https://networkmanager.dev/docs/api/latest/nm-settings-keyfile.html


unmanaged devices and /etc/network/interfaces
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Network devices which are configured in /etc/network/interfaces will typically
be managed by ifupdown. NetworkManager respects such a configuration and will
ignore those devices and mark them as "unmanaged".

If you want to have a network interface managed by NetworkManager it is thus
recommended to manually remove any configuration for that interface from
/etc/network/interfaces. You need to restart NetworkManager afterwards via
"systemctl restart NetworkManager".

