kristapsdz / kcgi

minimal CGI and FastCGI library for C/C++
https://kristaps.bsd.lv/kcgi
ISC License
275 stars 40 forks source link

Unable to run kfcgi on Alpine Linux #87

Closed zinahe closed 3 years ago

zinahe commented 3 years ago

Hi,

I'm getting these errors

  1. When run as www
    $ kfcgi -U www -u www -- /var/www/cgi-bin/kcaldav 
    daemon: No such file or directory
  2. When run as root
    $ kfcgi -U root -u root -- /var/www/cgi-bin/kcaldav 
    kfcgi: managed to regain root privileges: aborting

What I have done so far:

  1. Compiled and installed kcfg

  2. Compiled and installed kcaldav including make installcgi

  3. I have created ./run under /var/www. Without this I get daemon: No such file or directory even when I run kfcgi as root

  4. I've created the user:group www:www and executed

    $ chown -R www:www /var/www

    Any advice ?

kristapsdz commented 3 years ago

kcaldav isn't a FastCGI utility. It's a CGI script, so it won't work.

Second, from the manpage:

By default, it opens the socket /var/www/run/httpd.sock in mode 0660
under the current user and group, changes to a file-system jail in
/var/www, daemonises and opens its system log, then starts 3 workers
executing prog, which must exist relative to the file-system jail root.

So it's now looking for /var/www/var/www/cgi-bin/kcaldav.

The error messages are terrible, though, so that's something I'll look into.

zinahe commented 3 years ago

Thanks for the quick response.

Ok; so kcaldav is a CGI script.

  1. I tried to run it under fcgiwrap which is a cgi-to-fastcgi wrapper and then I got the following when home.html tries to load. Screenshot from 2020-12-31 22-28-48

  2. Is there any way to test kcaldav from the command line? (may be by manually creating the unix-socket and then trying to read/write to it) I just need a baseline to start from.

Thanks and happy holidays !

zinahe commented 3 years ago

Just to add to my question above; I was able to compile the example code in Getting Started with CGI in C and make it work with fcgiwrap without issues.

Thanks

zinahe commented 3 years ago

No worries. I was finally able to get it working. The problem was that if kcaldav is unable to locate its log file it dies silently; which was kind of a nightmare to troubleshoot. I had to dive right into the C code to sort it out.

Cheers,

kristapsdz commented 3 years ago

Do you have a good way this might be fixed in kcaldav so that others don't run afoul of the same problem?

zinahe commented 3 years ago

Sure.

Basically, since a docker container kind of it's own jail and provides the required process isolation, I didn't need to use kcfg to setup the chroot environment to run kcalcav. As I mentioned above, I used fcgiwrap which acts as a simple cgi-to-fastcgi wrapper. This is important because nginx only supports FastCGI interface. Then, I made a minor modification of the kcaldav's Makefile as follows so that one can easily adjust the ROOT directory.

And the end-result is a barebones18MB docker image with a kcaldav + nginx proxy server running on a RPi2.

ROOT         = /var/www
CALDIR       = $(ROOT)/caldav
...
LOGPREFIX    = $(ROOT)/logs
LOGFILE      = $(LOGPREFIX)/kcaldav-system.log 
...
 installcgi: all
     ...
     mkdir -p $(DESTDIR)$(LOGPREFIX)
tacerus commented 3 years ago

I encounter the same error message trying to run scooper using kfcgi:

sudo strace /usr/local/sbin/kfcgi -v -u nginx -s /var/run/kfcgi/scooper.sock -U pounce -p /var/lib/pounce/.local -- /bin/scooper /share/litterbox/litterbox.sqlite
execve("/usr/local/sbin/kfcgi", ["/usr/local/sbin/kfcgi", "-v", "-u", "nginx", "-s", "/var/run/kfcgi/scooper.sock", "-U", "pounce", "-p", "/var/lib/pounce/.local", "--", "/bin/scooper", "/share/litterbox/litterbox.sqlit"...], 0x7fff29d4eae0 /* 15 vars */) = 0
brk(NULL)                               = 0x16a2000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=36637, ...}) = 0
mmap(NULL, 36637, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fe175e0c000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`D\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2038432, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe175e0a000
mmap(NULL, 3909496, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe175835000
mprotect(0x7fe1759e6000, 2097152, PROT_NONE) = 0
mmap(0x7fe175be6000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b1000) = 0x7fe175be6000
mmap(0x7fe175bec000, 14200, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe175bec000
close(3)                                = 0
arch_prctl(ARCH_SET_FS, 0x7fe175e0b500) = 0
mprotect(0x7fe175be6000, 12288, PROT_READ) = 0
mprotect(0x60c000, 4096, PROT_READ)     = 0
mprotect(0x7fe175e15000, 4096, PROT_READ) = 0
munmap(0x7fe175e0c000, 36637)           = 0
geteuid()                               = 0
brk(NULL)                               = 0x16a2000
brk(0x16c3000)                          = 0x16c3000
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=1144, ...}) = 0
read(3, "#\n# /etc/nsswitch.conf\n#\n# An ex"..., 4096) = 1144
read(3, "", 4096)                       = 0
close(3)                                = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=36637, ...}) = 0
mmap(NULL, 36637, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fe175e0c000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libnss_compat.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \25\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=41960, ...}) = 0
mmap(NULL, 2131872, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe17562c000
mprotect(0x7fe175633000, 2097152, PROT_NONE) = 0
mmap(0x7fe175833000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7fe175833000
close(3)                                = 0
mprotect(0x7fe175833000, 4096, PROT_READ) = 0
munmap(0x7fe175e0c000, 36637)           = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=36637, ...}) = 0
mmap(NULL, 36637, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7fe175e0c000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libnss_nis.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 !\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=55728, ...}) = 0
mmap(NULL, 2151856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe17541e000
mprotect(0x7fe17542b000, 2093056, PROT_NONE) = 0
mmap(0x7fe17562a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x7fe17562a000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib64/libnsl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200P\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=108632, ...}) = 0
mmap(NULL, 2198472, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe175205000
mprotect(0x7fe17521b000, 2093056, PROT_NONE) = 0
mmap(0x7fe17541a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7fe17541a000
mmap(0x7fe17541c000, 7112, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe17541c000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libtirpc.so.3", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\230\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=236808, ...}) = 0
mmap(NULL, 2299880, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe174fd3000
mprotect(0x7fe175003000, 2093056, PROT_NONE) = 0
mmap(0x7fe175202000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2f000) = 0x7fe175202000
mmap(0x7fe175204000, 2024, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe175204000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib64/libgssapi_krb5.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\314\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=309784, ...}) = 0
mmap(NULL, 2405344, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe174d87000
mprotect(0x7fe174dd0000, 2093056, PROT_NONE) = 0
mmap(0x7fe174fcf000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x48000) = 0x7fe174fcf000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200q\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=144048, ...}) = 0
mmap(NULL, 2220520, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe174b68000
mprotect(0x7fe174b81000, 2097152, PROT_NONE) = 0
mmap(0x7fe174d81000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0x7fe174d81000
mmap(0x7fe174d83000, 12776, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe174d83000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib64/libkrb5.so.3", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260o\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=900864, ...}) = 0
mmap(NULL, 2996640, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe17488c000
mprotect(0x7fe174958000, 2093056, PROT_NONE) = 0
mmap(0x7fe174b57000, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xcb000) = 0x7fe174b57000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib64/libk5crypto.so.3", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260O\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=199576, ...}) = 0
mmap(NULL, 2298360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe17465a000
mprotect(0x7fe174689000, 2093056, PROT_NONE) = 0
mmap(0x7fe174888000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2e000) = 0x7fe174888000
mmap(0x7fe17488b000, 504, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe17488b000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libcom_err.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\25\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=14720, ...}) = 0
mmap(NULL, 2109928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe174456000
mprotect(0x7fe174459000, 2093056, PROT_NONE) = 0
mmap(0x7fe174658000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fe174658000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib64/libkrb5support.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220;\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=52440, ...}) = 0
mmap(NULL, 2147880, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe174249000
mprotect(0x7fe174255000, 2093056, PROT_NONE) = 0
mmap(0x7fe174454000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb000) = 0x7fe174454000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib64/libkeyutils.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\26\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=14648, ...}) = 0
mmap(NULL, 2109712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe174045000
mprotect(0x7fe174048000, 2093056, PROT_NONE) = 0
mmap(0x7fe174247000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fe174247000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@?\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=96624, ...}) = 0
mmap(NULL, 2189472, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe173e2e000
mprotect(0x7fe173e41000, 2097152, PROT_NONE) = 0
mmap(0x7fe174041000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13000) = 0x7fe174041000
mmap(0x7fe174043000, 6304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe174043000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@u\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=159432, ...}) = 0
mmap(NULL, 2263688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe173c05000
mprotect(0x7fe173c2b000, 2093056, PROT_NONE) = 0
mmap(0x7fe173e2a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7fe173e2a000
mmap(0x7fe173e2c000, 6792, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe173e2c000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=18400, ...}) = 0
mmap(NULL, 2109584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe173a01000
mprotect(0x7fe173a04000, 2093056, PROT_NONE) = 0
mmap(0x7fe173c03000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fe173c03000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib64/libpcre.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\26\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=567616, ...}) = 0
mmap(NULL, 2662888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe173776000
mprotect(0x7fe173800000, 2093056, PROT_NONE) = 0
mmap(0x7fe1739ff000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x89000) = 0x7fe1739ff000
close(3)                                = 0
mprotect(0x7fe1739ff000, 4096, PROT_READ) = 0
mprotect(0x7fe173c03000, 4096, PROT_READ) = 0
mprotect(0x7fe173e2a000, 4096, PROT_READ) = 0
mprotect(0x7fe174041000, 4096, PROT_READ) = 0
mprotect(0x7fe174247000, 4096, PROT_READ) = 0
mprotect(0x7fe174454000, 4096, PROT_READ) = 0
mprotect(0x7fe174d81000, 4096, PROT_READ) = 0
mprotect(0x7fe174658000, 4096, PROT_READ) = 0
mprotect(0x7fe174888000, 8192, PROT_READ) = 0
mprotect(0x7fe174b57000, 57344, PROT_READ) = 0
mprotect(0x7fe174fcf000, 8192, PROT_READ) = 0
mprotect(0x7fe175202000, 4096, PROT_READ) = 0
mprotect(0x7fe17541a000, 4096, PROT_READ) = 0
mprotect(0x7fe17562a000, 4096, PROT_READ) = 0
set_tid_address(0x7fe175e0b7d0)         = 15249
set_robust_list(0x7fe175e0b7e0, 24)     = 0
rt_sigaction(SIGRTMIN, {sa_handler=0x7fe174b6ebf0, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7fe174b7b2d0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {sa_handler=0x7fe174b6ec90, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7fe174b7b2d0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
statfs("/sys/fs/selinux", 0x7ffe493e6120) = -1 ENOENT (No such file or directory)
statfs("/selinux", {f_type=BTRFS_SUPER_MAGIC, f_bsize=4096, f_blocks=83884795, f_bfree=69665341, f_bavail=69422670, f_files=0, f_ffree=0, f_fsid={val=[4284204370, 3009596654]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RELATIME}) = 0
openat(AT_FDCWD, "/proc/filesystems", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "nodev\tsysfs\nnodev\ttmpfs\nnodev\tbd"..., 1024) = 344
read(3, "", 1024)                       = 0
close(3)                                = 0
access("/etc/selinux/config", F_OK)     = 0
munmap(0x7fe175e0c000, 36637)           = 0
openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
lseek(3, 0, SEEK_CUR)                   = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=2531, ...}) = 0
mmap(NULL, 2531, PROT_READ, MAP_SHARED, 3, 0) = 0x7fe175e14000
lseek(3, 2531, SEEK_SET)                = 2531
munmap(0x7fe175e14000, 2531)            = 0
close(3)                                = 0
openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
lseek(3, 0, SEEK_CUR)                   = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=2531, ...}) = 0
mmap(NULL, 2531, PROT_READ, MAP_SHARED, 3, 0) = 0x7fe175e14000
lseek(3, 2531, SEEK_SET)                = 2531
munmap(0x7fe175e14000, 2531)            = 0
close(3)                                = 0
socket(AF_UNIX, SOCK_STREAM, 0)         = 3
unlink("/var/run/kfcgi/scooper.sock")   = 0
umask(0117)                             = 022
bind(3, {sa_family=AF_UNIX, sun_path="/var/run/kfcgi/scooper.sock"}, 110) = 0
umask(022)                              = 0117
chown("/var/run/kfcgi/scooper.sock", 490, 510) = 0
listen(3, 10)                           = 0
chroot("/var/lib/pounce/.local")        = 0
chdir("/")                              = 0
setgid(440)                             = 0
setuid(440)                             = 0
setuid(0)                               = -1 EPERM (Operation not permitted)
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fe175e0b7d0) = 15250
exit_group(0)                           = ?
+++ exited with 0 +++
daemon: No such file or directory

I tried it with the added -d option as well, however I assume it is looking for a logging socket, which I cannot provide (at least to my knowledge, systemd-journald, does not allow spawning additional sockets for chroot use):

sudo strace /usr/local/sbin/kfcgi -d -v -u nginx -s /var/run/kfcgi/scooper.sock -U pounce -p /var/lib/pounce/.local -- /bin/scooper /share/litterbox/litterbox.sqlite
execve("/usr/local/sbin/kfcgi", ["/usr/local/sbin/kfcgi", "-d", "-v", "-u", "nginx", "-s", "/var/run/kfcgi/scooper.sock", "-U", "pounce", "-p", "/var/lib/pounce/.local", "--", "/bin/scooper", "/share/litterbox/litterbox.sqlit"...], 0x7ffe45fd9768 /* 15 vars */) = 0
brk(NULL)                               = 0x208d000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=36637, ...}) = 0
mmap(NULL, 36637, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7ff441654000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0`D\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=2038432, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ff441652000
mmap(NULL, 3909496, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff44107d000
mprotect(0x7ff44122e000, 2097152, PROT_NONE) = 0
mmap(0x7ff44142e000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b1000) = 0x7ff44142e000
mmap(0x7ff441434000, 14200, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7ff441434000
close(3)                                = 0
arch_prctl(ARCH_SET_FS, 0x7ff441653500) = 0
mprotect(0x7ff44142e000, 12288, PROT_READ) = 0
mprotect(0x60c000, 4096, PROT_READ)     = 0
mprotect(0x7ff44165d000, 4096, PROT_READ) = 0
munmap(0x7ff441654000, 36637)           = 0
geteuid()                               = 0
brk(NULL)                               = 0x208d000
brk(0x20ae000)                          = 0x20ae000
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
close(3)                                = 0
open("/etc/nsswitch.conf", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=1144, ...}) = 0
read(3, "#\n# /etc/nsswitch.conf\n#\n# An ex"..., 4096) = 1144
read(3, "", 4096)                       = 0
close(3)                                = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=36637, ...}) = 0
mmap(NULL, 36637, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7ff441654000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libnss_compat.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 \25\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=41960, ...}) = 0
mmap(NULL, 2131872, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff440e74000
mprotect(0x7ff440e7b000, 2097152, PROT_NONE) = 0
mmap(0x7ff44107b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7ff44107b000
close(3)                                = 0
mprotect(0x7ff44107b000, 4096, PROT_READ) = 0
munmap(0x7ff441654000, 36637)           = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=36637, ...}) = 0
mmap(NULL, 36637, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7ff441654000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libnss_nis.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0 !\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=55728, ...}) = 0
mmap(NULL, 2151856, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff440c66000
mprotect(0x7ff440c73000, 2093056, PROT_NONE) = 0
mmap(0x7ff440e72000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x7ff440e72000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib64/libnsl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200P\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=108632, ...}) = 0
mmap(NULL, 2198472, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff440a4d000
mprotect(0x7ff440a63000, 2093056, PROT_NONE) = 0
mmap(0x7ff440c62000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7ff440c62000
mmap(0x7ff440c64000, 7112, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7ff440c64000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libtirpc.so.3", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\230\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=236808, ...}) = 0
mmap(NULL, 2299880, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff44081b000
mprotect(0x7ff44084b000, 2093056, PROT_NONE) = 0
mmap(0x7ff440a4a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2f000) = 0x7ff440a4a000
mmap(0x7ff440a4c000, 2024, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7ff440a4c000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib64/libgssapi_krb5.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0P\314\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=309784, ...}) = 0
mmap(NULL, 2405344, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff4405cf000
mprotect(0x7ff440618000, 2093056, PROT_NONE) = 0
mmap(0x7ff440817000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x48000) = 0x7ff440817000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libpthread.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200q\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=144048, ...}) = 0
mmap(NULL, 2220520, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff4403b0000
mprotect(0x7ff4403c9000, 2097152, PROT_NONE) = 0
mmap(0x7ff4405c9000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x19000) = 0x7ff4405c9000
mmap(0x7ff4405cb000, 12776, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7ff4405cb000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib64/libkrb5.so.3", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260o\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=900864, ...}) = 0
mmap(NULL, 2996640, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff4400d4000
mprotect(0x7ff4401a0000, 2093056, PROT_NONE) = 0
mmap(0x7ff44039f000, 69632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xcb000) = 0x7ff44039f000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib64/libk5crypto.so.3", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260O\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=199576, ...}) = 0
mmap(NULL, 2298360, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff43fea2000
mprotect(0x7ff43fed1000, 2093056, PROT_NONE) = 0
mmap(0x7ff4400d0000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2e000) = 0x7ff4400d0000
mmap(0x7ff4400d3000, 504, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7ff4400d3000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libcom_err.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\25\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=14720, ...}) = 0
mmap(NULL, 2109928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff43fc9e000
mprotect(0x7ff43fca1000, 2093056, PROT_NONE) = 0
mmap(0x7ff43fea0000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7ff43fea0000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib64/libkrb5support.so.0", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220;\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=52440, ...}) = 0
mmap(NULL, 2147880, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff43fa91000
mprotect(0x7ff43fa9d000, 2093056, PROT_NONE) = 0
mmap(0x7ff43fc9c000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb000) = 0x7ff43fc9c000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib64/libkeyutils.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\26\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=14648, ...}) = 0
mmap(NULL, 2109712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff43f88d000
mprotect(0x7ff43f890000, 2093056, PROT_NONE) = 0
mmap(0x7ff43fa8f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7ff43fa8f000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libresolv.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@?\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=96624, ...}) = 0
mmap(NULL, 2189472, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff43f676000
mprotect(0x7ff43f689000, 2097152, PROT_NONE) = 0
mmap(0x7ff43f889000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13000) = 0x7ff43f889000
mmap(0x7ff43f88b000, 6304, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7ff43f88b000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libselinux.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@u\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=159432, ...}) = 0
mmap(NULL, 2263688, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff43f44d000
mprotect(0x7ff43f473000, 2093056, PROT_NONE) = 0
mmap(0x7ff43f672000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x25000) = 0x7ff43f672000
mmap(0x7ff43f674000, 6792, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7ff43f674000
close(3)                                = 0
openat(AT_FDCWD, "/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=18400, ...}) = 0
mmap(NULL, 2109584, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff43f249000
mprotect(0x7ff43f24c000, 2093056, PROT_NONE) = 0
mmap(0x7ff43f44b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7ff43f44b000
close(3)                                = 0
openat(AT_FDCWD, "/usr/lib64/libpcre.so.1", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\260\26\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=567616, ...}) = 0
mmap(NULL, 2662888, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ff43efbe000
mprotect(0x7ff43f048000, 2093056, PROT_NONE) = 0
mmap(0x7ff43f247000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x89000) = 0x7ff43f247000
close(3)                                = 0
mprotect(0x7ff43f247000, 4096, PROT_READ) = 0
mprotect(0x7ff43f44b000, 4096, PROT_READ) = 0
mprotect(0x7ff43f672000, 4096, PROT_READ) = 0
mprotect(0x7ff43f889000, 4096, PROT_READ) = 0
mprotect(0x7ff43fa8f000, 4096, PROT_READ) = 0
mprotect(0x7ff43fc9c000, 4096, PROT_READ) = 0
mprotect(0x7ff4405c9000, 4096, PROT_READ) = 0
mprotect(0x7ff43fea0000, 4096, PROT_READ) = 0
mprotect(0x7ff4400d0000, 8192, PROT_READ) = 0
mprotect(0x7ff44039f000, 57344, PROT_READ) = 0
mprotect(0x7ff440817000, 8192, PROT_READ) = 0
mprotect(0x7ff440a4a000, 4096, PROT_READ) = 0
mprotect(0x7ff440c62000, 4096, PROT_READ) = 0
mprotect(0x7ff440e72000, 4096, PROT_READ) = 0
set_tid_address(0x7ff4416537d0)         = 15552
set_robust_list(0x7ff4416537e0, 24)     = 0
rt_sigaction(SIGRTMIN, {sa_handler=0x7ff4403b6bf0, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7ff4403c32d0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {sa_handler=0x7ff4403b6c90, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7ff4403c32d0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
prlimit64(0, RLIMIT_STACK, NULL, {rlim_cur=8192*1024, rlim_max=RLIM64_INFINITY}) = 0
statfs("/sys/fs/selinux", 0x7ffe422b6a90) = -1 ENOENT (No such file or directory)
statfs("/selinux", {f_type=BTRFS_SUPER_MAGIC, f_bsize=4096, f_blocks=83884795, f_bfree=69664648, f_bavail=69422045, f_files=0, f_ffree=0, f_fsid={val=[4284204370, 3009596654]}, f_namelen=255, f_frsize=4096, f_flags=ST_VALID|ST_RELATIME}) = 0
openat(AT_FDCWD, "/proc/filesystems", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
read(3, "nodev\tsysfs\nnodev\ttmpfs\nnodev\tbd"..., 1024) = 344
read(3, "", 1024)                       = 0
close(3)                                = 0
access("/etc/selinux/config", F_OK)     = 0
munmap(0x7ff441654000, 36637)           = 0
openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
lseek(3, 0, SEEK_CUR)                   = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=2531, ...}) = 0
mmap(NULL, 2531, PROT_READ, MAP_SHARED, 3, 0) = 0x7ff44165c000
lseek(3, 2531, SEEK_SET)                = 2531
munmap(0x7ff44165c000, 2531)            = 0
close(3)                                = 0
openat(AT_FDCWD, "/etc/passwd", O_RDONLY|O_CLOEXEC) = 3
lseek(3, 0, SEEK_CUR)                   = 0
fstat(3, {st_mode=S_IFREG|0644, st_size=2531, ...}) = 0
mmap(NULL, 2531, PROT_READ, MAP_SHARED, 3, 0) = 0x7ff44165c000
lseek(3, 2531, SEEK_SET)                = 2531
munmap(0x7ff44165c000, 2531)            = 0
close(3)                                = 0
socket(AF_UNIX, SOCK_STREAM, 0)         = 3
unlink("/var/run/kfcgi/scooper.sock")   = 0
umask(0117)                             = 022
bind(3, {sa_family=AF_UNIX, sun_path="/var/run/kfcgi/scooper.sock"}, 110) = 0
umask(022)                              = 0117
chown("/var/run/kfcgi/scooper.sock", 490, 510) = 0
listen(3, 10)                           = 0
chroot("/var/lib/pounce/.local")        = 0
chdir("/")                              = 0
setgid(440)                             = 0
setuid(440)                             = 0
setuid(0)                               = -1 EPERM (Operation not permitted)
rt_sigaction(SIGTERM, {sa_handler=0x401e4b, sa_mask=[TERM], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7ff4410b64a0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGCHLD, {sa_handler=0x401e5f, sa_mask=[CHLD], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7ff4410b64a0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGHUP, {sa_handler=0x401e37, sa_mask=[HUP], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7ff4410b64a0}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigprocmask(SIG_BLOCK, [HUP TERM CHLD], [], 8) = 0
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7ff4416537d0) = 15553
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7ff4416537d0) = 15554
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLDkfcgi[15553]: execve: /bin/scooper: No such file or directory
, child_tidptr=0x7ff4416537d0) = 15555
kfcgi[15554]: execve: /bin/scooper: No such file or directory
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7ff4416537d0) = 15556
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7ff4416537d0) = 15557
rt_sigsuspend([], 8kfcgi[15555]: execve: /bin/scooper: No such file or directory
)                    = ? ERESTARTNOHAND (To be restarted if no handler)
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=15553, si_uid=440, si_status=1, si_utime=0, si_stime=0} ---
rt_sigreturn({mask=[HUP TERM CHLD]}kfcgi[15557]: execve: /bin/scooper: No such file or directory)    = -1 EINTR (Interrupted system call)
kfcgi[15556]: execve: /bin/scooper: No such file or directory

open("/etc/localtime", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
getpid()                                = 15552
writev(2, [{iov_base="kfcgi[15552]: worker unexpectedl"..., iov_len=40}, {iov_base="\n", iov_len=1}], 2kfcgi[15552]: worker unexpectedly exited
) = 41
socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 4
connect(4, {sa_family=AF_UNIX, sun_path="/dev/log"}, 110) = -1 ENOENT (No such file or directory)
close(4)                                = 0
close(3)                                = 0
rt_sigaction(SIGCHLD, {sa_handler=SIG_DFL, sa_mask=[CHLD], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7ff4410b64a0}, {sa_handler=0x401e5f, sa_mask=[CHLD], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7ff4410b64a0}, 8) = 0
kill(15553, SIGTERM)                    = 0
kill(15554, SIGTERM)                    = 0
kill(15555, SIGTERM)                    = 0
kill(15556, SIGTERM)                    = 0
kill(15557, SIGTERM)                    = 0
wait4(15553, NULL, 0, NULL)             = 15553
wait4(15554, NULL, 0, NULL)             = 15554
wait4(15555, NULL, 0, NULL)             = 15555
wait4(15556, NULL, 0, NULL)             = 15556
wait4(15557, NULL, 0, NULL)             = 15557
rt_sigaction(SIGCHLD, {sa_handler=0x401e5f, sa_mask=[CHLD], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7ff4410b64a0}, {sa_handler=SIG_DFL, sa_mask=[CHLD], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7ff4410b64a0}, 8) = 0
exit_group(0)                           = ?
+++ exited with 0 +++

The scooper binary of course exists in the chroot:

ls -ahl /var/lib/pounce/.local/bin/scooper
-rwxr-xr-x 1 pounce pounce 324K May 27 12:37 /var/lib/pounce/.local/bin/scooper*

What is the "daemon" file it is looking for in the non -d startup? Is it supposed to be provided by scooper or kfcgi? Are there any further dependencies? I resolved some libnss_nis2 dependency errors I found in previous strace runs but now it looks like I installed everything it could possibly require.

tacerus commented 3 years ago

I solved it by bind-mounting /dev /lib /lib64 and /usr into the chroot. Very confusing error message.

kristapsdz commented 3 years ago

I'm closing this because it's due to chrooting, not kcgi or kfcgi. If any specific error message in kfcgi or kcgi should be changed, or language modified for easier deployment understanding, please let me know!

fuck-shithub commented 1 year ago

@kristapsdz I just ran into this issue yesterday. And indeed, if I pass -p / it works, but I can't get it to work with chrooting. Why is chrooting outside the scope of this issue? Do you know what might be going on?