Por que não consigo usar meu usuário recém-criado com chown?

Por que não consigo usar meu usuário recém-criado com chown?

Então, estou tentando criar um novo usuário e grupo e, em seguida, alterar a propriedade de um diretório para esse novo usuário/grupo. No entanto, quando faço isso, chown volta com uma mensagem de "nome de usuário ilegal".

Aqui está um script de shell simplificado que mostra o que estou tentando fazer:

#!/usr/bin/bash

# Create Group
dscl . create /Groups/_jira
dscl . create /Groups/_jira gid 301"

# Create User
dscl . create /Users/_jira
dscl . append /Groups/_jira GroupMembership _jira

# Change Ownership
chown -R _jira:_jira /Some/random/directory

... e a saída que recebo é:

chown: _jira: illegal user name

Estou faltando um passo? É porque o nome de usuário é prefixado com um sublinhado?

Observação:Posso listar todos os usuários e grupos existentes e ver o usuário _jira e o grupo _jira, e também ver se o usuário está atribuído a esse grupo.

Responder1

Você não atribuiu um número de ID de usuário (o que o dscl chama de UniqueID) ao usuário _jira e, como a propriedade do arquivo é registrada pelo ID do usuário, não há como transferir arquivos para uma conta sem um. Adicione algo como:

dscl . create /Users/_jira UniqueID 301

Você também deve definir o PrimaryGroupID do usuário, e eu usaria isso para atribuí-lo ao grupo _jira em vez de adicionar o usuário ao grupo:

dscl . create /Users/_jira PrimaryGroupID 301

Se quiser continuar adicionando uma associação secundária no grupo _jira, você deve atribuir algum outro ID de grupo como primário e, em seguida, adicionar a associação secundária com dseditgroup:

sudo dseditgroup -o edit -a _jira -t user _jira

Isso não apenas adiciona "_jira" à lista GroupMembership do grupo, mas também adiciona o UUID do usuário à lista GroupMembers do grupo - é recomendado fazer as duas coisas e, embora seja possível fazer isso com dscl, é mais simples com dseditgroup.

informação relacionada