Após aquela breve explanação sobre o que são os daemons, tentarei
de forma ainda mais simples explicar o pôr que de se haver tanto
cuidado com os ditos cujos.
Certamente vocês concordam comigo que somente o administrador do
sistema (salvo algumas exceções) devem ter controle sobre os
serviços de uma máquina. Correto? Acho que ninguém quer ver algum
usuário derrubando seu webserver ou servidor ssh apenas usando um
comando do tipo "killall processo" (pelo menos eu creio que não).
Partindo desse princípio, muita gente comete o erro de subir
processos manualmente usando uid(0), ou seja, user id root, logo,
se alguém exploitar esse processo com uid(0) ele dá a possibilidade
de um usuário exploitá-lo com técnicas de buffer overflow, por exemplo,
e, se isso ocorrer de fato ele poderia comprometer todo o sistema
ganhando privilégios do usuário root.
Sentindo a necessidade de uma forma de controle maior, a "tática"
de criação de contas de usuários específicos para controle de
determinados serviços foram criados. Com esse princípio um usuário
normal para o sistema teria permissões (mas somente ele e usuários
com permissões acima dele) aos serviços ou à gama de serviços que
precisam de controle, como por exemplo a conta de usuário "daemon".
Partindo desse conceito de controle, os BSD`s criaram o sistema de
"gaiolas" ou "jaulas" de serviços. Em outras palavras, o sistema
enjaulado estaria rodando junto com outros serviços, isto é, no
mesmo S.O., mas nunca teriam acesso uns aos outros por que eles
não se enxergavam (particularmente acho essa uma técnica genial -
pelo menos em teoria, que por sua vez é muito difícil de ser
colocada na prática, pois esse conceito acabou sendo quebrado).
Enfim, não deixa de ser uma segurança extra para seu sistema, mas infelizmente para eu explicar mais sobre esse conceito de jaulas precisaria de escrever outro artigo - o que por sua vez não vem ao caso.
Pra quem quer estudar um pouquinho mais (de forma prática) sobre esse assunto, deixei disponível na sessão 'Scripts' um daemon (bem simples) que desenvolvi para o controle de conexões pptp, ou seja, um shell script que roda em background procurando pelo caso da interface ppp0 (conexão vpn) não existir para então acionar um gatilho de conexão para o cliente pptp. Então fico por aqui com esse exemplo para estudo:
[]`s
Ragen