
Eu queria instalar determinado software. O pacote tinha muitos arquivos, incluindo alguns arquivos de script de shell. Inicialmente tive que selecionar alguns arquivos e depois torná-los executáveis:
chmod 777 shellscr1
mas então percebi que existem muitos desses arquivos que terei que tornar executáveis. Então, como atalho, fiz o seguinte:
chmod 777 *
e agora todos os arquivos são executáveis.
Há alguma consequência séria em fazer isso (além da segurança)?
Responder1
Dependendo do programa, isso pode não ter efeitos negativos ou pode inutilizar o software.
Por exemplo, altere as permissões do seu diretório ~/.ssh e veja qual erro você obtém ao tentar fazer o ssh em outra máquina.
Alguns programas acessam arquivos de configuração como um usuário específico. com permissões 777, qualquer um poderia sobrescrever o arquivo fazendoeleso proprietário do arquivo.
Responder2
Conforme apontado por outros, não há razão (pelo menos não apresentada na pergunta) para que os arquivos precisem ser graváveis em todo o mundo. Algo como chmod 755 *
ou chmod +x *
deveria ser suficiente.
No entanto, vou restringir ainda mais a resposta e dar-lhe uma resposta que nãoexatamenteo que você está pedindo. Espera-se sempre que um script de shell comece com umShebangcomo
#!/usr/bin/env bash
Então aqui está um trecho que irá procurar quaisquer arquivos no diretório atual começando com os caracteres #!/
e torná-los executáveis. Em outras palavras, este comando marcará apenas os arquivos que se parecem com scripts de shell como executáveis.
for file in *; do [ "$(head -c 3 "$file")" = '#!/' ] && chmod +x "$file"; done;
Responder3
Além da segurança, não há consequências graves. (falando logicamente, é claro)
Responder4
Inicialmente tive que selecionar alguns arquivos e depois torná-los executáveis:
chmod 777 shellscr1
Torná-los executáveis não significa777, Isso significa755. Você pode pelo menos mudar isso, por razões óbvias relacionadas à segurança.
Tornar scripts de shell executáveis pode ocasionalmente ter alguns efeitos adversos. Por exemplo, se o seu/bin/shaponta para um shell diferente daquele ao qual o script se destina, você pode torná-lo essencialmente inutilizável. Um bom programador teria tomado medidas para evitar isso e, ao alterar as permissões, você poderia ter anulado seus esforços.
Mas, repito, isso se aplica apenas se o seu /bin/sh apontar para um shell não padrão.