Como foi apontado, não há como fazê-lo. Claro, se houver um testamento, existe uma maneira: que não existe tal syscall não é motivo para que ele não possa ser feito. Dito isto, como o mtk mencionou em um comentário , imagine o caos que ele poderia criar tendo um syscall para alterar o contexto de segurança de um processo não relacionado. Se nada mais, eu vejo uma condição de corrida irrompendo em três ... dois ... um ... (e não vamos sequer começar o que mudar o contexto de segurança de init
ou getty
poderia fazer.)
Uma outra razão é que su
não só invoca um novo shell . Ele também tem a capacidade de controlar qual shell é lançado (usando -s
ou --shell
) e controlá-lo passando parâmetros via (no GNU) o -
/ -l
/ --login
e -c
( --command
) parâmetros. Os parâmetros passados para o su também podem ter um efeito no ambiente do novo shell. Assim, mesmo que você pudesse apenas alterar o contexto de segurança do processo pai, você não necessariamente desejaria fazer isso.