O arquivo /etc/group
indica quais usuários são membros de quais grupos. Grupos são usados para controle de acesso; eles complementam os usuários.
/etc/group
é lido no momento do login.
Cada processo é executado como um usuário e um ou mais grupos. O processo de login começa a ser executado com todos os privilégios; uma que o usuário autenticou com êxito (por exemplo, digitando uma senha), o processo de login aceita os grupos indicados em /etc/group
(mais um grupo indicado em /etc/passwd
) e, em seguida, inicia um shell como usuário autenticado.
Você provavelmente já percebeu que cada arquivo vem com três conjuntos de permissões (usuário, grupo e outros) e um proprietário e grupo. Quando um processo tenta acessar um arquivo, então:
- Se o processo estiver sendo executado como o usuário que possui o arquivo, as permissões aplicáveis serão as permissões do usuário.
- Caso contrário, se um dos grupos do processo for o grupo que possui o arquivo, as permissões aplicáveis serão as permissões do grupo.
- Caso contrário, as permissões aplicáveis são as outras permissões.
Exemplo:
$ ls -l myfile
-rw-r----- 1 msh gutenberg 1234 Jul 4 1971 books.txt
O usuário msh
pode ler e gravar este arquivo ( rw-
). Qualquer usuário no grupo gutenberg
pode ler o arquivo ( r--
). Outros usuários não podem acessar o arquivo ( ---
).
Assim, os grupos permitem que você torne um arquivo acessível a um subconjunto de todos os usuários. Os serviços e dispositivos do sistema também podem ser restritos a um determinado usuário ou a um determinado grupo.
Existem três usos típicos para grupos:
- Grupos de usuários físicos trabalhando em um projeto comum, acessando o mesmo conjunto de arquivos, como no exemplo acima.
- Grupos de usuários físicos para controle de acesso aos recursos do sistema. Por exemplo, é típico para jogos competitivos armazenar arquivos de alta pontuação pertencentes ao usuário
root
e o grupogames
, gravável apenas porgames
e não por todos os usuários (rw-rw----
); o programa do jogo é executado com privilégios elevados comogames
group (é setgid paragames
) e assim pode leia e escreva os arquivos de alta pontuação, mas outros processos não podem. - Grupos de usuários do sistema. Por exemplo, muitos serviços do sistema são executados como um usuário dedicado e um grupo dedicado, para minimizar o risco de que um erro ou comprometimento em um serviço possa afetar os outros.
Devido a seus sintomas, seu sistema está configurado para controlar o acesso à conta root
por meio da participação em um grupo. Existem várias maneiras de fazer isso. As configurações mais comuns são:
- O acesso à conta raiz é feito através do sudo . Os usuários devem inserir sua própria senha para executar
sudo
. Os usuários têm permissão para chamarsudo
para executar comandos como root, se estiverem no grupoadmin
. Isso é indicado por uma linha como%admin: ALL=(ALL) ALL
in/etc/sudoers
. Às vezes o nome do grupo é diferente. Esta é a configuração padrão no Ubuntu. - O acesso à conta root é feito por su . Somente usuários no grupo
wheel
podem executarsu
. Os usuários devem digitar a senha raiz para executarsu
; Dessa forma, para se infiltrar na conta raiz, um invasor deve obter a senha de um usuário e a senha raiz. Esta foi a configuração padrão em alguns sistemas BSD, mas caiu em desuso porque os invasores se tornaram mais sofisticados (comprometem uma conta, executam um keylogger, pegam a senha do root).
Moral: não altere nem exclua arquivos em /etc
se você não souber o que eles fazem. Se você mudar alguma coisa, faça-o a partir de um shell de root e teste que você ainda pode logar depois; se você não puder, reverta a mudança imediatamente.
Eu recomendo usar o controle de versão em /etc
. No Ubuntu, instale o pacote etckeeper e execute etckeeper init
(como root).