Reatribuir usuários a um único grupo

2

Neste momento, um dos nossos servidores é configurado para que todos os usuários estejam em seu próprio grupo. É possível reatribuí-los a um único grupo e permitir que cada usuário READ tenha acesso apenas aos diretórios de outros usuários?

Algum comando rápido para fazer isso para muitos usuários?

    
por PythonRunner 28.01.2013 / 23:04

2 respostas

1

Resposta curta: não faça isso.

Resposta longa: essa costumava ser a configuração padrão das caixas Unix. Mas isso leva ao compartilhamento inadvertido de dados, até mesmo à possibilidade de modificação de dados por outros usuários se houver um erro nas permissões. Com o tempo, a maioria das instalações do Unix / Linux migrou para uma configuração com um grupo para cada usuário. Originalmente, quando um usuário pertencia a vários grupos (um grupo primário e grupos suplementares, no idioma Unix), para obter os privilégios de outro grupo, era necessário dar ao grupo para mudar e ao programa para executar um programa especial (o nome me escapa, já faz um bom tempo ...). Com os sistemas atuais, cada processo pertence a todos os grupos simultaneamente, então isso não é mais necessário. Basta colocar todos os usuários no grupo ao qual os arquivos compartilhados pertencem. Permissões ainda mais granulares estão disponíveis nos sistemas de arquivos que manipulam ACLs, onde você pode atribuir permissões de usuários individuais em um arquivo, independente de usuário / grupo / outros. Veja as páginas de manual para acl (5), chacl (1).

    
por 28.01.2013 / 23:36
0

Eu realmente quero dizer "não", já que não é a melhor ideia. No entanto, isso não responde à sua pergunta, então vamos fazer isso. Aqui estão algumas suposições no script que estou construindo abaixo:

  • Você criou um grupo chamado usuários
  • Todos os usuários que você deseja adicionar a esse grupo têm um fluxo entre 500 e 10000
  • Apenas os usuários que você deseja adicionar a esse grupo têm um fluxo entre 500 e 10000
  • Você entenderá o que o script faz antes de executá-lo ou solicitará esclarecimentos.

Primeiro, corrigimos a propriedade das pastas em / home:

chgrp users -r /home

Então, primeiro vamos pegar todos os usuários com uid 500 ou superior:

getent passwd | awk -F: '{if($3 > 500 && $3 < 10000) { print $1 }}'

No meu sistema, isso retorna:

dennis
paul
tom

Agora precisamos mudar o grupo:

for user in $(getent passwd | awk -F: '{if($3 > 500 && $3 < 10000) { print $1 }}'); do
    usermod -g users $user
done

Agora você pode remover os grupos que não são mais necessários:

for user in $(getent passwd | awk -F: '{if($3 > 500 && $3 < 10000) { print $1 }}'); do
    groupdel $user
done
    
por 29.01.2013 / 01:06