O que torna o Linux diferente do Windows em termos de execução de ficheiros é que o primeiro sistema define os ficheiros executáveis como ficheiros de programa, não pela sua extensão, mas por um sinalizador de executabilidade especial. Assim, cada ficheiro tem três modos de executabilidade: ler, executar e escrever. São estes modos que determinam o que o sistema pode fazer com um determinado ficheiro. Quando um utilizador descarrega vários instaladores da Internet ou cria um script, são-lhe atribuídos os seguintes modos por defeito: leitura e escrita. Em suma, o utilizador não poderá fazer nada com esse programa, uma vez que é necessário fazer outra coisa com ele.
Mas antes de mais, devemos abordar uma questão como: o que é a executabilidade e o que significa em geral? Comecemos por um programa, que é um conjunto de instruções executadas por um processador sobre um conjunto de dados, de modo a obter o resultado pretendido. Para o processador, não existe qualquer diferença entre instruções e dados.
Tanto os primeiros como os segundos são constituídos por dígitos - bytes. Ou seja, uma determinada combinação de dígitos significará para o processador a necessidade de realizar uma determinada ação. Para o processador não há diferença fundamental quanto ao processo a executar - dados do sistema operativo ou um ficheiro de texto. Tanto o primeiro como o segundo serão executados, exceto que, no caso de um ficheiro de texto, a necessidade de instruções é efetivamente eliminada.
Os sinalizadores de executabilidade foram inventados para que o sistema entenda quais instruções devem ser executadas e quais não devem ser executadas. De facto, o conteúdo não muda de forma alguma dependendo da classe de executabilidade definida - a diferença reduz-se apenas a algumas linhas. Com os scripts tudo funciona da mesma forma, apenas os comandos são executados não pelo processador, mas por um intérprete, por exemplo, nos scripts bash - pela própria shell bash. Os programas regulares também têm o seu próprio carregador - é o ld-linux.so.2.
O sistema Linux tem um utilitário especial que permite gerir as flags, que se chama chmod
. Para chamar este utilitário, é necessário invocar a sintaxe:
$ chmod category action flag file_address
E aqui deve ser considerado o seguinte:
Bandeira - uma das bandeiras disponíveis -
r
(leitura),w
(escrita),x
(execução).Categoria - pode ser definida para três categorias: proprietário do ficheiro, grupo de dados e todos os outros utilizadores. No comando, são indicadas por
u
(utilizador)g
(grupo)o
(outros), respetivamente.Ação - pode ser + (mais), o que significa definir o sinalizador ou - (menos) remover o sinalizador.
Assim, para tornar um script executável em Linux, o utilizador precisa de executar:
$ chmod u+x file_address
Muitas vezes isto já é suficiente para o tornar executável, mas se for necessário autorizar outros utilizadores a executar estes ficheiros, é necessário acrescentar mais:
$ chmod ugo+x file_address
Para os ver no terminal, basta usar o utilitário ls:
$ ls -l file_directory
Os sinalizadores são incluídos para todas as categorias. Os primeiros rwx
são sinalizadores de proprietário, os segundos são sinalizadores de grupo, e os terceiros são para todos os outros. Se não estiver definido, um traço tomará o seu lugar.
Desativar a flag executável é muito fácil. O mesmo comando é usado, mas com um sinal de menos:
$ chmod u-x file_address
De seguida, vamos considerar a questão da definição da capacidade de gestão na GUI.
Para os principiantes, esta instrução será mais fácil. Tomemos o gestor do GNOME, Nautilus, como exemplo. Clique com o botão direito do rato no nosso programa ou objeto de script para abrir o menu de contexto e, em seguida, selecione propriedades:
Vá ao separador das permissões e selecione "Permitir que o ficheiro seja executado como um programa":
Agora será iniciado pelo sistema diretamente a partir do gestor. Esta é a instrução completa. Agora já não terá qualquer dificuldade em lançar um programa ou script a partir da Internet.