Criando e excluindo objetos no Active Directory Domain Services

O procedimento usado para criar e excluir objetos programaticamente nos Serviços de Domínio Active Directory depende da tecnologia de programação usada. Para obter mais informações sobre como criar e excluir objetos nos Serviços de Domínio Active Directory com uma tecnologia de programação específica, consulte os tópicos listados na tabela a seguir.

Tecnologia de programação Para obter mais informações
Active Directory Service Interfaces Criando e excluindo objetos
Protocolo de acesso de diretório leve Modificando uma entrada de diretório
System.DirectoryServices Criar, excluir, renomear e mover objetos

 

Criando um objeto

Em geral, os únicos atributos necessários para que um objeto seja criado são os atributos cn e objectClass . No entanto, apenas criar um objeto não o torna necessariamente um objeto funcional. Certos tipos de objetos, como usuários e grupos, têm atributos adicionais necessários para torná-los funcionais. Para obter mais informações sobre como criar tipos específicos de objetos, consulte Criando um usuário e Criando grupos em um domínio.

Windows Server 2003: Quando um objeto da classe de usuário, grupo ou computador é criado em um controlador de domínio que está sendo executado no WWindows Server 2003 ou posterior, o controlador de domínio define automaticamente o atributo sAMAccountName para o objeto como uma cadeia de caracteres exclusiva, se uma não for especificada.

Excluindo um objeto

O servidor do Active Directory executa as seguintes ações quando um objeto é excluído:

  • O atributo isDeleted do objeto excluído é definido como TRUE. Os objetos com um valor de atributo isDeleted definido como TRUE são chamados de marcas de exclusão.

  • O objeto excluído é movido para o contêiner Objetos Excluídos para seu contexto de nomenclatura. Se a propriedade object systemFlags contiver o sinalizador 0x02000000, o objeto não será movido para o contêiner Objetos Excluídos. Para obter mais informações sobre como vincular e enumerar o conteúdo do contêiner Objetos Excluídos, consulte Recuperando objetos excluídos.

  • O contêiner Objetos Excluídos é plano, portanto, todos os objetos residem no mesmo nível dentro do contêiner Objetos Excluídos. Assim, o nome distinto relativo do objeto excluído é alterado para garantir que o nome seja exclusivo dentro do contêiner Objetos Excluídos. Se o nome original tiver mais de 75 caracteres, ele será truncado para 75 caracteres. Os seguintes itens são então anexados ao novo nome:

    1. Um personagem 0x0A
    2. A cadeia de caracteres "DEL:"
    3. A forma de cadeia de caracteres de um GUID exclusivo, como "947e3228-70c9-4311-8b7a-e5c9b5bd4432"

    Um exemplo de um nome de objeto excluído é:

    Jeff Smith\0ADEL:947e3228-70c9-4311-8b7a-e5c9b5bd4432
    
  • A maioria dos valores de atributo para o objeto excluído é removida. Os seguintes atributos são mantidos automaticamente:

    • ID do atributo
    • attributeSyntax
    • distinguishedName
    • dNReferenceUpdate
    • flatName
    • governsID
    • groupType
    • Tipo de instância
    • lDAPDisplayName
    • legacyExchangeDN
    • mS-DS-CreatorSID
    • mSMQOwnerID
    • name
    • nCName
    • objectClass
    • objectGUID
    • objetoSid
    • oMSyntax
    • proxiedObjectName
    • replPropertyMetaData
    • sAMAccountName
    • securityIdentifier
    • subClasseDe
    • systemFlags
    • trustAttributes
    • trustDirection
    • trustPartner
    • Tipo de confiança
    • userAccountControl
    • uSNChanged
    • uSNCreated
    • quandoCriado

    Outros atributos que têm um valor de atributo searchFlags que contém 0x00000008 também são mantidos.

    Os seguintes valores de atributo são sempre removidos de um objeto excluído:

    • objectCategory
    • samAccountType
  • O descritor de segurança do objeto excluído é mantido e as entradas de controle de acesso herdáveis não são propagadas. O descritor de segurança é mantido como está no momento em que o objeto é excluído.

  • Os links de e para o objeto excluído são limpos. Isso é executado em segundo plano depois que o objeto é excluído. Se o objeto excluído for restaurado antes que todos os links sejam limpos, um erro será recebido.

  • Se o objeto for excluído em um controlador de domínio do Windows Server 2003, o atributo lastKnownParent do objeto excluído será definido como o nome distinto do contêiner onde o objeto estava contido quando foi excluído.

O objeto excluído permanece no contêiner Objetos Excluídos por um período de tempo conhecido como tempo de vida da marca de exclusão. Por padrão, o tempo de vida da marca de exclusão é de 60 dias, mas esse valor pode ser alterado pelo administrador do sistema. Depois que o tempo de vida da marca de exclusão expirar, o objeto será removido permanentemente do Serviço de Diretório. Para evitar a perda de uma operação de exclusão, um aplicativo deve executar sincronizações incrementais com mais frequência do que o tempo de vida da marca de exclusão.

O Windows Server 2003 adiciona a capacidade de restaurar objetos excluídos. Para obter mais informações sobre a restauração de objetos excluídos, consulte Restaurando objetos excluídos.

Quando um item é excluído, nenhum dos atributos do objeto pode ser modificado. No Windows Server 2003, é possível modificar o descritor de segurança (o atributo ntSecurityDescriptor ) em um objeto excluído. Isso é para permitir a restauração de objetos quando a pessoa que restaura o objeto não tem permissões de gravação para atributos obrigatórios. Para atualizar o descritor de segurança em um objeto excluído, o chamador deve ter o acesso de controle "Reanimar Tombstone" no contexto de nomenclatura, além de WRITE_DAC regular e acesso WRITE_OWNER. Mesmo que o descritor de segurança seja restritivo, o administrador pode primeiro assumir a propriedade do objeto, supondo que o administrador tenha o privilégio SE_TAKE_OWNERSHIP_NAME e, em seguida, modificar o descritor de segurança. Para fazer isso, use a função ldap_modify_ext_s com o controle LDAP_SERVER_SHOW_DELETED_OID. A lista de modificação deve conter uma única substituição de atributo para o atributo ntSecurityDescriptor .