shadow/lib
Serge Hallyn 6974df39a7 newuidmap and newgidmap: support passing pid as fd
Closes #635

newuidmap and newgidmap currently take an integner pid as
the first argument, determining the process id on which to
act.  Accept also "fd:N", where N must be an open file
descriptor to the /proc/pid directory for the process to
act upon.  This way, if you

exec 10</proc/99
newuidmap fd:10 100000 0 65536

and pid 99 dies and a new process happens to take pid 99 before
newuidmap happens to do its work, then since newuidmap will use
openat() using fd 10, it won't change the mapping for the new
process.

Example:

// terminal 1:
serge@jerom ~/src/nsexec$ ./nsexec -W -s 0 -S 0 -U
about to unshare with 10000000
Press any key to exec (I am 129176)

// terminal 2:
serge@jerom ~/src/shadow$ exec 10</proc/129176
serge@jerom ~/src/shadow$ sudo chown root src/newuidmap src/newgidmap
serge@jerom ~/src/shadow$ sudo chmod u+s src/newuidmap
serge@jerom ~/src/shadow$ sudo chmod u+s src/newgidmap
serge@jerom ~/src/shadow$ ./src/newuidmap fd:10 0 100000 10
serge@jerom ~/src/shadow$ ./src/newgidmap fd:10 0 100000 10

// Terminal 1:
uid=0(root) gid=0(root) groups=0(root)

Signed-off-by: Serge Hallyn <serge@hallyn.com>
2023-02-24 12:35:49 -06:00
..
.indent.pro [svn-upgrade] Integrating new upstream version, shadow (4.0.8) 2007-10-07 11:46:07 +00:00
alloc.h libmisc: Add safer allocation macros 2023-02-23 20:28:43 -06:00
bit.h leading_zerosul(): Fix bug 2023-02-01 09:10:34 +01:00
commonio.c Use safer allocation macros 2023-02-23 20:28:43 -06:00
commonio.h changing lock mechanism 2022-12-29 13:58:49 -06:00
defines.h lib/defines.h: Add NORETURN attribute macro 2023-02-08 22:01:01 -06:00
encrypt.c Merge pull request #451 from hallyn/2021-12-05/license 2022-01-02 18:38:42 -06:00
exitcodes.h Update licensing info 2021-12-23 19:36:50 -06:00
faillog.h Update licensing info 2021-12-23 19:36:50 -06:00
fields.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
fputsx.c Update licensing info 2021-12-23 19:36:50 -06:00
get_gid.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
get_pid.c newuidmap and newgidmap: support passing pid as fd 2023-02-24 12:35:49 -06:00
get_uid.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
getdef.c Use safer allocation macros 2023-02-23 20:28:43 -06:00
getdef.h Update licensing info 2021-12-23 19:36:50 -06:00
getlong.c Update licensing info 2021-12-23 19:36:50 -06:00
getulong.c Update licensing info 2021-12-23 19:36:50 -06:00
groupio.c Use safer allocation macros 2023-02-23 20:28:43 -06:00
groupio.h Update licensing info 2021-12-23 19:36:50 -06:00
groupmem.c Use safer allocation macros 2023-02-23 20:28:43 -06:00
gshadow_.h Update licensing info 2021-12-23 19:36:50 -06:00
gshadow.c Use safer allocation macros 2023-02-23 20:28:43 -06:00
lockpw.c Don't redefine errno(3) 2022-12-22 11:43:29 +01:00
Makefile.am Assume getutent(3) exists (remove dead code) 2023-02-08 17:21:34 +01:00
mempcpy.h Add mempcpy(3) 2023-02-16 11:29:33 +01:00
nscd.c Don't redefine errno(3) 2022-12-22 11:43:29 +01:00
nscd.h * configure.in, lib/nscd.h, lib/nscd.c: Added --with-nscd flag to 2008-08-30 18:30:36 +00:00
nss.c Use safer allocation macros 2023-02-23 20:28:43 -06:00
pam_defs.h Declare constant data structure const 2023-01-25 12:31:17 +01:00
port.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
port.h Update licensing info 2021-12-23 19:36:50 -06:00
prototypes.h newuidmap and newgidmap: support passing pid as fd 2023-02-24 12:35:49 -06:00
pwauth.c Don't redefine errno(3) 2022-12-22 11:43:29 +01:00
pwauth.h Add header guards 2022-05-24 07:49:11 -05:00
pwio.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
pwio.h Update licensing info 2021-12-23 19:36:50 -06:00
pwmem.c Use safer allocation macros 2023-02-23 20:28:43 -06:00
run_part.c Use safer allocation macros 2023-02-23 20:28:43 -06:00
run_part.h Add header guards 2022-05-24 07:49:11 -05:00
selinux.c Don't redefine errno(3) 2022-12-22 11:43:29 +01:00
semanage.c Don't redefine errno(3) 2022-12-22 11:43:29 +01:00
sgetgrent.c Use safer allocation macros 2023-02-23 20:28:43 -06:00
sgetpwent.c Raise limit for passwd and shadow entry length 2022-10-14 10:41:40 +02:00
sgetspent.c Don't redefine errno(3) 2022-12-22 11:43:29 +01:00
sgroupio.c Use safer allocation macros 2023-02-23 20:28:43 -06:00
sgroupio.h Update licensing info 2021-12-23 19:36:50 -06:00
shadow.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
shadowio.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
shadowio.h Update licensing info 2021-12-23 19:36:50 -06:00
shadowlog_internal.h Fix typos 2023-01-26 22:44:39 -06:00
shadowlog.c lib: provide default values for shadow_progname/shadow_logfd 2021-12-27 16:28:23 +00:00
shadowlog.h Drop obsolete prototype for log_dolog() 2022-08-06 11:27:56 -05:00
shadowmem.c Use safer allocation macros 2023-02-23 20:28:43 -06:00
spawn.c Merge pull request #451 from hallyn/2021-12-05/license 2022-01-02 18:38:42 -06:00
sssd.c Use safer allocation macros 2023-02-23 20:28:43 -06:00
sssd.h Flush sssd caches in addition to nscd caches 2018-09-13 14:20:02 +02:00
stpecpy.h Add stpecpy() 2023-02-16 11:29:33 +01:00
stpeprintf.h Add stpeprintf() 2023-02-16 11:29:33 +01:00
subordinateio.c Use safer allocation macros 2023-02-23 20:28:43 -06:00
subordinateio.h fix newusers when nss provides subids 2021-05-23 08:16:16 -05:00
tcbfuncs.c Remove superfluous casts 2023-02-09 10:03:03 -06:00
tcbfuncs.h * lib/tcbfuncs.h: Re-indent. 2010-03-18 19:23:00 +00:00