cn=Esteban Navas
Y si quisiera buscar un usuario cuyo sn fuera Santos, el filtro de búsqueda sería:
cn=Santos
Bien. Pues como podemos ver en estos dos ejemplos, la sintaxis básica de un filtro de búsqueda es la siguiente:
atributo operador valor
Operadores en filtros de búsqueda.-
Los operadores que podemos usar en un filtro de búsqueda son:
Tipo de búsqueda | Operador | Descripción |
Igualdad | = | Este operador nos devuelve aquellas entradas que coincidan exactamente en el valor especificado. Ejemplo: cn=Esteban Navas |
Subcadena | =*cadena* | Devuelve entradas que contengan la subcadena especificada. Ejemplos: cn=Esteban* cn= *Navas* cn=E*Navas. El asterisco representa cero o más caracteres. |
Mayor o igual | >= | Devuelve entradas que contengan atributos mayores o iguales que el valor especificado. Ejemplo: gidNumber >= 3000 |
Menor o igual | <= | Devuelve entradas que contengan atributos menores o iguales que el valor especificado. Ejemplo: uidNumber >=100 |
Presencia | =* | Devuelve entradas que contengan uno o más valores en el atributo especificado. Ejemplo: cn=* |
Aproximado | ~= | Devuelve entradas que contengan el atributo especificado con un valor que es aproximadamente igual al valor de búsqueda. Ejemplo: cn~=cnavas |
Operadores booleanos.-
Además de los operadores anteriores, podemos utilizar operadores booleanos, que nos van a permitir combinar varios filtros en uno:
(Operador-booleano(filtro)(filtro)(filtro)...)
Por supuesto, también podemos combinar varios operadores booleanos en una expresión. Por ejemplo:
(Operador-booleano(filtro)((Operador-booleano(filtro)(filtro)))
Las expresiones booleanas se evalúan en el siguiente orden:
- Primero de dentro hacia afuera en las expresiones con paréntesis.
- De izquierda a derecha en otro caso.
Tipo de búsqueda | Operador | Descripción |
AND | & | La expresión será cierta cuando todos los filtros sean ciertos. Ejemplo: (&(filtro)(filtro)...(filtro)) |
OR | | | La expresión será cierta cuando al menos uno de los filtros sea cierto. Ejemplo: (|(filtro)(filtro)...(filtro)) |
NOT | ! | Permite conseguir la negación del filtro. Ejemplo: (!(filtro)) |
Y eso es todo. Veamos algunos ejemplos de búsqueda:
El más sencillo. Cuando quiero buscar un elemento que contiene el valor igual a la cadena de búsqueda:
cn=Esteban Navas
Si quisiera buscar entradas que contengan uno o más valores en el atributo memberOf:
memberOf=*
Para buscar por ejemplo todas las entradas que no contengan el valor "teacher" en el atributo cn , haría lo siguiente:
(!(cn=teachers))
Y si quiero buscar entradas que contengan una subcadena en el atributo description:
description=*admin*
Imaginemos que quiero obtener todas las entradas cuyo objectClass=posixGroup y los usuarios son miembros del grupo teachers en la unidad organizacional ou=Group,dc=instituto,dc=extremadura,dc=es:
(&(objectClass=posixGroup)(memberOf=cn=teachers,ou=Group,dc=instituto,dc=extremadura,dc=es)
Y si quierra buscar las entradas cuyo objectClass=posixGroup y los usuarios no sean miembros del grupo teachers en la unidad organizacional ou=Group,dc=instituto,dc=extremadura,dc=es:
(&(objectClass=posixGroup)(!(memberOf=cn=teachers,ou=Group,dc=instituto,dc=extremadura,dc=es))
Y si por ejemplo, quisiera ver aquellas entradas que no tengan el atributo estructural inetOrgPerson:
(!(objectClass=inetOrgPerson))