O artigo que se segue aborda de modo sistemático e sob diversas maneiras a respeito de como dar permissão de execução a um arquivo, quer seja este arquivo um script, quer seja um binário.
Compreender como dar permissão de execução a um determinado arquivo nos sistemas
GNU/Linux e, em alguma medida, compreender o significado dessa permissão de execução, entre outros motivos, é relevante porque, por padrão, todo arquivo criado ou baixado da internet tem os seus atributos de permissões configurados sem permissão de execução. Caso precise das propriedades de execução de um determinado arquivo, por conseguinte, é necessário configurar diretamente sua permissão de execução.
Nos sistemas GNU/Linux, mas não apenas e diferentemente de alguns outros sistemas, um arquivo executável não é definido por sua extensão, mas por sua propriedade de execução.
Nesse tipo de sistema, o que se costuma entender por "extensão" do nome do arquivo não passa de uma parte do seu nome; a "extensão" do nome do arquivo no GNU/Linux é, tão somente, um conjunto de caracteres partícipe do seu nome -- assim como qualquer outro conjunto de caracteres que compõem o nome do arquivo.
O que define se um determinado arquivo (script ou binário) se constitui como um arquivo executável, deveras, é os seus atributos de permissão estar configurado para permitir execução.
Em poucas palavras, um determinado arquivo é considerado um executável quando tem a permissão de execução.
Porém, a permissão de execução é algo mais amplo do que, simplesmente, a definição do atributo relacionado à execução configurado permissivamente. A permissão de execução envolve um conjunto de atributos que congrega os atributos de permissão de execução e de leitura. A permissão de execução, portanto, pressupõe a permissão de leitura.
Para que um determinado usuário possa executar um determinado arquivo, não basta que esse usuário esteja contemplado no escopo de usuários do atributo de execução; é igualmente necessário que esteja contido no escopo de usuários do atributo de leitura. O atributo de execução, por si só, não garante a permissão de execução. O usuário precisa ter sobre o arquivo, há um só tempo, permissão de execução e permissão de leitura.
A observância da unidade entre esses dois atributos (de execução e de leitura) para a efetiva permissão de execução é especialmente importante nos casos em que o sistema possui mais de um usuário cadastrado. Quando o sistema é utilizado por mais de um usuário, cada um com sua conta, está sempre presente a possibilidade de um determinado arquivo estar configurado com o seu atributo para permitir execução a "todos os usuários", ainda que o seu atributo de leitura esteja configurado à permissão apenas para o "usuário dono" do arquivo.
Neste caso, o usuário que não é o proprietário do arquivo, embora tivesse permissão sobre o atributo de execução, não teria permissão sobre o atributo de leitura. O hipotético usuário, logo, não possuiria permissão suficiente para a execução do arquivo.
Quando o sistema é utilizado por um único usuário, entretanto, essa preocupação com a permissão de leitura pode ser renegada a segundo plano. Uma vez que, por padrão (definido pelo comando "umask"), a permissão de leitura dos arquivos criados (ou baixados) são definidas com permissão para o "proprietário do arquivo", então, é de se considerar que todos os arquivos presentes no sistema terão, no mínimo, a permissão de leitura lhe garantida.
Compreender como se dar permissão de execução a um determinado arquivo e, em alguma medida, compreender o significado dessa permissão de execução, entre outros motivos, é relevante porque, por padrão (também definido pelo comando "umask"), todo arquivo criado ou baixado da internet tem os seus atributos de permissões configurados sem permissão de execução. Caso se precise das propriedades de execução de um determinado arquivo, por conseguinte, é necessário configurar diretamente sua permissão de execução.
Vejamos agora, na sequência desta introdução, algumas formas de definir a propriedade de um arquivo como sendo uma propriedade com permissão de execução: isso, tanto por intermédio do Terminal (em seus Modos Textual e Octal) quanto por intermédio da Interface Gráfica.
Em ambos os casos, a permissão de execução poderá ser realizada pelo "usuário comum" ou pelo "superusuário" (root): quando se pode utilizar um ou o outro tipo de usuário vai depender, unicamente, de quem é o dono do arquivo (proprietário).
O "root" pode alterar a permissão para execução (e não apenas) de qualquer arquivo independentemente de qual usuário seja o proprietário; já o "usuário comum", apenas pode alterar essa permissão (e todas as outras) daqueles arquivos dos quais este usuário seja o dono.