A "arquitetura" do arquivo não é alterada - cabe a você verificar se possui um formato correto. Ou seja, o arquivo já precisa ser um binário ELF válido, ou um script com um cabeçalho #!
válido, ou algo mais que seu kernel específico reconheça (como a.out ou MZ / PE) .
O que o chmod
faz é apenas definir um bit nas permissões do arquivo dizendo ao kernel que o usuário está permitido para executar este arquivo. Pode atuar como uma pequena barreira de segurança, bem como prevenir certos tipos de acidentes. (Observe que +x
aqui é uma abreviação de ugo+x
; é um bit de permissão como leitura / gravação.)
Se você definir + x em um arquivo que o kernel não reconhece, apenas retornará um código de erro do exec
syscall. (Note que alguns shells têm tratamento especial para isso - se o kernel reportou "formato não reconhecido", o shell tentará interpretar o arquivo como um script internamente , pois foi assim que os scripts trabalharam antes de #!
inventado .)