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 if [ -d "/agents/$userName/harness" ]; then
chown -hR "$userName:$userName" "/agents/$userName/harness" 2>/dev/null || true chown -hR "$userName:$userName" "/agents/$userName/harness" 2>/dev/null || true
fi 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 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 fi
# The socket dir is bind-mounted from the host, where hive-priv creates # 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 # 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 # hive-c0re creates the host work dir as hive-core; this activation is
# the only thing that lets the agent write to it. # the only thing that lets the agent write to it.
name = "the agent's activation hands its own work dir to the agent user"; 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, # hive-priv creates the host socket dir `0751 root` and never chowns it,