summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorParnell Springmeyer <parnell@digitalmentat.com>2017-01-28 20:48:03 -0800
committerParnell Springmeyer <parnell@digitalmentat.com>2017-01-28 20:48:03 -0800
commite92b8402b05f34072a20075ed54660e7a7237cc3 (patch)
tree554ae0ff77ff4192a895bab155e5e7116c80f28d
parent9de070e620544f9637b20966eec62cbff42988d8 (diff)
Addressing PR feedback
-rw-r--r--nixos/doc/manual/release-notes/rl-1609.xml2
-rw-r--r--nixos/doc/manual/release-notes/rl-1703.xml8
-rw-r--r--nixos/modules/config/shells-environment.nix4
-rw-r--r--nixos/modules/installer/tools/nixos-generate-config.pl2
-rw-r--r--nixos/modules/installer/tools/nixos-install.sh7
-rw-r--r--nixos/modules/module-list.nix2
-rw-r--r--nixos/modules/programs/kbdlight.nix9
-rw-r--r--nixos/modules/programs/light.nix9
-rw-r--r--nixos/modules/programs/shadow.nix48
-rw-r--r--nixos/modules/security/apparmor-suid.nix4
-rw-r--r--nixos/modules/security/chromium-suid-sandbox.nix6
-rw-r--r--nixos/modules/security/duosec.nix11
-rw-r--r--nixos/modules/security/pam.nix35
-rw-r--r--nixos/modules/security/pam_usb.nix17
-rw-r--r--nixos/modules/security/permissions-wrappers/default.nix191
-rw-r--r--nixos/modules/security/polkit.nix18
-rw-r--r--nixos/modules/security/sudo.nix17
-rw-r--r--nixos/modules/security/wrappers/default.nix191
-rw-r--r--nixos/modules/security/wrappers/permissions-wrapper.c (renamed from nixos/modules/security/permissions-wrappers/permissions-wrapper.c)0
-rw-r--r--nixos/modules/security/wrappers/setcap-wrapper-drv.nix (renamed from nixos/modules/security/permissions-wrappers/setcap-wrapper-drv.nix)4
-rw-r--r--nixos/modules/security/wrappers/setuid-wrapper-drv.nix (renamed from nixos/modules/security/permissions-wrappers/setuid-wrapper-drv.nix)12
-rw-r--r--nixos/modules/services/logging/logcheck.nix4
-rw-r--r--nixos/modules/services/mail/dovecot.nix2
-rw-r--r--nixos/modules/services/mail/exim.nix12
-rw-r--r--nixos/modules/services/mail/mail.nix2
-rw-r--r--nixos/modules/services/monitoring/munin.nix4
-rw-r--r--nixos/modules/services/monitoring/smartd.nix2
-rw-r--r--nixos/modules/services/network-filesystems/samba.nix2
-rw-r--r--nixos/modules/services/networking/gale.nix2
-rw-r--r--nixos/modules/services/networking/prayer.nix2
-rw-r--r--nixos/modules/services/networking/smokeping.nix20
-rw-r--r--nixos/modules/services/scheduling/atd.nix2
-rw-r--r--nixos/modules/services/scheduling/cron.nix18
-rw-r--r--nixos/modules/services/scheduling/fcron.nix13
-rw-r--r--nixos/modules/services/system/dbus.nix4
-rw-r--r--nixos/modules/services/x11/desktop-managers/enlightenment.nix11
-rw-r--r--nixos/modules/services/x11/desktop-managers/kde4.nix2
-rw-r--r--nixos/modules/services/x11/desktop-managers/kde5.nix2
-rw-r--r--nixos/modules/system/boot/stage-2-init.sh8
-rw-r--r--nixos/modules/tasks/network-interfaces.nix47
-rw-r--r--nixos/modules/virtualisation/virtualbox-host.nix4
-rw-r--r--nixos/tests/smokeping.nix2
-rw-r--r--pkgs/applications/editors/sublime3/default.nix2
-rw-r--r--pkgs/applications/networking/browsers/chromium/default.nix4
-rw-r--r--pkgs/applications/networking/instant-messengers/gale/gale-install.in.patch2
-rw-r--r--pkgs/applications/version-management/gitlab/remove-hardcoded-locations.patch2
-rw-r--r--pkgs/applications/virtualization/virtualbox/hardened.patch6
-rw-r--r--pkgs/build-support/build-fhs-userenv/env.nix2
-rw-r--r--pkgs/desktops/enlightenment/enlightenment.nix6
-rw-r--r--pkgs/development/libraries/kde-frameworks/kinit/start_kdeinit-path.patch2
-rw-r--r--pkgs/development/libraries/libgksu/default.nix4
-rw-r--r--pkgs/development/libraries/polkit/default.nix2
-rw-r--r--pkgs/development/tools/unity3d/default.nix2
-rw-r--r--pkgs/os-specific/linux/fuse/default.nix2
-rw-r--r--pkgs/os-specific/linux/mdadm/4.nix2
-rw-r--r--pkgs/os-specific/linux/mdadm/default.nix2
-rw-r--r--pkgs/os-specific/linux/pam/default.nix2
-rw-r--r--pkgs/os-specific/linux/util-linux/default.nix2
-rw-r--r--pkgs/servers/interlock/default.nix2
-rw-r--r--pkgs/servers/mail/petidomo/default.nix2
-rw-r--r--pkgs/servers/monitoring/nagios/plugins/official-2.x.nix4
-rw-r--r--pkgs/tools/X11/x11vnc/default.nix4
-rw-r--r--pkgs/tools/admin/certbot/default.nix2
-rw-r--r--pkgs/tools/misc/debian-devscripts/default.nix2
-rw-r--r--pkgs/tools/security/ecryptfs/default.nix2
-rw-r--r--pkgs/tools/security/ecryptfs/helper.nix2
-rw-r--r--pkgs/tools/security/sudo/default.nix2
-rw-r--r--pkgs/tools/system/at/default.nix2
-rw-r--r--pkgs/tools/system/cron/default.nix2
-rw-r--r--pkgs/tools/system/ts/default.nix2
70 files changed, 322 insertions, 512 deletions
diff --git a/nixos/doc/manual/release-notes/rl-1609.xml b/nixos/doc/manual/release-notes/rl-1609.xml
index bf8be1b68f26..ade7d5581ced 100644
--- a/nixos/doc/manual/release-notes/rl-1609.xml
+++ b/nixos/doc/manual/release-notes/rl-1609.xml
@@ -202,7 +202,7 @@ following incompatible changes:</para>
<listitem>
<para>The directory container setuid wrapper programs,
- <filename>/var/permissions-wrappers</filename>, <link
+ <filename>/var/setuid-wrappers</filename>, <link
xlink:href="https://github.com/NixOS/nixpkgs/pull/18124">is now
updated atomically to prevent failures if the switch to a new
configuration is interrupted.</link></para>
diff --git a/nixos/doc/manual/release-notes/rl-1703.xml b/nixos/doc/manual/release-notes/rl-1703.xml
index 177010e2a322..94aa674fed6c 100644
--- a/nixos/doc/manual/release-notes/rl-1703.xml
+++ b/nixos/doc/manual/release-notes/rl-1703.xml
@@ -15,6 +15,14 @@ has the following highlights: </para>
xlink:href="https://nixos.org/nixpkgs/manual/#sec-overlays-install">Nixpkgs
manual</link> for more information.</para>
</listitem>
+
+ <listitem>
+
+ <para>Setting capabilities on programs is now supported with a
+ <literal>setcap-wrapper</literal> functionality. This
+ functionality and the <literal>setuid-wrapper</literal> are merged
+ into a single "wrappers" module.</para>
+ </listitem>
</itemizedlist>
<para>The following new services were added since the last release:</para>
diff --git a/nixos/modules/config/shells-environment.nix b/nixos/modules/config/shells-environment.nix
index 7003c0745224..8a7b3ea0bfd2 100644
--- a/nixos/modules/config/shells-environment.nix
+++ b/nixos/modules/config/shells-environment.nix
@@ -168,8 +168,8 @@ in
${cfg.extraInit}
- # The setuid wrappers override other bin directories.
- export PATH="${config.security.permissionsWrapperDir}:$PATH"
+ # The setuid/setcap wrappers override other bin directories.
+ export PATH="${config.security.wrapperDir}:$PATH"
# ~/bin if it exists overrides other bin directories.
export PATH="$HOME/bin:$PATH"
diff --git a/nixos/modules/installer/tools/nixos-generate-config.pl b/nixos/modules/installer/tools/nixos-generate-config.pl
index bb379dafc642..657c28f095dd 100644
--- a/nixos/modules/installer/tools/nixos-generate-config.pl
+++ b/nixos/modules/installer/tools/nixos-generate-config.pl
@@ -343,7 +343,7 @@ foreach my $fs (read_file("/proc/self/mountinfo")) {
# Skip special filesystems.
next if in($mountPoint, "/proc") || in($mountPoint, "/dev") || in($mountPoint, "/sys") || in($mountPoint, "/run") || $mountPoint eq "/var/lib/nfs/rpc_pipefs";
- next if $mountPoint eq "/var/permissions-wrappers";
+ next if $mountPoint eq "/run/wrappers";
# Skip the optional fields.
my $n = 6; $n++ while $fields[$n] ne "-"; $n++;
diff --git a/nixos/modules/installer/tools/nixos-install.sh b/nixos/modules/installer/tools/nixos-install.sh
index 4e9f8ab60f2c..36b1a47956d6 100644
--- a/nixos/modules/installer/tools/nixos-install.sh
+++ b/nixos/modules/installer/tools/nixos-install.sh
@@ -92,14 +92,13 @@ fi
mkdir -m 0755 -p $mountPoint/dev $mountPoint/proc $mountPoint/sys $mountPoint/etc $mountPoint/run $mountPoint/home
mkdir -m 01777 -p $mountPoint/tmp
mkdir -m 0755 -p $mountPoint/tmp/root
-mkdir -m 0755 -p $mountPoint/var/permissions-wrappers
+mkdir -m 0755 -p $mountPoint/var
mkdir -m 0700 -p $mountPoint/root
mount --rbind /dev $mountPoint/dev
mount --rbind /proc $mountPoint/proc
mount --rbind /sys $mountPoint/sys
mount --rbind / $mountPoint/tmp/root
mount -t tmpfs -o "mode=0755" none $mountPoint/run
-mount -t tmpfs -o "mode=0755" none $mountPoint/var/permissions-wrappers
rm -rf $mountPoint/var/run
ln -s /run $mountPoint/var/run
for f in /etc/resolv.conf /etc/hosts; do rm -f $mountPoint/$f; [ -f "$f" ] && cp -Lf $f $mountPoint/etc/; done
@@ -260,9 +259,9 @@ chroot $mountPoint /nix/var/nix/profiles/system/activate
# Ask the user to set a root password.
-if [ -z "$noRootPasswd" ] && chroot $mountPoint [ -x /var/permissions-wrappers/passwd ] && [ -t 0 ]; then
+if [ -z "$noRootPasswd" ] && chroot $mountPoint [ -x /run/wrappers/passwd ] && [ -t 0 ]; then
echo "setting root password..."
- chroot $mountPoint /var/permissions-wrappers/passwd
+ chroot $mountPoint /run/wrappers/passwd
fi
diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix
index f7206ea931b4..bd351460a528 100644
--- a/nixos/modules/module-list.nix
+++ b/nixos/modules/module-list.nix
@@ -113,7 +113,7 @@
./security/prey.nix
./security/rngd.nix
./security/rtkit.nix
- ./security/permissions-wrappers
+ ./security/wrappers
./security/sudo.nix
./services/amqp/activemq/default.nix
./services/amqp/rabbitmq.nix
diff --git a/nixos/modules/programs/kbdlight.nix b/nixos/modules/programs/kbdlight.nix
index 30767a03291a..0172368e968f 100644
--- a/nixos/modules/programs/kbdlight.nix
+++ b/nixos/modules/programs/kbdlight.nix
@@ -11,13 +11,6 @@ in
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.kbdlight ];
-
- security.permissionsWrappers.setuid =
- [ { program = "kbdlight";
- source = "${pkgs.kbdlight.out}/bin/kbdlight";
- owner = "root";
- group = "root";
- setuid = true;
- }];
+ security.setuidPrograms = [ "kbdlight" ];
};
}
diff --git a/nixos/modules/programs/light.nix b/nixos/modules/programs/light.nix
index c89f8e937216..09cd1113d9c7 100644
--- a/nixos/modules/programs/light.nix
+++ b/nixos/modules/programs/light.nix
@@ -21,13 +21,6 @@ in
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.light ];
-
- security.permissionsWrappers.setuid =
- [ { program = "light";
- source = "${pkgs.light.out}/bin/light";
- owner = "root";
- group = "root";
- setuid = true;
- }];
+ security.setuidPrograms = [ "light" ];
};
}
diff --git a/nixos/modules/programs/shadow.nix b/nixos/modules/programs/shadow.nix
index 08d96cbcf4b5..c5a503180266 100644
--- a/nixos/modules/programs/shadow.nix
+++ b/nixos/modules/programs/shadow.nix
@@ -101,49 +101,9 @@ in
chpasswd = { rootOK = true; };
};
-
- security.permissionsWrappers.setuid =
- [
- { program = "su";
- source = "${pkgs.shadow.su}/bin/su";
- owner = "root";
- group = "root";
- setuid = true;
- }
-
- { program = "chfn";
- source = "${pkgs.shadow.out}/bin/chfn";
- owner = "root";
- group = "root";
- setuid = true;
- }
- ] ++
- (lib.optionals config.users.mutableUsers
- map (x: x // { owner = "root";
- group = "root";
- setuid = true;
- })
- [
- { program = "passwd";
- source = "${pkgs.shadow.out}/bin/passwd";
- }
-
- { program = "sg";
- source = "${pkgs.shadow.out}/bin/sg";
- }
-
- { program = "newgrp";
- source = "${pkgs.shadow.out}/bin/newgrp";
- }
-
- { program = "newuidmap";
- source = "${pkgs.shadow.out}/bin/newuidmap";
- }
-
- { program = "newgidmap";
- source = "${pkgs.shadow.out}/bin/newgidmap";
- }
- ]
- );
+ security.setuidPrograms = [
+ "su" "chfn" "newuidmap" "newgidmap"
+ ] ++ lib.optionals config.users.mutableUsers
+ [ "passwd" "sg" "newgrp" ];
};
}
diff --git a/nixos/modules/security/apparmor-suid.nix b/nixos/modules/security/apparmor-suid.nix
index 799f27b6708f..e7b870864ee2 100644
--- a/nixos/modules/security/apparmor-suid.nix
+++ b/nixos/modules/security/apparmor-suid.nix
@@ -19,7 +19,7 @@ with lib;
config = mkIf (cfg.confineSUIDApplications) {
security.apparmor.profiles = [ (pkgs.writeText "ping" ''
#include <tunables/global>
- /var/permissions-wrappers/ping {
+ /run/wrappers/ping {
#include <abstractions/base>
#include <abstractions/consoles>
#include <abstractions/nameservice>
@@ -33,7 +33,7 @@ with lib;
${pkgs.attr.out}/lib/libattr.so* mr,
${pkgs.iputils}/bin/ping mixr,
- /var/permissions-wrappers/ping.real r,
+ /run/wrappers/ping.real r,
#/etc/modules.conf r,
diff --git a/nixos/modules/security/chromium-suid-sandbox.nix b/nixos/modules/security/chromium-suid-sandbox.nix
index 6fe252136390..0699fbb728a7 100644
--- a/nixos/modules/security/chromium-suid-sandbox.nix
+++ b/nixos/modules/security/chromium-suid-sandbox.nix
@@ -27,10 +27,6 @@ in
config = mkIf cfg.enable {
environment.systemPackages = [ sandbox ];
- security.permissionsWrappers.setuid = [
- { program = sandbox.passthru.sandboxExecutableName;
- source = "${sandbox}/bin/${sandbox.passthru.sandboxExecutableName}";
- }
- ];
+ security.setuidPrograms = [ sandbox.passthru.sandboxExecutableName ];
};
}
diff --git a/nixos/modules/security/duosec.nix b/nixos/modules/security/duosec.nix
index e5b354270153..ee62c34438e5 100644
--- a/nixos/modules/security/duosec.nix
+++ b/nixos/modules/security/duosec.nix
@@ -188,16 +188,7 @@ in
environment.systemPackages = [ pkgs.duo-unix ];
- security.permissionsWrappers.setuid =
- [
- { program = "login_duo";
- source = "${pkgs.duo-unix.out}/bin/login_duo";
- owner = "root";
- group = "root";
- setuid = true;
- }
- ];
-
+ security.setuidPrograms = [ "login_duo" ];
environment.etc = loginCfgFile ++ pamCfgFile;
/* If PAM *and* SSH are enabled, then don't do anything special.
diff --git a/nixos/modules/security/pam.nix b/nixos/modules/security/pam.nix
index c5088b64bb31..3c944acf6cfa 100644
--- a/nixos/modules/security/pam.nix
+++ b/nixos/modules/security/pam.nix
@@ -472,33 +472,14 @@ in
++ optionals config.security.pam.enableU2F [ pkgs.pam_u2f ]
++ optionals config.security.pam.enableEcryptfs [ pkgs.ecryptfs ];
- security.permissionsWrappers.setuid =
- [
- { program = "unix_chkpwd";
- source = "${pkgs.pam}/sbin/unix_chkpwd.orig";
- owner = "root";
- group = "root";
- setuid = true;
- }
-
-
-
- ] ++ (optional config.security.pam.enableEcryptfs
- { program = "umount.ecryptfs_private";
- source = "${pkgs.ecryptfs.out}/bin/umount.ecryptfs_private";
- owner = "root";
- group = "root";
- setuid = true;
- }
- ) ++ (optional config.security.pam.enableEcryptfs
- { program = "mount.ecryptfs_private";
- source = "${pkgs.ecryptfs.out}/bin/mount.ecryptfs_private";
- owner = "root";
- group = "root";
- setuid = true;
- }
- );
-
+ security.setuidPrograms =
+ optionals config.security.pam.enableEcryptfs [ "mount.ecryptfs_private" "umount.ecryptfs_private" ];
+
+ security.wrappers.unix_chkpwd = {
+ source = "${pkgs.pam}/sbin/unix_chkpwd.orig";
+ owner = "root";
+ setuid = true;
+ };
environment.etc =
mapAttrsToList (n: v: makePAMService v) config.security.pam.services;
diff --git a/nixos/modules/security/pam_usb.nix b/nixos/modules/security/pam_usb.nix
index 53a7921a2440..032f8e38d111 100644
--- a/nixos/modules/security/pam_usb.nix
+++ b/nixos/modules/security/pam_usb.nix
@@ -33,22 +33,7 @@ in
config = mkIf (cfg.enable || anyUsbAuth) {
# Make sure pmount and pumount are setuid wrapped.
- security.permissionsWrappers.setuid =
- [
- { program = "pmount";
- source = "${pkgs.pmount.out}/bin/pmount";
- owner = "root";
- group = "root";
- setuid = true;
- }
-
- { program = "pumount";
- source = "${pkgs.pmount.out}/bin/pumount";
- owner = "root";
- group = "root";
- setuid = true;
- }
- ];
+ security.setuidPrograms = [ "pmount" "pumount" ];
environment.systemPackages = [ pkgs.pmount ];
diff --git a/nixos/modules/security/permissions-wrappers/default.nix b/nixos/modules/security/permissions-wrappers/default.nix
deleted file mode 100644
index 480bd371040e..000000000000
--- a/nixos/modules/security/permissions-wrappers/default.nix
+++ /dev/null
@@ -1,191 +0,0 @@
-{ config, lib, pkgs, ... }:
-let
-
- inherit (config.security) run-permissionsWrapperDir permissionsWrapperDir;
-
- isNotNull = v: if v != null then true else false;
-
- cfg = config.security.permissionsWrappers;
-
- setcapWrappers = import ./setcap-wrapper-drv.nix {
- inherit config lib pkgs;
- };
-
- setuidWrappers = import ./setuid-wrapper-drv.nix {
- inherit config lib pkgs;
- };
-
- ###### Activation script for the setcap wrappers
- configureSetcapWrapper =
- { program
- , capabilities
- , source ? null
- , owner ? "nobody"
- , group ? "nogroup"
- }: ''
- cp ${setcapWrappers}/bin/${program}.wrapper $permissionsWrapperDir/${program}
-
- # Prevent races
- chmod 0000 $permissio