A prática não é criar um usuário e grupo por aplicativo, mas por serviço. Ou seja, os programas executados por um usuário local não precisam ser instalados como um usuário que não seja root. São daemons , programas em execução em segundo plano e que executam solicitações vindas da rede ou de outros meios de comunicação, que devem ser executados como um usuário dedicado.
O daemon é executado como um usuário dedicado, de modo que, se ele se comportar mal (devido a um bug, provavelmente acionado por um invasor), o dano que ele pode causar é limitado: apenas os arquivos de dados do daemon são afetados (a menos que o invasor tenha conseguido encontrar um buraco na raiz local) , o que pode acontecer). Por exemplo, o daemon do banco de dados é mysqld
executado como um usuário e grupo dedicado mysql:mysql
e os arquivos de dados do banco de dados ( /var/lib/mysql/*
) pertencem mysql:mysql
.
Observe que o executável do daemon e outros dados estáticos e arquivos de configuração que são usados, mas não devem ser modificados pelo daemon, não devem pertencer ao usuário dedicado; eles devem pertencer a root:root
, como a maioria dos arquivos de programa e configuração. O mysqld
processo não possui substituição comercial /usr/sbin/mysqld
ou /etc/mysql/my.cnf
, portanto, esses arquivos não devem pertencer ao mysql
usuário ou ser graváveis pelo mysql
usuário ou pelo mysql
grupo. Se alguns arquivos precisarem ser legíveis apenas pelo daemon e pelo administrador, eles deverão pertencer à raiz do usuário e ao grupo dedicado e ter o modo 0640 ( rw-r-----
).
Uma categoria especial de executáveis que não podem pertencer a eles root:root
são programas que são chamados por um usuário, mas precisam ser executados com privilégios extras. Esses executáveis devem ser setuid root se precisarem ser executados (pelo menos em parte) como root; o executável deve ter o modo 4755 ( rwsr-xr-x
). Se o programa precisar de privilégios extras, mas não como raiz, o programa deverá ser configurado como setgid, para que os privilégios extras venham através de um grupo e não de um usuário. O executável possui o modo 2755 ( rwxr-sr-x
). Os motivos são duplos:
- O executável não deve se modificar, para que, se um usuário conseguir explorar uma vulnerabilidade, ele possa modificar os arquivos de dados usados pelo programa, mas não injetar um cavalo de Troia no executável para atacar outros usuários executando o programa. .
- O arquivo de dados do executável pertence ao grupo. Um programa setuid teria que alternar entre o usuário real (o usuário que chamou o programa) para interagir com o usuário e com o usuário efetivo (o usuário no qual o programa está sendo executado) para acessar seus arquivos de dados privados (a razão para isso). ter privilégios extras). Um programa setgid também pode segregar dados por usuário que são acessíveis apenas ao grupo (por exemplo, armazenando arquivos pertencentes ao usuário em um diretório que é acessível apenas para a raiz e o grupo do programa).
Gilles 'SO- parar de ser mau'
fonte
/usr/bin/at
é de propriedade dodaemon/daemon
Ubuntuat
não é um daemon. É configuradodaemon
para que ele possa se comunicar com oatd
daemon através de arquivos particulares.Criar um novo grupo / usuário para um novo daemon instalado melhora a segurança. Quando o processo do servidor é executado sob esse usuário, ele é restrito aos direitos de acesso desse usuário. Em comparação: quando é executado como root, ele pode fazer tudo.
Essa diferença é importante caso o seu daemon esteja configurado incorretamente e / ou contenha um bug relacionado à segurança.
Não sei ao certo o que você quer dizer com a segunda parte da sua pergunta, ou seja, a parte sobre
/usr/local
propriedade. Em geral, não faz sentido que o mesmo usuárioX
sob o qual um daemon seja executado por razões de segurança também possua o diretório com os binários (porque, nesse caso, poderia alterá-los no caso de uma exploração). Mas o diretório com os arquivos de dados nos quais o daemon trabalha deve estar acessívelX
- a maneira mais fácil de configurar isso é tornarX
o proprietário dos diretórios / arquivos de dados.A execução de um daemon sob seu próprio usuário especial é apenas uma técnica de segurança; outras incluem algum tipo de 'chrooting' ou uso do sistema de controle de acesso obrigatório (MAC) (por exemplo, SELinux).
fonte
Esta é uma consideração de segurança. Limita o dano que pode ser causado por alguém que invade um aplicativo daemon. O aplicativo do usuário geralmente pertence a um ID do usuário padrão, como
root
.Se o servidor da Web, o servidor de email e o banco de dados forem executados como o mesmo usuário, será mais fácil comprometê-los. Se qualquer um deles tiver um erro ou configuração incorreta que permita o acesso ao sistema, esse acesso poderá ser usado para acessar todos os três aplicativos.
Se todos eles tiverem contas separadas, conforme recomendado, é provável que apenas o aplicativo comprometido esteja acessível. Embora os detalhes de configuração pública do outro possam ser lidos, é improvável que sejam feitas alterações.
Muitos daemons permitem que os usuários carreguem e baixem arquivos e, de outra forma, fazem coisas que você não gostaria que eles pudessem fazer nas configurações de outros daemons. Se cada aplicativo tiver seu próprio ID de usuário e grupo, é mais simples proteger os daemons.
Ter um grupo específico do daemon torna mais simples conceder com segurança ao daemon acesso seguro somente leitura a arquivos e diretórios. Se o arquivo ou diretório pertencer a um usuário diferente, mas pertencer ao grupo daemons, geralmente ele será acessível somente para leitura. As permissões de acesso podem ser facilmente verificadas e corrigidas com ferramentas como a localização.
fonte