Realmente não importa se os arquivos /bin
(ou qualquer outro diretório padrão em que os executáveis são mantidos) são graváveis por raiz ou não. Em um servidor Linux que estou usando, eles são graváveis por raiz, mas na minha máquina OpenBSD, não são.
Contanto que não sejam graváveis pelo grupo ou por "outros"!
Não há problema de segurança tendo, por exemplo,
-rwxr-xr-x 1 root root 126584 Feb 18 2016 /bin/ls
Se alguém quisesse sobrescrevê-lo, teria que ser root e, se é root
e sobrescrevê-lo, então eles serão
- instalar uma nova versão ou
- desajeitado ou
- um invasor com permissões de root já .
Outra coisa a considerar é que o root pode gravar no arquivo, independentemente de estar protegido ou não, porque ... root.
Observe também que "um script" é tanto um executável quanto um arquivo binário. Um script não precisa ser gravável "porque é um arquivo de texto". Se houver, provavelmente deve ter apenas a mesma permissão que os outros executáveis no mesmo diretório.
Não altere as permissões de tudo agora! Isso pode causar todos os tipos de estragos e potencialmente confundir os gerenciadores de pacotes que podem verificar se as permissões estão definidas corretamente. Também pode tornar o sistema vulnerável se você alterar acidentalmente as permissões da maneira errada em um aplicativo crítico de segurança.
Apenas suponha que as permissões nos executáveis estejam definidas corretamente, a menos que você encontre algo realmente estranho; nesse caso, você provavelmente deve entrar em contato com o mantenedor do pacote relevante para verificar em vez de começar a mudar as coisas.
A partir dos comentários e no bate-papo , houve um chamado para um pouco de história.
O histórico das permissões nos binários no Linux não é algo que eu saiba. Pode-se especular que eles simplesmente herdaram as permissões do diretório ou apenas do padrão umask
do Linux, mas eu realmente não sei.
O que eu sei é que o OpenBSD instala os binários no sistema base 1 com o modo de permissão 555 por padrão ( -r-xr-xr-x
). Isso é especificado em um fragmento Makefile no /usr/share/mk/bsd.own.mk
qual é definido BINMODE
como 555 (a menos que já esteja definido). Isso é usado posteriormente ao instalar os executáveis durante o make build
in /usr/src
.
Eu dei uma olhada no log do CVS anotado para esse arquivo e descobri que essa linha no arquivo não foi alterada desde que foi importada do NetBSD em 1995.
No NetBSD, o arquivo foi colocado no CVS pela primeira vez em 1993, com BINMODE
555.
O projeto FreeBSD parece ter usado exatamente o mesmo arquivo que o NetBSD desde pelo menos 1994 e, com uma confirmação posterior, adiciona uma dica na mensagem de confirmação de que os arquivos antigos eram da versão 4.4BSD da Berkeley Software Distribution.
Além disso, o CSRG em Berkeley manteve as fontes no SCCS, mas seu repositório está disponível no formato Git no GitHub 2 . O arquivo que estamos dando o tratamento forencial aqui parece ter sido cometido por Keith Bostic (ou alguém próximo dele) em 1990.
Então essa é a história. Se você quer o porquê , acho que teremos que perguntar a Keith. Eu meio que esperava ver uma mensagem de confirmação para uma alteração dizendo " isso precisa ser 555 porque ... ", mas não.
1 Os sistemas BSD possuem uma divisão mais rígida em "sistema base" e "pacotes de terceiros" (portas / pacotes) que o Linux. O sistema base é uma unidade coerente que fornece um conjunto completo de recursos para a execução do sistema operacional, enquanto as portas ou pacotes são vistos como "software local" e instalados em /usr/local
.
2 Um repositório GitHub mais abrangente de versões do Unix a partir dos anos 70 também está disponível .
root
tem permissão de gravação em um arquivo binário? Se nada mais ajudaria ao atualizar esse pacote.