Modo "Permissões clássicas de ptrace" já permite o rastreamento de processos executados como seu uid, mas nada de privilegiado. Coloque isso em /etc/sysctl.d/program.conf
kernel.yama.ptrace_scope = 0
Se o programa for executado como um usuário diferente, permita alternar para esse usuário para executar o gdb. Tal como com uma regra de sudo.
Em seguida, o gdb pode ser chamado com a sintaxe gdb program
ou gdb -p PID
.
Realmente restringi-lo para rastrear apenas um programa, nem mesmo outros sendo executados como usuário, é mais difícil. Atualmente, o CentOS 7 não possui nenhuma política de SELinux direcionada para o gdb. Rodar sem limites significa que o SELinux não se aplica e permitirá o mesmo usuário ou CAP_SYS_PTRACE.
Você pode definir políticas para o seu programa e para o GDB e permitir que ele faça o que quiser.
allow gdb_t program_t:process { ptrace } ;
O problema é que nenhum desses tipos existe ainda. Você também teria que descobrir todas as transições de domínio necessárias para confinar o gdb, mas ainda funcionar.
Existe um booleano que já existe que irá desligar o ptrace globalmente. Não é muito útil, pois não há exceções, mas você pode impedir que o root rastreie processos.
setsebool -P deny_ptrace on