Programa Setuid perde associações de grupo

Programa Setuid perde associações de grupo

Estou atualizando uma caixa SuSE-13.2 mais antiga para o Leap-15. Fiz uma nova instalação do Leap-15.0 e transferi o código-fonte que executamos na caixa 13.2. Eu construo bem, mas estou tendo um problema. O programa é/tem que ser um programa suid. Ele também usa // forkpara executar alguns scripts externos. E é aí que reside o meu problema. O usuário é membro de vários grupos, mas essas associações de grupos parecem desaparecer quando esses scripts externos são executados. Por exemplo, o usuário é membro do grupo para poder ejetar e trabalhar com um DVD. Eu criei um script de exemplo simples e uma fonte para um programa que é aquele script que mostra meu problema.execvpewaitcdromexecvpe

test.shroteiro:

#!/bin/sh
whoami
id

test.cfonte do programa:

#define _GNU_SOURCE
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
        char *path = getenv("PATH");
        char  pathenv[strlen(path) + sizeof("PATH=")];
        sprintf(pathenv, "PATH=%s", path);
        char *envp[] = {pathenv, NULL};
        char *tests[] = {"./test.sh", NULL};
        execvpe(tests[0], tests, envp);
}

Usar:

#cc  test.c
#./a.out
markh
uid=5076(markh) gid=100(users) groups=100(users),19(floppy),200(lcrs),484(tape),485(lp),488(disk),489(dialout),490(cdrom)

Então como root:

#chown root ./a.out
#chgrp root ./a.out
#chmod +s ./a.out

Então como usuário

#./a.out
markh
uid=5076(markh) gid=100(users) groups=100(users)

Uma vez que o programa pertence ao root e ao suid, perco todas as minhas associações ao grupo por algum motivo desconhecido. Não é adequado para mim.

Tudo isso funciona bem na antiga caixa 13.2, mas não no Leap 15 ou Leap 42.3. Eu sei que este não é um lugar do SuSE Linux, mas suspeito que não seja realmente relacionado ao SuSE Linux. Também não está relacionado ao kernel, pois estou executando um kernel 4.16.12 nas caixas 13.2 e 15.0.

informação relacionada