Posso classificar os arquivos / etc / group e / etc / passwd?

33

Meu /etc/groupcresceu com a adição de novos usuários e a instalação de programas que adicionaram seu próprio usuário e / ou grupo. O mesmo vale para /etc/passwd. A edição tornou-se um pouco complicada devido à falta de estrutura.

Posso classificar esses arquivos (por exemplo, por ID numérico ou alfabético por nome) sem efeito negativo no sistema e / ou nos gerenciadores de pacotes?

Eu acho que isso não importa, mas apenas para ter certeza de que gostaria de obter uma segunda opinião. Talvez rootprecise ser a 1ª linha ou dentro das primeiras 1k linhas ou algo assim?

O mesmo vale para /etc/*shadow.

Ned64
fonte
7
"A edição tornou-se um pouco complicada devido à falta de estrutura" Por que você está editando esses arquivos manualmente?
19718 Kevin
Como a classificação do arquivo ajuda na edição? É porque você deseja agrupar contas relacionadas e fazer alterações semelhantes em um intervalo de linhas? Mas a conta relacionada será adjacente se você classificar por uid ou nome?
Barmar
@ Barmar Ajudou principalmente porque as contas de usuário são agrupadas por intervalos e separadas das contas do sistema (ao classificar por UID). Portanto, é mais fácil, por exemplo, identificar a linha correta para examinar ou alterar ao editar com vi.
Ned64

Respostas:

50

Você deve estar bem ao fazer isso : de fato, de acordo com o artigo e lendo a documentação, você pode classificar /etc/passwde /etc/grouppor UID / GID com pwck -se grpck -s, respectivamente.

ErikF
fonte
3
@Menasheh As cores deste site não as destacam tanto quanto em outros sites, mas "OK fazendo isso" nesta resposta é um hiperlink.
Hv
2
OK, tudo bem, mas ... Em geral, existem razões válidas para editar manualmente o arquivo / etc / passwd e arquivos semelhantes? Não é considerado melhor acessá-los por meio das ferramentas projetadas para criá-las e modificá-las?
mickeyf_supports_Monica
@mickeyf Vi pessoas editando manualmente /etc/passwdquando estão fazendo alterações em lote, como alterar o campo GECOS para todos os usuários devido a mudanças / reestruturações (alterações na sala global ou no número de telefone etc.) Não é mais comum, mas existem especificidades razões que surgem de tempos em tempos.
ErikF
44

Embora o ErikF esteja certo de que isso geralmente esteja bom, quero apontar um possível problema:

Você tem permissão para mapear nomes de usuários diferentes para o mesmo UID. Se você usar isso, as ferramentas que mapeiam um UID de volta para um nome de usuário geralmente escolhem o primeiro nome de usuário encontrado para esse UID /etc/passwd. A classificação pode fazer com que um nome de usuário diferente apareça primeiro. Para fins de exibição (por exemplo, ls -lsaída), qualquer um dos nomes de usuário deve funcionar, mas é possível que você tenha configurado algum programa para aceitar solicitações do nome de usuário A, onde negará essas solicitações se as virem do nome de usuário B, mesmo que A e B são o mesmo usuário.

hvd
fonte
Obrigado, eu sei que você pode, costumava ter um usuário com tcsh e uid 0 no Solaris há algumas décadas atrás. No entanto, um sistema Linux não criará essa situação por si só - você precisará criar manualmente esse usuário para ter problemas com essa situação.
Ned64
2

Ter root na primeira linha é um "padrão" de fato há muito tempo e é muito conveniente se você precisar corrigir o shell ou excluir a senha ao lidar com problemas ou recuperar sistemas.

Da mesma forma, eu prefiro ter usuários daemons / utils no meio e usuários padrão no final de ambos passwde shadow.

hvd A resposta também é muito boa para perturbar a ordem dos usuários, especialmente em sistemas com muitos usuários mantidos manualmente.

Se você conseguir classificar os arquivos, por exemplo, apenas para usuários padrão, seria mais sensato do que alterar a ordem de todos os usuários.

Rui F Ribeiro
fonte
1
Se você classificar numericamente por UID, deverá obter seu pedido preferido. Raiz é sempre 0, e daemon convencionalmente têm uids sob 100.
Barmar
@ Barmar Se a classificação por UID e não por nome, de fato, obrigado por lembrar.
Rui F Ribeiro
0

Aqui está um pouco de código bash um pouco cabeludo para classificar da mesma forma os arquivos shadow / gshadow com segurança (usando vipw -s/ vigr -s) e no local a partir da linha de comando:

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/passwd\" -c \"wq! \" >/dev/null 2>&1" vipw -s

EDITOR="/usr/bin/vi -c \"1,\\\$!awk 'BEGIN {FS = \\\":\\\"} FNR==NR {x2[\\\$1] = \\\$0; next} \\\$1 in x2 {print x2[\\\$1]}' - /etc/group\" -c \"wq! \" >/dev/null 2>&1" vigr -s

NOTA:

  1. vi -cpassa o comando para o editor vim designado para ser o editor da vipw/ vigrpela EDITORvariável
  2. O código awk classifica shadowpor passwd(e gshadowpor group)
  3. As barras invertidas são apenas os vários níveis de escape necessários correspondentes aos níveis de cotação.
  4. O segundo comando (-c \ "wq! \") Força a gravação e fecha o arquivo classificado. A força é necessária, já que shadow / gshadow costumam ser o modo 000 (isto é, não gravável). Observe o espaço entre '!' e '\' é necessário para impedir a interpretação do shell como '! \' que faz referência a um evento bash.
puterboy
fonte