AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 702221
Accepted
StoneThrow
StoneThrow
Asked: 2022-05-12 20:42:02 +0800 CST2022-05-12 20:42:02 +0800 CST 2022-05-12 20:42:02 +0800 CST

Existe um arquivo além de /etc/passwd que contém/define meu UID?

  • 772

Tentando aprender sobre UIDs e GIDs.
Várias leituras online me levaram a acreditar que meu UID está salvo em /etc/passwd, mas isso não parece ser o caso em um servidor em que trabalho:

$ whoami
user1
$ cat /etc/passwd | grep user1
$

Existe um (outro) arquivo além do /etc/passwdque poderia conter meu UID?

(Estou assumindo que o UID é semelhante ao GID, pois há um arquivo em algum lugar que o contém. Encontrei o GID no qual estou interessado no arquivo /etc/group)

Eu sei que posso obter meu UID com o comando id -u, mas para esta pergunta, estou especificamente interessado em saber se existe um arquivo que o contém.

uid
  • 2 2 respostas
  • 1695 Views

2 respostas

  • Voted
  1. Best Answer
    Stéphane Chazelas
    2022-05-12T21:11:08+08:002022-05-12T21:11:08+08:00

    Sim /etc/passwdé uma das muitas maneiras pelas quais o banco de dados de contas de usuário pode ser armazenado e consultado.

    Em muitos sistemas do tipo Unix, o Name Service Switch (inicialmente do Solaris) é responsável por traduzir alguns nomes de sistema de/para ids usando vários métodos.

    Sua configuração geralmente é armazenada em /etc/nsswitch.conf.

    Lá, você encontrará entradas para vários bancos de dados e como eles são tratados (grupo, senha, serviços, hosts, redes...). Para o hostsbanco de dados que é usado para traduzir nomes de host em endereços de protocolo de rede, você descobrirá que DNS e, às vezes, mDNS são geralmente consultados além de /etc/hosts.

    Quando um processo solicita informações sobre um nome de usuário, como com a getpwnam()função padrão, os métodos a serem usados ​​são pesquisados ​​nesse arquivo para a passwdentrada.

    Se tal método for o filesmétodo, /etc/<db>será pesquisado. Em sistemas GNU, isso normalmente é feito por algum /lib/<system>/libnss_files.so.<version>módulo carregado dinamicamente.

    Mas você pode ter muito mais, como NIS+, LDAP, SQL. Alguns desses métodos estão incluídos na GNU libc, outros podem ser instalados separadamente. No Debian ou derivados, veja a saída de apt-cache search 'NSS module'por exemplo.

    Em ambientes corporativos, onde o banco de dados do usuário é centralizado, o banco de dados central mais popular era o NIS, depois o NIS+, enquanto atualmente é mais o LDAP ou o Active Directory da Microsoft (ou seus clones para Unix).

    Se estiver presente, as get{pw/host/grp}...()funções da GNU libc também consultarão um daemon de armazenamento em cache do serviço de nomes/run/nscd/socket em vez de invocar toda a pilha NSS e consultar os bancos de dados de back-end diretamente. Em seguida, a consulta será feita nscde armazenada em cache para acelerar as consultas posteriores. Alguns módulos NSS também podem fazer seus próprios caches.

    Em sistemas GNU/Linux, um método popular é usar o System Security Services ( sss). Isso vem com um daemon separado ( sssd) que lida com as solicitações e as despacha para outros bancos de dados (como LDAP / AD) enquanto também faz algum armazenamento em cache. Então /etc/nsswitch.confterá um sssmétodo para a maioria dos BDs, e os backends são configurados na sssdconfiguração. O PAM (responsável pela autenticação) normalmente também consulta sssdnesse caso.

    Isso deve ajudar a esclarecer por que consultar /etc/passwd(ou /etc/groupou /etc/hosts...) para obter informações de conta (ou grupo/host...) da linha de comando está errado no caso geral. A maioria dos sistemas modernos terá um getentcomando para isso (também do Solaris), ou mais portátil, você pode usar perla interface do 's para todas as get<db>*()funções padrão.

    $ getent passwd bin
    bin:x:2:2:bin:/bin:/usr/sbin/nologin
    $ perl -le 'print for getpwnam("bin")'
    bin
    x
    2
    2
    
    
    bin
    /bin
    /usr/sbin/nologin
    
    $ getent services domain
    domain                53/tcp
    $ perl -le 'print for getservbyname("domain", "tcp")'
    domain
    
    53
    tcp
    $ perl -le 'print for getservbyname("domain", "udp")'
    domain
    
    53
    udp
    
    • 22
  2. ron
    2022-05-13T04:32:29+08:002022-05-13T04:32:29+08:00

    tecnicamente sim , existe algum arquivo em algum lugar que contém o uid para cada nome de usuário.

    Se você criar contas locais simples no linux, elas estarão /etc/passwdno campo #3 entre os :'s.

    Mas se o linux usar a autenticação do ActiveDirectory, ele obterá todas as informações de nome de usuário/uid de outro servidor e, em seguida, será armazenado em algum arquivo [texto] no seu sistema linux, não sei, ele pode ser armazenado na memória; Gostaria muito de saber esse detalhe.

    Existem alguns esquemas de login ou autenticação que o Linux suporta, AD para um, também LDAP. Onde o LDAP armazena o mapeamento de nome de usuário e uid eu não sei, mas também estaria interessado em saber.

    Então... Existe um arquivo além de /etc/passwd que contém/define meu UID? sim . Depende de todos os diferentes métodos de login/autenticação que o linux suporta, além do método local tradicional simples /etc/passwd e qual método está sendo usado. Portanto, sua próxima pergunta pode ser quais são todos os métodos de autenticação de login que o linux suporta e como posso saber qual está sendo usado. .

    • 1

relate perguntas

  • Por que os processos têm UID/GID?

  • Atribuição de UID e GID do Active Directory

  • Como o sudo consegue alterar os privilégios de um processo?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve