Sempre haverá um par do mesmo UID e GID?

11

Eu tenho que alterar a propriedade do arquivo / diretório usando chmod.I sei apenas o nome de usuário do proprietário, mas quero alterar o nome do grupo padrão simultaneamente. Neste estágio, o nome do grupo não está decidido, por isso estou colocando o mesmo que o nome de usuário

chown -R username:username path_to_dir

O comando pode ser executado para vários sistemas / usuários. Portanto, minha preocupação é que o linux sempre tenha um par nome de usuário (usuário): nome de usuário (grupo) OU, em algum momento, esse nome de grupo padrão poderá dar erro.

Embora eu tenha começado a encontrar o GID, o usuário pertence

id username | tr '(=)' ':' | awk -F: '{print $3}

Mas pelo conhecimento eu quero saber. Até agora, a análise de /etc/passwd /etc/groupspoucos usuários, como "desligamento, parada, sincronização, operação", todos os usuários também listou em grupos.

EDIT 1: id -gn nome de usuário também é boa opção

Akaks
fonte
3
No segundo exemplo, você estava procurando id -g username?
User1686
1
Ou id -gn usernameque imprime o nome em vez do ID.
Cristian Ciupitu
No Linux, também existem muitos "grupos de dispositivos" - por exemplo. disco, mem, kmem, áudio, vídeo etc. - que não possuem usuário correspondente.
Baard Kopperud

Respostas:

20

Não há garantia de que o nome do grupo = usernameexista.

O cenário mais comum é que os administradores de sistema usados ​​no Linux estão criando um novo usuário localmente no sistema sem uma especificação explícita para o grupo, o que significa que o grupo será criado por padrão igual ao nome do usuário e atribuirá o usuário a o GID padrão a ser do grupo recém-criado.

Isso não significa que outro administrador do sistema siga este procedimento e se você lançar outros serviços de nomeação no mix como NIS ou LDAP, o grupo designado como padrão provavelmente não será o mesmo que o novo GID com o nome de grupo igual ao nome de usuário.

Portanto, você não deve confiar no fato de que nome de usuário = nome do grupo

Karlson
fonte
Também pode depender não apenas da política de administração local, mas também das ferramentas incluídas em várias distribuições. Muitos sites aceitam apenas os padrões usados ​​pelas ferramentas fornecidas. Embora a maioria das distribuições que eu usei ao longo dos anos seja enviada com um useraddscript que, por padrão, cria um grupo com o mesmo nome, nem todos têm. Na última vez em que o usei (há muitos e muitos anos), o script de criação de usuários do slackware tinha como padrão um único grupo do usersqual todos os usuários eram membros. docs.slackware.com/slackbook:users sugere que esse ainda pode ser o caso.
Jules
11

Embora o idioma do grupo privado do usuário seja freqüentemente usado nos sistemas Linux modernos, o * nix não exige um grupo primário exclusivo para cada usuário, e é bem possível que várias contas de usuário compartilhem um grupo principal comum como usersou staff.

Mesmo nos casos em que o idioma UPG é imposto, não há razão específica para que o GID numérico de um UPG específico seja igual ao UID do proprietário, embora a maioria das ferramentas de criação de contas tente atribuir UIDs e GIDs em ordem, se eles forem acessível. Os IDs podem facilmente sair da etapa se os usuários e / ou grupos precisarem ser consistentes em vários sistemas (por exemplo, para acomodar compartilhamentos NFS pré-existentes).

chave de aço
fonte
6

Como Ramesh indicou, por padrão, o UID e o GID são iguais para usuários comuns. No entanto, esse nem sempre é o caso; portanto, você não deve fazer essa suposição, pois isso pode causar estragos no seu sistema. Atribuir permissões de arquivo / pasta a um grupo errado é um pouco confuso, não é?

Portanto, a resposta curta: não, o UID nem sempre é igual ao GID. Ainda assim, /etc/passwdcontém o UID e o GID do grupo padrão na mesma linha, tornando mais fácil extraí-los.

Erathiel
fonte
"por padrão, o UID e o GID são iguais para usuários comuns" - na verdade, essa afirmação só é verdadeira se você adicionar "em algumas distribuições populares do Linux". Sim, Ubuntu et al. faça dessa maneira, mas eu consideraria um grupo comum de "usuários" mais um padrão.
Jstarek # 15/14
Sim, se pretendemos ser 100% precisos, você está certo. Provavelmente precisaríamos adicionar mais uma dúzia de 'ses' para nunca perder uma única exceção. Todas as minhas distros baseadas no Debian (LMDE, Crunchbang, Debian puro) se comportam dessa maneira e um CentOS 6.5 que eu tenho também. Mente-lhe que já que não há necessidade de me para adicionar grandes quantidades de usuários que tendem a utilizar addusermais do que useradde os padrões em /etc/adduser.confsão definidos como USERGROUPS=yeso que cria um grupo para cada novo usuário. Esses grupos geralmente (embora nem sempre) têm o mesmo GID que o UID do usuário para quem foram criados.
Erathiel 15/05
2

A partir deste link, eu vejo as informações abaixo.

Um ID do usuário (UID) é um número inteiro positivo exclusivo designado por um sistema operacional semelhante ao Unix para cada usuário. Cada usuário é identificado no sistema por seu UID, e os nomes de usuário geralmente são usados ​​apenas como uma interface para humanos.

Os UIDs são armazenados, junto com seus nomes de usuário correspondentes e outras informações específicas do usuário, no /etc/passwdarquivo, que pode ser lido com o comando cat da seguinte maneira:

cat /etc/passwd

O terceiro campo contém o UID e o quarto campo contém o ID do grupo (GID), que por padrão é igual ao UID para todos os usuários comuns.

EDITAR

No entanto, como @Karlson aponta, não é verdade que o UID será igual ao GID por padrão.

A declaração é verdadeira apenas se nenhum grupo comum for adicionado separadamente e nenhum grupo for especificado explicitamente em nenhuma criação do usuário . Por padrão, gid para o próximo usuário adicionado = max(gid) + 1. Não há correlação entre o UID e o GID exigido por qualquer sistema * NIX que eles coincidam em alguns casos.

Mais referências

http://www.thegeekstuff.com/2009/06/useradd-adduser-newuser-how-to-create-linux-users

Ramesh
fonte
A última afirmação é completamente falsa. UID = GID apenas no caso em que o novo usuário é criado no sistema local e o GID não é atribuído explicitamente a um grupo existente.
Karlson 14/05
Não, não é completamente falso, como diz claramente "por padrão". Alguns esclarecimentos seriam muito apreciados aqui.
Erathiel 14/05
1
@Erathiel Por padrão, GID é igual ao GID atribuído na criação do usuário. Se o usuário for criado localmente e sem especificar GID no -gsinalizador no useraddprograma, criará um grupo para você e, a menos que uma mudança no GID tenha acontecido, será = UID. No entanto, se o método de criação não se sabe que você não pode contar com o fato de que este será o caso:uid=123456(ME) gid=777(ABC) groups=777(ABC)
Karlson
Em alguns sistemas, o useradd também cria um grupo com o mesmo nome para a conta. Depende do sabor do Linux.
Pete
@ Karlson, eu nunca mencionei que sempre será igual. É claramente especificado que, por padrão, é igual ao UID para todos os usuários comuns .
Ramesh 14/05