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 / server / Perguntas / 1169010
Accepted
Bala Sambandam
Bala Sambandam
Asked: 2024-12-18 10:37:42 +0800 CST2024-12-18 10:37:42 +0800 CST 2024-12-18 10:37:42 +0800 CST

não é possível fazer com que o useradd use LDAP

  • 772

O SO é Amazon Linux 2023. Estou tentando usar LDAP para fazer gerenciamento de usuários/grupos para todos os novos usuários. Eu instalei os pacotes openldap-servers, openldap-clients e nss-pam-ldapd. Eu configurei SSL no slapd e

ldapwhoami -x -H ldaps://myserver.mydomain.com
ldapwhoami -x -H ldapi:///

ambos retornam anônimos.

sudo ldapwhoami -H ldapi:///

retorna dn:gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth.

Eu configurei nsswitch.conf para:

passwd:       ldap sss files
shadow:       ldap files
group:        ldap sss files

Eu configurei nslcd.conf para:

uid root
gid root
uri ldapi:///
base dc=mydomain,dc=com

Quando eu corro:

sudo useradd -b /home balaguru1

não parece adicionar o usuário ao banco de dados LDAP. Os arquivos em /var/lib/ldap/ não são alterados. /etc/passwd é modificado com o novo usuário.

O que estou perdendo?

ldap
  • 1 1 respostas
  • 60 Views

1 respostas

  • Voted
  1. Best Answer
    grawity
    2024-12-18T13:47:37+08:002024-12-18T13:47:37+08:00

    A interface nsswitch é somente leitura – ela não tem nenhuma operação de adição ou modificação que os módulos de serviço de nomes poderiam fornecer, e todas essas ferramentas realizam modificações diretamente no backend.

    Por exemplo, sua useraddferramenta foi escrita especificamente para atualizar o banco de dados de contas locais por meio de /etc/passwd e /etc/shadow e nada mais. (Na verdade, ela vem do pacote 'shadow', que serve apenas para manter os arquivos passwd/shadow/group.)

    Você precisará de uma ferramenta diferente para gerenciamento de contas LDAP.¹


    ¹ (Não conheço nenhum que ainda seria mantido; acabei escrevendo mais ou menos o meu próprio. Um script de shell ldapaddfuncionaria.)

    parece que minha implementação não tem um esquema que suporte campos de usuário unix padrão. Por exemplo, quando eu despejo cn=config não há conceito de diretório home ou shell no esquema

    Implementações típicas de LDAP são projetadas para ter esquemas configuráveis; o OpenLDAP é fornecido com diversas configurações de esquemas tradicionais em /etc/(open)ldap/schema.

    Você está procurando pela posixAccountobjectClass, que – como você já descobriu – está no nisarquivo schema. No entanto, é uma classe auxiliar, e geralmente anexada a um objeto personou inetOrgPerson(do cosineschema neste caso); embora nada impeça você de anexá-la a um deviceobjeto ou a um applicationProcessobjeto. (O último é uma relíquia OSI & X.500, mas é um tanto adequado para representar, por exemplo, um serviço que precisa de sua própria senha LDAP e/ou sua própria conta POSIX.)

    Tentei criar um usuário com um arquivo ldif, mas recebo um erro "Nenhum objeto desse tipo (32)". Presumo que isso seja porque a ou que referencio (Pessoas e Grupo) não existe.

    Sim, e você terá que criar as entradas "pai" antes de poder colocar qualquer coisa abaixo. Se você acabou de começar com um banco de dados vazio, precisará criar até mesmo a entrada de nível superior correspondente ao sufixo do seu banco de dados (por exemplo, dc=example,dc=orgcomo uma objectClass: domainentrada, ou o=My Little Orgcomo uma organizationentrada). Então crie OUs como organizationalUnitobjetos – embora não seja necessário colocar usuários e grupos sob OUs; não tem problema criá-los sob a entrada de nível superior; eles podem ser movidos para uma OU mais tarde de qualquer maneira.

    (Observe que você só precisa adicionar os pais até o sufixo DB – você não precisa adicionar dc=orgneste exemplo.)

    Digamos que você tenha uma entrada de banco de dados configurada assim:

    dn: olcDatabase={1}mdb,cn=config
    objectClass: olcDatabaseConfig
    olcSuffix: o=Widgets Corp
    

    Isso significa que você precisaria criar essas entradas (supondo que você queira o tipo típico de hierarquia OU=Usuários):

    dn: o=Widgets Corp
    objectClass: organization
    
    dn: ou=People,o=Widgets Corp
    objectClass: organizationalUnit
    
    dn: cn=Fred Foobar,ou=People,o=Widgets Corp
    objectClass: inetOrgPerson
    objectClass: posixAccount
    cn: Fred Foobar
    givenName: Fred
    sn: Foobar
    uid: fredfoo
    uidNumber: 1001
    gidNumber: 1000
    homeDirectory: /home/fredfoo
    [...]
    

    Enquanto que se você tivesse olcSuffix: dc=example,dc=com(estilo AD), você precisaria adicionar:

    dn: dc=example,dc=com
    objectClass: domain
    
    dn: ou=Users,dc=example,dc=com
    objectClass: organizationalUnit
    
    dn: uid=fredfoo,ou=Users,dc=example,dc=com
    objectClass: [...]
    

    (Se todos os programas suportam o modelo "vincular como aplicativo, pesquisar, vincular como usuário", então usar dn: cn=ou dn: uid=para o DN da entrada do usuário é uma escolha sua. A maioria dos programas aceita isso, pois é o que o Active Directory faz. Mas se alguns programas suportam apenas o modelo "vincular de acordo uid=%s,ou=Users,etccom um modelo de DN", então você precisará usar uid=.)

    • 1

relate perguntas

Sidebar

Stats

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

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 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