diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2016-09-27 14:18:26 +0200 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2016-09-29 13:05:28 +0200 |
commit | c5ddb7dd56d9eb71cbe0430bcf85596d298caef8 (patch) | |
tree | 8e73568ce2758af4f217637c9b257d5ed9f15650 /pkgs/os-specific | |
parent | 030e20f759d5a4e4962eabd4069fd06ae059e6f3 (diff) | |
download | nixlib-c5ddb7dd56d9eb71cbe0430bcf85596d298caef8.tar nixlib-c5ddb7dd56d9eb71cbe0430bcf85596d298caef8.tar.gz nixlib-c5ddb7dd56d9eb71cbe0430bcf85596d298caef8.tar.bz2 nixlib-c5ddb7dd56d9eb71cbe0430bcf85596d298caef8.tar.lz nixlib-c5ddb7dd56d9eb71cbe0430bcf85596d298caef8.tar.xz nixlib-c5ddb7dd56d9eb71cbe0430bcf85596d298caef8.tar.zst nixlib-c5ddb7dd56d9eb71cbe0430bcf85596d298caef8.zip |
Move useSetUID to pam_usb, the only place where it's used
Diffstat (limited to 'pkgs/os-specific')
-rw-r--r-- | pkgs/os-specific/linux/pam_usb/default.nix | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/pkgs/os-specific/linux/pam_usb/default.nix b/pkgs/os-specific/linux/pam_usb/default.nix index a96e951bf9b1..cedb9bca1a0f 100644 --- a/pkgs/os-specific/linux/pam_usb/default.nix +++ b/pkgs/os-specific/linux/pam_usb/default.nix @@ -1,6 +1,32 @@ -{stdenv, fetchurl, makeWrapper, useSetUID, dbus, libxml2, pam, pkgconfig, pmount, pythonPackages}: +{ stdenv, fetchurl, makeWrapper, useSetUID, dbus, libxml2, pam, pkgconfig, pmount, pythonPackages, writeScript }: let + + # Search in the environment if the same program exists with a set uid or + # set gid bit. If it exists, run the first program found, otherwise run + # the default binary. + useSetUID = drv: path: + let + name = baseNameOf path; + bin = "${drv}${path}"; + in assert name != ""; + writeScript "setUID-${name}" '' + #!${stdenv.shell} + inode=$(stat -Lc %i ${bin}) + for file in $(type -ap ${name}); do + case $(stat -Lc %a $file) in + ([2-7][0-7][0-7][0-7]) + if test -r "$file".real; then + orig=$(cat "$file".real) + if test $inode = $(stat -Lc %i "$orig"); then + exec "$file" "$@" + fi + fi;; + esac + done + exec ${bin} "$@" + ''; + pmountBin = useSetUID pmount "/bin/pmount"; pumountBin = useSetUID pmount "/bin/pumount"; inherit (pythonPackages) python dbus-python; |