A solução real para esse problema é conversar com seu instrutor para fornecer contas separadas ou para alterar as atribuições para serem atribuições de grupo. Se ele não puder ou não fizer isso, eu simplesmente ignoraria qualquer tentativa de plágio de outros alunos. Você não perde nada quando copia seu trabalho, eles perdem.
Dito isto, aqui está uma maneira de manter seu código-fonte virtualmente inacessível para qualquer outra pessoa.
you@local$ ssh shared@cluster "gcc -x c -o yourdir/secret -" < source.c
Observe o traço no final do comando gcc. Isso significa que o gcc irá ler a fonte do stdin. Isso irá compilar source.c
de sua máquina local para yourdir/secret
no cluster. O código fonte secreto nunca existirá como um arquivo "real" no cluster. Ele só existirá como um fluxo em algum buffer (no processo sshd, eu assumo).
Se o seu código não estiver escrito em C, você terá que alterar a c
na opção -x c
. Consulte aqui para obter mais informações sobre isso.
Outros alunos ainda podem pegar seu arquivo compilado e descompilar isso. Para minimizar até mesmo esse risco, você pode excluir o arquivo logo após compilar e executar.
you@local$ ssh shared@cluster "gcc -x c -o yourdir/secret - && yourdir/secret ; rm yourdir/secret" < source.c
Se você é realmente paranóico, certifique-se de estar executando o gcc real. Outros alunos podem escrever um wrapper em torno do gcc, que salva o código-fonte antes de compilá-lo e colocar esse wrapper em seu caminho. Você também deve executar o real rm.
you@local$ ssh shared@cluster "/usr/bin/gcc -x c -o yourdir/secret - && yourdir/secret ; /bin/rm yourdir/secret" < source.c