Quero excluir certos grupos no meu sistema Debian GNU/Linux, mas alguns deles são grupos primários.
Por exemplo, se eu quiser excluir o grupo news
usando/sbin/groupdel news
Eu entendi a mensagem The primary group of the user "news" could not be removed
.
Como posso excluí-lo usando um comando shell?
Se eu excluir manualmente grupos específicos nos arquivos:
/etc/group
/etc/gshadow
/etc/passwd
/etc/security/group.conf
Há mais alguma coisa que eu precise considerar ou excluir em outro lugar?
Os grupos também serão excluídos/desativados se eu simplesmente comentar as linhas nesses arquivos?
Qual é a melhor maneira de excluir grupos primários que realmente não são necessários?
Editar:
Eu entendo as respostas. Ainda assim, quero deletar jogos como exemplo.
Agora verifiquei find / -group games 2>/dev/null
quais find / -user games 2>/dev/null
arquivos o usuário ou grupo usa ou têm direitos para jogos.
Encontrei 4 arquivos para dialout find / -group dialout 2>/dev/null
, mas nada para jogos.
Excluí os jogos de usuário e grupo, mas após reiniciar, a entrada estava presente novamente em /etc/group
.
Onde mais devo procurar por que a entrada está sendo regenerada?
Preciso procurar o pacote correspondente para excluir o número e a etiqueta?
Como encontro todas as entradas, pacotes e arquivos relacionados aos jogos em grupo?
Então, além da codificação fixa, não é possível.
Eu entendi corretamente todas as respostas?
Se eu excluir um pacote específico que criou o usuário, o grupo será excluído, mas, caso contrário, terei que pesquisar em todo o sistema e isso talvez danifique meu sistema.
Ainda seria bom saber onde mais as entradas estão presentes para grupos.
Agora tentei o seguinte (mesmo que nem todos façam sentido):
Verificar dados do grupo
getent group games
Pesquisar arquivos do grupo
find / -group games 2>/dev/null
Pesquisar arquivos do usuário
find / -user games 2>/dev/null
Listar pacotes instalados
dpkg -l | grep games
Verifique as dependências de um pacote
apt-cache rdepends games
Verificar processos
ps aux | grep games
Pesquisar logs do sistema
grep games /var/log/syslog
Verificar serviços
systemctl list-units --type=service | grep games
Verifique os arquivos de configuração
grep -r games /etc/
Verifique todos os arquivos em /
grep -r games /
Com o último comando, encontrei muita coisa, mas como as respostas já dizem, é muita desordem.
Obrigado pelas respostas!
Outro ponto de vista sobre isso...
Você não pode excluir grupos de forma alguma. Um grupo é apenas um número, e você não pode excluir um número e fazê-lo desaparecer. Ele ainda existe.
O que você encontra em /etc/group não é um grupo, mas um rótulo para um grupo. Então, se você excluir o rótulo, mas o grupo ainda estiver em uso, você terá dois problemas:
A melhor maneira de excluir um grupo (rótulo) que é o grupo principal de um usuário é excluindo o usuário.
Para contas de serviço como ''news'', não é aconselhável excluir o usuário, a menos que você também exclua o software que usa essa conta de serviço.
Em um sabor Linux que usa um gerenciador de pacotes, o usuário (e grupo associado) pode ser excluído automaticamente se você usar o gerenciador de pacotes para excluir o software. Infelizmente, usuários e grupos não são gerenciados tão rigidamente quanto pacotes de software, então não há uma maneira trivial de rastrear qual software usa uma conta de serviço específica. Felizmente, eles são normalmente nomeados de uma forma que torna fácil adivinhar isso. Se isso falhar, você pode encontrar referências à conta de serviço na propriedade de arquivos de configuração ou menções do grupo e usuário em arquivos de configuração serivce e systemd, então se você não consegue adivinhar, alguma escavação pode ser necessária.
Você não pode exatamente desativar um usuário. Você pode invalidar a senha dele para que ele não consiga fazer login, mais ou menos. Você pode alterar o shell dele para algo inválido para que ele não consiga fazer login por outros métodos. (Isso já pode ser o caso para uma conta de serviço!) Mas você normalmente não faz login em um grupo, então para grupos, você nem pode fazer isso. Nem o arquivo de senha nem o arquivo de grupo suportam comentários em grupos. Então, por exemplo, se você tentar comentar o grupo de notícias
#
com um então você agora tem um grupo rotulado incorretamente como#news
. Como comentários não são um comportamento documentado para esses arquivos, mesmo que algumas ferramentas suportem, outras ferramentas não o farão. Conforme mencionado em outras respostas, a única maneira de desativar um grupo é parar de usá-lo removendo todas as menções a ele em arquivos de configuração, propriedade de arquivo, processos ativos e possivelmente usos codificados em executáveis de software (e provavelmente também alguma maneira de usá-lo que eu esqueci).Resposta curta: você não pode excluir um grupo principal.
Resposta um pouco mais longa: É teoricamente possível, mas qualquer um que saiba o suficiente sobre Unix para saber como fazer também sabe o suficiente para não querer fazer. Essa é uma daquelas coisas do tipo "Se você não sabe para que serve, não remova".
Resposta significativamente mais longa: Os padrões Unix especificam que cada usuário tem um ID de usuário e um ID de grupo. Esse ID de grupo é o ID do "grupo primário" desse usuário; se você estiver familiarizado com bancos de dados, é uma chave estrangeira apontando para esse grupo.
Contanto que pelo menos um usuário tenha um determinado grupo como seu grupo primário,
groupdel
não deixarei você excluir esse grupo porque isso tornaria os arquivos de senha e grupo inconsistentes e correria o risco de comportamento imprevisível (por exemplo, se mais tarde você criar um novo grupo com o que acaba sendo o ID desse grupo primário, o usuário "órfão" de repente faria parte desse grupo, independentemente de você querer ou não).Se você realmente quer que o
news
grupo desapareça, precisará excluir onews
usuário primeiro, mas concordo com Panki : não há motivos reais além de uma necessidade equivocada de organização para removê-lo e o risco de quebrar acidentalmente algo que pressupõe que o grupo exista, embora pequeno, seja diferente de zero — e se algo quebrar dessa forma, você perderá semanas ou meses de frustração antes de perceber o que deu errado .Adendo : Não tente o procedimento nº 2, exceto nas circunstâncias mais terríveis, a menos que você queira ver como fica um sistema irrevogavelmente danificado e goste de ter que reinstalar seu sistema do zero.
Resposta curta: você não pode.
Resposta longa: Você pode, mas precisa parar de usá-lo primeiro. Isso não significa apenas os dados em
/etc
, significa na propriedade de arquivo em todos os seus sistemas de arquivos. Se for usado em/dev
, as coisas podem ficar cabeludas. Também pode significar em possíveis instalações futuras, dependendo da sua distribuição. (E algumas distribuições podem restaurar coisas que elas instalam em estoque conforme você atualiza.)Quanto aos comentários: eu não contaria com uma sintaxe de comentário. (A versão 7 não documenta nenhuma sintaxe de comentário.) Você pode estar apenas mudando o nome. (Embora eu admita, comentários "#" parecem funcionar para mim, mesmo com o busybox!)
Editar: Já que você marcou "debian", eu lhe direi que o
base-passwd
pacote é aquele que restaura os usuários e grupos de estoque, embora pareça perguntar. Parece que muito pouco realmente depende deste pacote, então você provavelmente pode deixá-lo ficar bem obsoleto (embora outros pacotes possam precisar do usuário/grupos).