Eu tenho um aplicativo que é executado como um daemon e é controlado por um script no /etc/init.d
Às vezes, precisamos alterar alguns parâmetros de inicialização / controle desses scripts e reiniciar o daemon. Esses scripts só têm permissão de gravação para o usuário root, portanto, ao editar esses scripts, preciso de privilégios de root.
O que eu pensava é que eu deveria tornar um usuário não root o proprietário desses scripts. Dessa maneira, somente o usuário root e um usuário especial podem editar esses scripts.
É aceitável manter alguns arquivos de propriedade não raiz nos diretórios /etc/init.d?
Ou é absurdo, perturbando a ordem natural do sistema?
Respostas:
O que imediatamente vem à mente é um usuário desprivilegiado, capaz de executar as coisas na inicialização como root , o que é desejável para os crackers que:
Isso é possível se o usuário menos privilegiado estiver comprometido de alguma forma, talvez por outro serviço (http / etc). A maioria dos atacantes executa rapidamente tudo
ls
oufind
parte de tudo,/etc
apenas para ver se essas possibilidades existem, existem shells escritos em vários idiomas que eles simplificam.Se você gerenciar o servidor remotamente, principalmente via SSH, há uma chance muito boa de que você nem veja isso a menos que inspecione o script init, porque não verá a saída na inicialização (no entanto, você deve usar algo que verifica os hashes desses scripts em relação aos hashes conhecidos para ver se algo mudou ou o software de controle de versão etc.)
Você definitivamente não quer que isso aconteça, o root realmente precisa possuir esse script init. Você pode adicionar o usuário de desenvolvimento à lista de sudoers para que seja conveniente o suficiente para atualizar o script, mas eu aconselho a não permitir acesso de gravação sem privilégios a qualquer coisa no init.d
fonte
Além dos pontos muito bons apresentados por Tim Post, eu acrescentaria que, para uma configuração em que várias pessoas precisam poder enviar alterações para um servidor, considere usar algum tipo de sistema de gerenciamento de configuração.
Se, por exemplo, você usar fantoche, chef ou cfengine, os usuários relevantes poderão editar os arquivos localmente e enviar as alterações com o gerenciamento de configuração. A maneira exata de configurar isso variará, é claro, dependendo do sistema que você está usando, mas a configuração adequada incluirá o software de controle de versão, facilitando a reversão para uma versão anterior de um arquivo de configuração quando (nota: quando , não se !) alguém cometeu um erro. Também facilitará a cópia da configuração para um sistema de teste separado etc.
fonte