]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t/lib-git.sh: fix ACL-related permissions failure
authorAdam Dinwoodie <adam@dinwoodie.org>
Fri, 5 Nov 2021 19:31:06 +0000 (19:31 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 5 Nov 2021 20:44:37 +0000 (13:44 -0700)
As well as checking that the relevant functionality is available, the
GPGSSH prerequisite check creates the SSH keys that are used by the test
functions it gates.  If these keys are created in a directory that
has a default Access Control List, the key files can inherit those
permissions.

This can result in a scenario where the private keys are created
successfully, so the prerequisite check passes and the tests are run,
but the key files have permissions that are too permissive, meaning
OpenSSH will refuse to load them and the tests will fail.

To avoid this happening, before creating the keys, clear any default ACL
set on the directory that will contain them.  This step allowed to fail;
if setfacl isn't present, that's a very likely indicator that the
filesystem in question simply doesn't support default ACLs.

Helped-by: Fabian Stelzer <fs@gigacodes.de>
Signed-off-by: Adam Dinwoodie <adam@dinwoodie.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/lib-gpg.sh

index f99ef3e859dd433b720c789cc1f26aae1796bbb6..1d8e5b5b7ec050f9b5c889d9147dc954d1a5a62d 100644 (file)
@@ -106,6 +106,7 @@ test_lazy_prereq GPGSSH '
        test $? = 0 || exit 1;
        mkdir -p "${GNUPGHOME}" &&
        chmod 0700 "${GNUPGHOME}" &&
+       (setfacl -k "${GNUPGHOME}" 2>/dev/null || true) &&
        ssh-keygen -t ed25519 -N "" -C "git ed25519 key" -f "${GPGSSH_KEY_PRIMARY}" >/dev/null &&
        echo "\"principal with number 1\" $(cat "${GPGSSH_KEY_PRIMARY}.pub")" >> "${GPGSSH_ALLOWED_SIGNERS}" &&
        ssh-keygen -t rsa -b 2048 -N "" -C "git rsa2048 key" -f "${GPGSSH_KEY_SECONDARY}" >/dev/null &&