Watch
0
0
Fork
You've already forked hyperhive
0

agents: chown work/ recursively only on owner mismatch

This commit is contained in:
atlas 2026-10-05 13:01:14 +02:00
commit 8e0597d41d
2 changed files with 8 additions and 2 deletions

View file

@ -209,8 +209,12 @@ in
if [ -d "/agents/$userName/harness" ]; then
chown -hR "$userName:$userName" "/agents/$userName/harness" 2>/dev/null || true
fi
# work/ holds large build trees and the agent creates everything in
# it, so only an ownership mismatch on the top dir needs a full walk.
if [ -d "/agents/$userName/work" ]; then
chown -hR "$userName:$userName" "/agents/$userName/work" 2>/dev/null || true
if [ "$(stat -c %U "/agents/$userName/work")" != "$userName" ]; then
chown -hR "$userName:$userName" "/agents/$userName/work" 2>/dev/null || true
fi
fi
# The socket dir is bind-mounted from the host, where hive-priv creates
# it `0751 root`. The harness binds its sockets here as this user; the

View file

@ -30,7 +30,9 @@ let
# hive-c0re creates the host work dir as hive-core; this activation is
# the only thing that lets the agent write to it.
name = "the agent's activation hands its own work dir to the agent user";
ok = lib.hasInfix ''chown -hR "$userName:$userName" "/agents/$userName/work"'' migrate;
ok =
lib.hasInfix ''if [ "$(stat -c %U "/agents/$userName/work")" != "$userName" ]; then'' migrate
&& lib.hasInfix ''chown -hR "$userName:$userName" "/agents/$userName/work"'' migrate;
}
{
# hive-priv creates the host socket dir `0751 root` and never chowns it,