diff --git a/doc/TRANSIENT-SETTINGS.md b/doc/TRANSIENT-SETTINGS.md index 0ea444b..c2b5c0d 100644 --- a/doc/TRANSIENT-SETTINGS.md +++ b/doc/TRANSIENT-SETTINGS.md @@ -149,6 +149,7 @@ All execution-related settings are available for transient units. ✓ MemoryDenyWriteExecute= ✓ RestrictNamespaces= ✓ RestrictRealtime= +✓ RestrictSUIDSGID= ✓ RestrictAddressFamilies= ✓ LockPersonality= ✓ LimitCPU= diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml index 87fb8b3..45ed186 100644 --- a/man/systemd.exec.xml +++ b/man/systemd.exec.xml @@ -348,18 +348,19 @@ CapabilityBoundingSet=~CAP_B CAP_C NoNewPrivileges= - Takes a boolean argument. If true, ensures that the service process and all its children can - never gain new privileges through execve() (e.g. via setuid or setgid bits, or filesystem - capabilities). This is the simplest and most effective way to ensure that a process and its children can never - elevate privileges again. Defaults to false, but certain settings override this and ignore the value of this - setting. This is the case when SystemCallFilter=, - SystemCallArchitectures=, RestrictAddressFamilies=, - RestrictNamespaces=, PrivateDevices=, - ProtectKernelTunables=, ProtectKernelModules=, - MemoryDenyWriteExecute=, RestrictRealtime=, or - LockPersonality= are specified. Note that even if this setting is overridden by them, - systemctl show shows the original value of this setting. Also see - No New Privileges + Takes a boolean argument. If true, ensures that the service process and all its + children can never gain new privileges through execve() (e.g. via setuid or + setgid bits, or filesystem capabilities). This is the simplest and most effective way to ensure that + a process and its children can never elevate privileges again. Defaults to false, but certain + settings override this and ignore the value of this setting. This is the case when + SystemCallFilter=, SystemCallArchitectures=, + RestrictAddressFamilies=, RestrictNamespaces=, + PrivateDevices=, ProtectKernelTunables=, + ProtectKernelModules=, MemoryDenyWriteExecute=, + RestrictRealtime=, RestrictSUIDSGID= or + LockPersonality= are specified. Note that even if this setting is overridden by + them, systemctl show shows the original value of this setting. Also see No New Privileges Flag. @@ -1275,6 +1276,22 @@ RestrictNamespaces=~cgroup net + RestrictSUIDSGID= + + Takes a boolean argument. If set, any attempts to set the set-user-ID (SUID) or + set-group-ID (SGID) bits on files or directories will be denied (for details on these bits see + inode7). If + running in user mode, or in system mode, but without the CAP_SYS_ADMIN + capability (e.g. setting User=), NoNewPrivileges=yes is + implied. As the SUID/SGID bits are mechanisms to elevate privileges, and allows users to acquire the + identity of other users, it is recommended to restrict creation of SUID/SGID files to the few + programs that actually require them. Note that this restricts marking of any type of file system + object with these bits, including both regular files and directories (where the SGID is a different + meaning than for files, see documentation). Defaults to off. + + + RemoveIPC= Takes a boolean parameter. If set, all System V and POSIX IPC objects owned by the user and