#4559: libcap-2.28
--------------------+----------------------
Reporter: bdubbs | Owner: lfs-book
Type: task | Status: new
Priority: normal | Milestone: 9.1
Component: Book | Version: SVN
Severity: normal | Keywords:
--------------------+----------------------
New minor version.
Release notes for 2.28
- The big new feature of this release relates to POSIX syscall behavior
for pthreads:
- That is, introduced a library libpsx that can emulate POSIX syscalls
for all pthreads
- You might think that this is already the case from Glibc's nptl:setxid
functionality,
but alas no. Glibc only supports 9 syscalls with this abstraction and
none of them
involve prctl() support, or capset(). So, while traditional legacy
things like
setuid() work, libcap's capability manipulation mediated through the
glibc syscalls
was still tied to individual threads...
- TL;DR with gcc linker flags, " -lpsx -Wl,-wrap,pthread_create " (or
the ld equivalent
" -lpsx -wrap=pthread_create "), you can get libcap to observe POSIX
semantics
sharing capability and prctl state over all pthreads.
- Also added a pair of golang packages implementing libcap/cap and
libcap/psx
(preview no install targets yet).
- Writing this caused me to delve into the unfortunate state of threads
and
privilege handling in Go, which in turn led me to investigate the
detail
of how Glibc was not supporting libcap.
- Wrote a golang runtime/syscall/cgo patch to implement POSIX semantics
for
system calls in native Go on linux (see contrib/golang)
- Wrote a tiny webserver to demonstrate/debug how Go's native privilege
handling
was failing and could work with above patch
- Found a way to conditionally link -lpsx to the libcap/cap Go package
to fully
support capabilities via cgo (in lieu of syscall.PosixSyscall() not
being upstream yet).
- libcap/Makefile: Handle old gperf versions
- More rigor on the unsigned nature of shifted bit masks in libcap
- Minor cleanup to libcap's cap_to_text handling code.
--
Ticket URL: <http://wiki.linuxfromscratch.org/lfs/ticket/4559>
LFS Trac <http://wiki.linuxfromscratch.org/lfs/>
Linux From Scratch: Your Distro, Your Rules.
--
http://lists.linuxfromscratch.org/listinfo/lfs-book
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page