Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 8768|Resposta: 1

Série OpenLDAP (3) Os comandos OpenLDAP são explicados em detalhes

[Copiar link]
Publicado em 23/06/2020 22:34:54 | | | |
Resumo do comando OpenLDAP

  • ldapsearch: Busque entradas de árvore de diretório OpenLDAP.
  • ldapadd: Adiciona entradas na árvore de diretórios via formato LDIF.
  • ldapdelete: Exclui entradas da árvore de diretórios OpenLDAP.
  • ldapmodify: Modificar a entrada da árvore de diretórios OpenLDAP.
  • ldapwhoami: Valida a identidade dos usuários do OpenLDAP.
  • ldapmodrdn: Julga a entrada DN da árvore de diretórios OpenLDAP.
  • ldapcompare: Determina se o valor DN e o valor do parâmetro especificado pertencem à mesma entrada.
  • ldappasswd: Modificar a entrada do usuário da árvore de diretórios OpenLDAP para realizar uma redefinição de senha.
  • slaptest: Verifique o arquivo slapd.conf ou o diretório cn=configuration.
  • slapindex: Cria um índice de árvore de diretório OpenLDAP para fornecer eficiência de consulta.
  • slapcat: Converte dados em arquivos LDIF para OpenLDAP.


Comando Ldapadd

Opções
descrição
-x
Realizar autenticação simples
-D
O DN usado para vincular o servidor
-h
O endereço do serviço de diretório
-w
Vincular senha de DN
-f
Arquivos que utilizam arquivos LDIF para adição de entradas


Primeiro, preparamos um arquivo test.ldif com o seguinte comando:



O conteúdo é o seguinte:

dn: uid=xzz,ou=Users,dc=itsvse,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
homeDirectory: /home/itsvse_xzz
loginShell: /bin/bash
cn: xzz
uidNumber: 1000
gidNumber: 1000
sn: System Administrator
mail: xzz@itsvse.com
postalAddress: shanghai
mobile: 13788888888



Adicione comandos da seguinte forma:



Após inserir a senha, ela é adicionada com sucesso, como mostrado na figura abaixo:



Comando ldapmodify

O comando ldapmodify é fixo e implementa principalmente diferentes funções de modificação por meio de arquivos de configuração.



O arquivo demo.ldif é o seguinte, o que significa que o parâmetro uidNumber do usuário uid=xzz foi modificado.



Comando LDAPPASSWD

O ldappasswd abre uma conexão com o servidor LDAP e altera a senha de entrada.

Opções
descrição
-x
Realizar autenticação simples
-D
O DN usado para vincular o servidor
-w
Vincular senha de DN
-S
Digite a senha quando solicitado
-s
passe para definir a senha para passar
-um
passe Passe Passe Passado Antigo para Passar
-Um
Apresente a configuração do passado antigo
-H
refere-se ao servidor a ser vinculado
-Eu
Use o método de sessão SASL




Comando de busca ldapsearch

Comando de busca LDAP

[root@VM_0_9_centos ~]# ldapsearch -h
ldapsearch: option requires an argument -- 'h'
ldapsearch: unrecognized option -h
usage: ldapsearch [options] [filter [attributes...]]
where:
  filtro de busca LDAP compatível com RFC 4515
  Atributos Lista separada por espaço em branco de descrições de atributos
    que podem incluir:
      1.1 sem atributos
      * todos os atributos do usuário
      + todos os atributos operacionais
Opções de busca:
  -um deref de nunca (padrão), sempre, pesquisar ou encontrar
  -A recuperar apenas nomes de atributos (sem valores)
  -Base Dn baseada em B para busca
  -c Modo de operação contínua (não parar em erros)
  -E [!] <ext>[=<extparam>] extensões de busca (! indica criticidade)
             [!] DomainScope (escopo de domínio)
             !dontUseCopy (Não Use Copy)
             [!] mv=<filter> (filtro de valores correspondidos RFC 3876)
             [!] pr=<size>[/prompt|noprompt] (Resultados/prompt paginados do RFC 2696)
             [!] sss=[-]<attr[:OID]>[/[-]<attr[:OID]>...]
                                         (RFC 2891 ordenação do lado do servidor)
             [!] subentradas[=true|false] (subentradas RFC 3672)
             [!] sync=ro[/<cookie>] (RFC 4533 LDAP Sync refreshOnly)
                     rp[/<cookie>][/<slimit>] (atualizarEPersistir)
             [!] vlv=<before><after>/(/<offset>/<count>|:<value>)
                                         (visualizações de lista virtual ldapv3-vlv-09)
             [!] deref=derefAttr:attr[,...] [; derefAttr:attr[,...] [; ...]]
             [!] <oid>[=:<b64value>] (controle genérico; sem resposta ao manusear)
  -f operações de leitura de arquivo a partir de 'file'
  -Prefixo F prefixo URL para arquivos (padrão: file:///tmp/)
  -l limite de tempo (em segundos, ou "nenhum" ou "máximo") para busca
  -L respostas impressas no formato LDIFv1
  -LL imprimir respostas no formato LDIF sem comentários
  - LLL imprimir respostas no formato LDIF sem comentários
             e versão
  -M habilitar Gerenciar controle de TI DSA (-MM para tornar crítico)
  -Versão P versão do protocolo (padrão: 3)
  -s escopo um de base, um, sub ou filhos (escopo de busca)
  -S attr ordenar os resultados pelo atributo 'attr'
  -t escreve valores binários em arquivos em diretórios temporários
  -tt escreve todos os valores em arquivos em diretórios temporários
  -O caminho T grava arquivos em diretórios especificados pelo caminho (padrão: /tmp)
  -u inclui nomes de entradas Amigáveis ao Usuário na saída
  -z limite limite de tamanho (em entradas, ou "nenhum" ou "máximo") para busca
Opções comuns:
  -d level defina LDAP debugging level para 'level'
  -D binddn liga DN
  -e [!] <ext>[=<extparam>] extensões gerais (! indica criticidade)
             [!] assert=<filter> (RFC 4528; uma cadeia de filtro RFC 4515)
             [!] authzid=<authzid> (RFC 4370; "dn:<dn>" ou "u:<user>")
             [!] encadeamento[=<resolveBehavior>[/<continuationBehavior>]]
                     um de "encadeamentoPreferido", "encadeamentoNecessário",
                     "EncaminhamentoPreferente", "EncaminhamentoNecessário"
             [!] manageDSAit (RFC 3296)
             [!] Não, não
             ppolicy
             [!] postread[=<attrs>] (RFC 4527; lista de atracciones separadas por vírgulas)
             [!] preread[=<attrs>] (RFC 4527; lista de atracciones separadas por vírgulas)
             [!] Relaxe
             [!] Acompanhamento de sessões
             abandonar, cancelar, ignorar (SIGINT envia abandonar/cancelar,
             ou ignora a resposta; se crítico, não espere pelo SIGINT.
             não é realmente um controle)
  -h host servidor LDAP
  -Identificador(es) Uniforme de Recursos do LDAP H-URI
  -Eu uso o modo interativo SASL
  -n mostrar o que seria feito, mas não faça de verdade
  -N não usar DNS reverso para canonizar o nome de host SASL
  -O props propriedades de segurança SASL
  -o <opt>[=<optparam>] Opções gerais
             NetTimeout=<timeout> (em segundos, ou "nenhum" ou "máximo")
             ldif-wrap=<width> (em colunas, ou "não" para sem envolvimento)
  porta -p no servidor LDAP
  -Q use o modo SASL Silencioso
  -Reino R Reino SASL
  -Identidade de autenticação SASL authcid
  -v rodando em modo verboso (diagnóstico para saída padrão)
  -Informação da versão de impressão V (-apenas VV)
  -W Password de Vincular PassWD (para autenticação simples)
  -W para vincular senha
  -x Autenticação simples
  -Identidade de autorização SASL com authzid X ("dn:<dn>" ou "u:<user>")
  -y Leia senha do arquivo
  -Mecanismo SASL do Y mech
  -Z iniciar requisição TLS (-ZZ para exigir resposta bem-sucedida)

O comando é o seguinte:


Os resultados da consulta são os seguintes:


Consulte todos os usuários:


Explicação do substantivo LDAP

Classe de objeto

A classe de objeto LDAP é o modelo de dados incorporado ao LDAP. Cada objectClass tem sua própria estrutura de dados, por exemplo, temos uma objectClass chamada "Phone Book", que certamente terá muitos atributos embutidos, como nome (uid), número de identificação (uidNumber), nome da unidade (gid), endereço residencial (homeDirectory), etc.; ao mesmo tempo, há também uma objectClass chamada "Registro de Colegas de Classe", que possui uma "lista telefônica" Alguns atributos (como uid, homeDirectory) também terão atributos que não estão na "lista telefônica" (como descrição, etc.).

Entrada

Uma entrada pode ser chamada de entrada, uma entrada é um registro, uma unidade básica de armazenamento em LDAP; Também pode ser entendido como uma coleção de DNs e um conjunto de atributos. Note que uma entrada pode conter múltiplas Classes de objeto, por exemplo, zhang3 pode existir na "Lista Telefônica" ou no "Registro de Colegas de Classe" ao mesmo tempo.

DN

Distinguished Name, o nome único e distinto da entrada no LDAP, uma grafia completa DN: uid=zhang3, ou=Pessoas, dc=163, dc=com. Apenas a entrada no LDAP é única para o Servidor LDAP.

Filtro de busca LDAP

Use o filtro para buscar por LDAP. O filtro geralmente é composto por uma unidade como (atributo=valor), por exemplo: (&(uid=ZHANGSAN)(objectclass=pessoa)) indica que a entrada LDAP do usuário buscador é ZHANGSAN. Outro exemplo é: (&(|( uid= ZHANGSAN)(uid=LISI))(objectclass=pessoa)), indicando que a busca por um usuário com id de busca é ZHANGSAN, ou LISI; Você também pode usar * para representar qualquer valor, como (uid=ZHANG*SAN), e buscar entradas com valores uid começando com ZHANG e terminando com SAN. Além disso, de acordo com diferentes regras de correspondência de atributos LDAP, pode haver um Filtro da seguinte forma: (&(createtimestamp>=20050301000000)(createtimestamp<=20050302000000)), que indica que o tempo de criação da busca está entre 20050301000000 e 20050302000000.

No Filter, "&" significa "e"; “!” significa "não"; “|” significa "ou". Dependendo das regras de correspondência, podemos usar "=", "~=", ">="" e "<=".

Base DN

Um DN base pode ser "dc=163,dc=com" ou "dc=People,dc=163,dc=com". Como LDAP é uma estrutura de dados em árvore, a busca começará no BaseDN após especificar o basedn, e podemos especificar o escopo da busca como: apenas search basedn (base), basedn direct sublevel (um nível) e basedn all subnível de árvore.

Classe-objeto

No LDAP, uma entrada deve conter um atributo objectClass e ser atribuída a pelo menos um valor. Cada valor será usado como modelo para armazenamento de dados por uma entrada LDAP; O modelo contém um atributo que a entrada deve ser atribuída e um atributo opcional. objectClass possui uma hierarquia rígida, com top e alias no topo. Por exemplo, a classe objecto de organizationalPerson é subordinada a pessoa, e pessoa é subordinada a topo.

ObjectClass pode ser dividida nas seguintes 3 categorias:
Estrutural: como pessoa e organizaçãoUnidade;
Auxiliar: como extensibeObject;
Abstract: Por exemplo, a classe abstract objectClass não pode ser usada diretamente.
Existem muitas ClassesObjeto definidas no esquema OpenLDAP, e os nomes de algumas Classes de objeto comumente usadas estão listados abaixo.

  • Conta
  • Apelido
  • dcobject
  • Domínio
  • ipHost
  • Organização
  • organizacionalPapel
  • Unidade organizacional
  • pessoa
  • organizacionalPessoa
  • inetOrgPerson
  • residencialPerson
  • posixAccount
  • posixGroup


ObjectClass é uma coleção de atributos, e LDAP encapsula muitos objetos comuns em organizações humanas e os encapsula em classes de objetos. Por exemplo, o pessoal inclui sobrenome (sn), primeiro nome (cn), número de telefone (telefoneNúmero), senha (userPassword) e outros atributos, e organizationalPerson é a classe de herança da pessoa; além dos atributos acima, também inclui título, código postal (postalCode) e endereço postal (postalAddress) e outros atributos.

Tipos de itens podem ser facilmente definidos por meio de classes de objetos. Cada entrada pode herdar diretamente múltiplas classes de objetos, o que herda várias propriedades. Se houver 2 classes de objeto com o mesmo atributo, apenas 1 atributo será mantido após a herdada da entrada. A classe objeto também especifica quais propriedades são informação básica e devem conter (Obrigatório): quais propriedades são informações estendidas e podem conter (Pode ou Opcional).

Existem três tipos de classes de objetos: Estrutural, Abstrato e Auxiliar. Tipos estruturais são os tipos mais básicos, que especificam as propriedades básicas do corpo do objeto, e cada entrada pertence e pertence a apenas uma classe estrutural de objetos. Tipos abstratos podem ser tipos estruturais ou outros pais de tipos abstratos, que organizam as partes comuns das propriedades dos objetos, chamados de templates para outras classes, e as entradas não podem integrar diretamente classes de objetos abstratas. O tipo auxiliar especifica as propriedades estendidas da entidade objeto. Embora cada barra pertença a apenas uma classe estrutural de objetos, ela pode pertencer a várias classes auxiliares de objetos ao mesmo tempo.

A própria classe objeto pode herdar umas às outras, então a classe raiz da classe objeto é a classe abstrata superior. Tomando como exemplo os tipos de pessoas comumente usados, sua relação de herança é a mostrada na figura:



Os atributos embutidos da conta são: userid, descrição, host, localidadeNome, NomeOrganização, NomeUnidadeOrganizacional, veja Também;

Os atributos embutidos de inetOrgPerson são cn, sn, description, seeAlso, telephoneNumber, userPassword, destinationIndicator, facsimileTelephoneNumber, internationaliSDNNumber, l, ou, NomeEscritórioDeEntregaFísica、CaixaCorreioCorrelPostal、CódigoPostal、MetodoDe Entrega、EndereçoRegistrado、st、Street、NúmeroTelefone、TeletexIdentificadorTerminal、 telexNumber、title、x121Address、audio、usinessCategory、carLicense、departmentNumber、isplayName、employeeNumber、employeeType、givenName、homePhone、homePostalAddress、initials、 jpegPhoto, labeledURI, mail, manager, mobile, o, pager, photo, preferredLanguage, roomNumber, secretary, uid, userCertificate, etc.;

Como você pode ver, o Accout só define alguns atributos necessários e úteis (é definitivamente suficiente para completar a verificação de login), enquanto o inetOrgPerson tem muitos atributos embutidos, como número de telefone, número de celular, endereço da rua, número de e-mail, endereço de e-mail, número de quarto, avatar, gerente, número de funcionário, etc.

Portanto, ao configurar o LDAP, recomenda-se definir o tipo objectClass como recout se for apenas para verificar o login, e definir objectClass como inetOrgPerson se você quiser criar um grande e abrangente tesouro de informações dos funcionários

Aqui eu geralmente uso 'inetOrgPerson', 'posixAccount', 'shadowAccount'.

Os atributos exigidos da conta são userid, enquanto os atributos exigidos do posixAccount são cn, gidNumber, homeDirectory, uid, uidNumber; O atributo obrigatório do shadowAccount é uid, e os atributos opcionais incluem shadowExpire, shadowInactive, shadowMax, shadowMin, userPassword, etc. A propriedade top exigida é objectClass (pode-se ver que top e outras objectClasses são relações herdadas).

Atributo

Atributos são semelhantes a variáveis em programação e podem ser atribuídos. Muitos atributos comumente usados são declarados no OpenLDAP (os usuários também podem definir seus próprios atributos). Os significados comuns dos atributos são os seguintes:

  • c: Country.
  • CN: Nome comum, que se refere ao nome de um objeto. Se se referir a uma pessoa, seu nome completo precisa ser usado.
  • componente dc:domínio, frequentemente usado para se referir a uma parte de um nome de domínio.
  • NomeDado: refere-se ao nome da pessoa, não ao sobrenome.
  • L: Refere-se a um nome de lugar, como o nome de uma cidade ou outra área geográfica.
  • e-mail: Endereço de e-mail.
  • o:organizationName, que se refere ao nome de uma organização.
  • ou:UnidadeNomeOrganizacional, que se refere ao nome de uma unidade organizacional.
  • SN: Sobrenome, refere-se ao sobrenome de uma pessoa.
  • Número de telefone: O número de telefone que deve conter o código do país em que está localizado.


Dica: objectClass é um Atributo especial que contém outros Atributos usados além de si mesmo.

Para diferentes Classes de objeto, geralmente existem alguns valores de propriedade exigidos e alguns valores opcionais. Por exemplo, você pode usar a objectClass de person para representar uma entrada de um usuário no sistema, e o usuário no sistema geralmente precisa ter alguma informação como nome, número de telefone, senha, descrição, etc. Como mostrado na imagem abaixo, para pessoa, defina o primeiro e sobrenome do usuário via cn e sn, que é obrigatório, enquanto outros atributos são opcionais.

A seguir está uma lista de alguns requisitos comumente usados de objectClass que são obrigatórios.

  • conta:userid。
  • Organização:o。
  • Pessoa: CN e SN.
  • PessoaOrganizacional: Igual a pessoa.
  • organizacionalPapel:cn。
  • organizationUnit:ou。
  • posixGroup:cn、gidNumber。
  • posixAccount:cn、gidNumber、homeDirectory、uid、uidNumber。

(Fim)




Anterior:OpenLDAP: Falhou ao iniciar o Daemon do Servidor OpenLDAP.
Próximo:Seletor de #id Angular 9 Series (nove) aplicado na página
Publicado em 19/05/2023 11:23:09 |
douto
Obrigado por compartilhar~~~
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com