unit: A bug with permissions running unit from unprivileged user
Steps to reproduce bug.
Systemd configuration:
[Unit]
After=network.target
Description=Unit App Server
[Service]
Environment="LOCALE_ARCHIVE=/nix/store/xlc05n9qjwym4zhgx5251h7fj5z4ivy7-glibc-locales-2.27/lib/locale/locale-archive"
Environment="PATH=/nix/store/w8rlmb95jyz8qjgm6qzjg6qdlf6qqkda-curl-7.67.0-bin/bin:/nix/store/jc34mzphlwyg4p5w4d0lix2cj3yppqwd-coreutils-8.31/bin:/nix/store/z39bagbc4k5xa76cry58lrk0lnxay5r1-findutils-4.7.0/bin:/nix/store/33szav6q4ifp10brnkn9f4shigzcc256-gnugrep-3.3/bin:/nix/store/6j98mvsnqgj6bzrasd96s8b134z8iz34-gnused-4.7/bin:/nix/store/337hhdvk6d8d5x01lrs6b21h0lrvc6z6-systemd-243.3/bin:/nix/store/w8rlmb95jyz8qjgm6qzjg6qdlf6qqkda-curl-7.67.0-bin/sbin:/nix/store/jc34mzphlwyg4p5w4d0lix2cj3yppqwd-coreutils-8.31/sbin:/nix/store/z39bagbc4k5xa76cry58lrk0lnxay5r1-findutils-4.7.0/sbin:/nix/store/33szav6q4ifp10brnkn9f4shigzcc256-gnugrep-3.3/sbin:/nix/store/6j98mvsnqgj6bzrasd96s8b134z8iz34-gnused-4.7/sbin:/nix/store/337hhdvk6d8d5x01lrs6b21h0lrvc6z6-systemd-243.3/sbin"
Environment="TZDIR=/nix/store/imqrggn4dqdsdhzsv679wsg1vbhil9zr-tzdata-2019c/share/zoneinfo"
ExecStart=/nix/store/1b6rws6mcs26463xiqs80mrk9c6ijpn2-unit-1.13.0/bin/unitd --control 'unix:/run/unit/control.unit.sock' --pid '/run/unit/unit.pid' --log '/var/log/unit/unit.log' --state '/var/spool/unit' --no-daemon --user unit --group unit
ExecStartPost=/nix/store/7i6gg9knwhm9ixs1vr49ivhgc3iwamxw-unit-script-unit-post-start
ExecStartPre=/nix/store/7c495pr4dw64n2d7ibgxlcmccn63vpk9-unit-script-unit-pre-start
User=unit
Group=unit
RuntimeDirectory=unit
RuntimeDirectoryMode=0750
AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_SETGID CAP_SETUID
Unit configuration:
{
"listeners": {
"*:8373": {
"application": "php_72"
}
},
"applications": {
"php_72": {
"type": "php 7.2",
"processes": 1,
"user": "test-user",
"group": "test-user",
"root": "/var/www",
"index": "index.php",
"options": {
"admin": {
"max_execution_time": "30",
"max_input_time": "30",
"display_errors": "on",
"display_startup_errors": "on",
}
}
}
}
}
Test script:
<?php
posix_setgid(1);
posix_setuid(1);
$fd = fopen('/tmp/test_file','a');
fwrite($fd,"test_write\n");
fclose($fd);
?>
Result:
curl localhost:8373
ls -lah /tmp/test_file
-rw-r--r-- 1 1 wheel 11 дек 9 10:21 /tmp/test_file
If run from root:
-rw-r--r-- 1 test-user test-user 11 дек 9 10:13 /tmp/test_file
cc @tiago4orion
About this issue
- Original URL
- State: open
- Created 5 years ago
- Comments: 20 (1 by maintainers)
Hi @Izorkin
Can you test the patch below?
Thanks.