Tentando adicionar usuário ao grupo que existe em / etc / group não funcionando

1

Estou tentando adicionar uma lista de usuários a diferentes grupos em uma VM debian. Eu estou usando a seguinte sequência de comandos no meu script bash:

getent group $uid || groupadd $uid                        #add group before adding user
useradd -s $shell -m -d $users_directory -g $uid $uname   #add user with group id $uid

No entanto, a execução disso imprime o seguinte:

groupadd: group '5067' already exists
useradd: group '5067' does not exist

olhando meus grupos com cut-d: -f1 /etc/group , vejo que '5067' existe, mas quando executo groups , tudo que vejo é 'root' como o grupo solitário.

Alguma dica?

    
por Tyler Kelly 13.10.2016 / 16:46

2 respostas

5

A chamada de groupadd com um ID de grupo numérico criará um grupo chamado 5067 . Por exemplo:

# groupadd 5067
# grep 5067 /etc/group
5067:x:1000:

Quando você passa um identificador numérico para useradd -g ... , ele aparece apenas no grupo ids . Então, mesmo que um grupo chamado 5067 exista:

# useradd -g 5067 testuser
useradd: group '5067' does not exist

Eu suspeito que esta seja a raiz do seu problema.

Você não vê o novo grupo ao executar groups é normal. Qualquer novo grupo ao qual você tenha adicionado um usuário não entrará em vigor até que o usuário faça o login. Se o usuário já estiver logado, ele precisará efetuar logout e login novamente (com o início de um novo shell de login). É por isso que você não vê o novo grupo na saída de groups , embora você o veja em /etc/group .

    
por 13.10.2016 / 17:14
1

re: o comando groups mostrando apenas o root.

Se você simplesmente digitar grupos, receberá a resposta para seu uid. Você precisa usar grupos $ uname para ver os grupos para esse usuário.

Além disso, esteja ciente de que useradd pode criar um novo grupo para o usuário com o mesmo nome. Você pode usar -N para evitar isso. Procure em /etc/login.defs e / etc / default / useradd para verificar os padrões das opções.

    
por 13.10.2016 / 17:25