Xestión de usuarios e grupos en Samba4
Neste apartado veremos dúas formas de xestionar os usuarios e grupos en Samba4: utilizando as Ferramentas de Administración Remota do Servidor (RSAT) de Microsoft instaladas nun cliente Windows integrado no dominio, ou coa ferramenta samba-tool.
Esquema dos usuarios e grupos do dominio
- En primeiro lugar, recordemos o esquema dos usuarios e grupos do noso dominio:
Xestión dos usuarios e grupos con RSAT
- Comezaremos vendo a administración dos usuarios dende un cliente Windows usando as RSAT. Instalaremos esta ferramenta nun equipo integrado no dominio, como wclient01.
Instalación de RSAT
- Descargamos as RSAT correspondente á versión de Windows que teñamos na máquina:
- Para Windows 7: https://www.microsoft.com/es-es/download/details.aspx?id=7887 (En Windows 7 pode ser necesario activar as ferramentas de AD DS despois da instalación do paquete das RSAT - https://uftech.wordpress.com/2013/05/15/instalar-administrador-de-active-directory-en-windows-7/)
- Para Windows 8: http://www.microsoft.com/es-es/download/details.aspx?id=28972
- Para Windows 8.1: http://www.microsoft.com/es-es/download/details.aspx?id=39296
- Para Windows 10: https://www.microsoft.com/es-ES/download/details.aspx?id=45520
- Téñase en conta que é moi importante ter o sistema operativo actualizado antes de instalar as RSAT, xa que temos detectado sobre todo en Windows 10 que de non ter actualizado o sistema as ferramentas non funcionan correctamente.
- Móstrase a continuación os pasos da instalación en Windows 10:
Estrutura do dominio e xestión de unidades organizativas
- Comezaremos vendo a estrutura do LDAP que almacena os usuarios e grupos do dominio, e como definir as unidades organizativas que queiramos para organizalos.
- Para poder xestionar os usuarios e grupos do dominio con RSAT, iniciaremos sesión en wclient01 co usuario Administrator, xa que é polo momento o único que temos cos privilexios suficientes para administrar o dominio (é dicir, membro do grupo Domain Admins).
Xestión de grupos de usuarios
- Imos ver como administrar grupos de usuarios coa ferramenta de Usuarios e equipos de Active Directory
Desta forma o grupo xa está creado é podemos utilizalo para os usuarios do dominio. Pero non lle temos asignado o seu identificador de grupo POSIX (se revisamos o esquema de usuarios o grupo debería ter o gid 10000). Isto pode ter relevancia dependendo do sistema que usemos nos equipos cliente para obter os usuarios e grupos do dominio. Paquetes como LikewiseOpen ou PBISOpen que nós utilizamos non van facer caso deste identificador porque se inventarán eles o seu propio identificador para o usuario e grupo, usando unha función hash, pero outros paquetes como nslcd que usaremos no servidor non o farán, e só terán en conta os usuarios e grupo do dominio que teñan establecido un identificador POSIX. Imos ver como podemos asignarlle ao grupo o identificador POSIX que lle "toca": No menú Ver, activamos a opción de Características avanzadas.
Xestión de usuarios
Imos cos usuarios; vexamos como crear un usuario dentro dunha unidade organizativa concreta e introducilo nos grupos que queiramos:
Vemos o usuario creado, e nas propiedades podemos ver, por exemplo na lapela Cuenta as opcións de inicio sesión que acabamos de introducir. Na lista de opcións que atopamos dentro de Opciones de cuenta, atoparemos a opción de establecer a conta como deshabilitada que podemos utilizar para bloquear temporalmente contas de usuarios.
Creación de usuarios a partir dun modelo
- En moitas ocasións, interésanos crear de usuarios a partir dun usuario de modelo para o que xa temos establecido unha configuración determinada de grupos, perfil, etc.
- Con RSAT podemos copiar un usuario e así pasaremos toda a configuración do usuario copiado ao novo usuario. A configuración de perfil, feita habitualmente en función do nome do usuario, será modificada co nome que lle poñamos ao novo usuario.
Xestión dos usuarios e grupos con samba-tool
- Ata o de agora, utilizamos o comando samba-tool para inicializar a estrutura do dominio, utilizando os parámetros domain provision. Pero son moitísimas as opcións que admite este comando, e ímonos centrar neste apartado nas que podemos utilizar para administrar os usuarios e grupos.
Características de samba-tool
- Tendo en conta o gran número de parámetros que podemos utilizar con samba-tool, é moi conveniente que saibamos utilizar a axuda que o propio comando inclúe para saber cales temos que introducir en función do que queiramos facer. Introducimos o comando samba-tool -h para ver os subcomandos que admite:
root@dserver00:~# samba-tool -h Usage: samba-tool <subcommand> Main samba administration tool. Options: -h, --help show this help message and exit Version Options: -V, --version Display version number Available subcommands: dbcheck - Check local AD database for errors. delegation - Delegation management. dns - Domain Name Service (DNS) management. domain - Domain management. drs - Directory Replication Services (DRS) management. dsacl - DS ACLs manipulation. fsmo - Flexible Single Master Operations (FSMO) roles management. gpo - Group Policy Object (GPO) management. group - Group management. ldapcmp - Compare two ldap databases. ntacl - NT ACLs manipulation. processes - List processes (to aid debugging on systems without setproctitle). rodc - Read-Only Domain Controller (RODC) management. sites - Sites management. spn - Service Principal Name (SPN) management. testparm - Syntax check the configuration file. time - Retrieve the time on a server. user - User management. vampire - Join and synchronise a remote AD domain to the local server. For more help on a specific subcommand, please type: samba-tool <subcommand> (-h|--help)
- Podemos comprobar o gran número de funcións que podemos facer, que van dende comprobar erros na base de datos do dominio ata a xestión do DNS.
- Pero moitos dos subcomandos teñen á súa vez subcomandos, que nos permiten levar a cado diversas tarefas de administración. Por exemplo, podemos ver as opcións do subcomando dns con samba-tool dns -h:
root@dserver00:~# samba-tool dns -h Usage: samba-tool dns <subcommand> Domain Name Service (DNS) management. Options: -h, --help show this help message and exit Available subcommands: add - Add a DNS record delete - Delete a DNS record query - Query a name. roothints - Query root hints. serverinfo - Query for Server information. update - Update a DNS record zonecreate - Create a zone. zonedelete - Delete a zone. zoneinfo - Query for zone information. zonelist - Query for zones. For more help on a specific subcommand, please type: samba-tool dns <subcommand> (-h|--help)
- E así poderíamos seguir, porque de novo atopamos subcomandos dentro de samba-tool dns. Seguro que o lector pode deducir que teríamos que introducir se quixéramos saber como usar o subcomando samba-tool dns add para engadir rexistros no DNS.
Xestión de grupos de usuarios
- Se queremos administrar os grupos de usuarios do dominio, utilizamos o comando samba-tool group. Vemos a continuación as opcións deste comando:
Available subcommands: add - Creates a new AD group. addmembers - Add members to an AD group. delete - Deletes an AD group. list - List all groups. listmembers - List all members of an AD group. removemembers - Remove members from an AD group.
- Imos crear o grupo g-alum dentro da OU grupos:
root@dserver00:~# samba-tool group add g-alum --groupou=OU=grupos
Added group g-alum
- Podemos ver con RSAT o grupo creado (prememos a tecla F5 para actualizar a vista de RSAT se xa o tiñamos aberto):
Xestión de usuarios
- A xestión dos usuarios farémola con samba-tool user:
add - Create a new user. create - Create a new user. delete - Delete a user. disable - Disable an user. enable - Enable an user. list - List all users. password - Change password for a user account (the one provided in authentication). setexpiry - Set the expiration of a user account. setpassword - Set or reset the password of a user account.
- O subcomando create admite moitísimos parámetros para o novo usuario que se crea (recoméndase comprobalos con samba-tool user create -h). O seguinte comando crea o usario mon, con nome e apelidos Mon Mon, contrasinal inicial abc123. que debe cambiar no seguinte inicio de sesión, dentro da OU dam1 (que está dentro da OU alumnos e que a súa vez está dentro da OU usuarios) e con uid 10002:
root@dserver00:~# samba-tool user create mon abc123. --given-name=Mon --surname=Mon --must-change-at-next-login --userou=OU=dam1,OU=alumnos,OU=usuarios --uid-number=10002
User 'mon' created successfully
- Podemos ver con RSAT o usuario creado:
- Podemos xestionar os grupos dos que un usuario é membro con samba-tool group. Os seguinte comandos introducie a mon nos grupos g-usuarios, g-alum e g-dam1-alum:
root@dserver00:~# samba-tool group addmembers g-usuarios mon
Added members to group g-usuarios
root@dserver00:~# samba-tool group addmembers g-alum mon
Added members to group g-alum
root@dserver00:~# samba-tool group addmembers g-dam1-alum mon
Added members to group g-dam1-alum
root@dserver00:~#
- Podemos ver o efecto con RSAT:
Script para a creación masiva de usuarios
- Unha vantaxe de utilizar samba-tool para a xestión dos usuarios é que podemos facer de forma bastante simple un script que cree usuarios de forma masiva a partir dun ficheiro de texto cos datos dos usuarios.
- A continuación móstrase un exemplo de este script.
- SCRIPT: crear_alumnos.sh
#!/bin/bash
# Script que da de alta os usuarios indicados nun ficheiro de texto
# Lemos cada liña do ficheiro que nos indiquen como parámetro
for i in `cat $1`; do
# Extraemos os campos dos usuarios
LOGIN=`echo $i | cut -f 1 -d :`
NOME=`echo $i | cut -f 2 -d :`
APELIDOS=`echo $i | cut -f 3 -d :`
GRUPO=`echo $i | cut -f 4 -d :`
UID=`echo $i | cut -f 5 -d :`
# Engadimos o usuario con samba-tool e introducimolo nos grupos que lle corresponda
echo -n "Engadindo usuario $LOGIN..."
samba-tool user create $LOGIN abc123. --given-name=$NOME --surname=$APELIDOS --must-change-at-next-login --userou=OU=$GRUPO,OU=alumnos,OU=usuarios --uid-number=$UID
samba-tool group addmembers g-usuarios $LOGIN
samba-tool group addmembers g-alum $LOGIN
samba-tool group addmembers g-$GRUPO-alum $LOGIN
echo "[OK]"
done
- Creamos un ficheiro de texto cos dous alumnos de dam2:
- FICHEIRO DE USUARIOS: alumnos.txt
pia:Pia:Glez:dam2:10004 paz:Paz:Fdez:dam2:10005
- Executamos o script pasándolle como parámetro o nome do ficheiro cos datos dos alumnos:
root@dserver00:~# sh crear_alumnos.sh alumnos.txt
Engadindo usuario pia...User 'pia' created successfully
Added members to group g-usuarios
Added members to group g-alum
Added members to group g-dam2-alum
[OK]
Engadindo usuario paz...User 'paz' created successfully
Added members to group g-usuarios
Added members to group g-alum
Added members to group g-dam2-alum
[OK]
- Podemos ver o efecto da execución con RSAT (Recórdese premer F5 para actualizar a vista de RSAT se xa estaba aberto):
Xestión da política de contrasinais
- Un aspecto importante na seguridade do dominio é a política de contrasinais, que forzará a que os contrasinais dos usuarios teñan unha complexidade determinada, unha lonxitude mínima, que a cambien de forma periódica, etc.
- Samba4 xa ven por defecto con unha configuración que esixe unha lonxitude mínima e unha complexidade aos contrasinais, que podemos ver e modificar con samba-tool domain passwordsettings.
- O seguinte comando mostra as restricións de contrasinais que está configuradas neste momento:
root@dserver00:~# samba-tool domain passwordsettings show
Password informations for domain 'DC=iescalquera,DC=local'
Password complexity: on
Store plaintext passwords: off
Password history length: 24
Minimum password length: 7
Minimum password age (days): 1
Maximum password age (days): 42
Account lockout duration (mins): 30
Account lockout threshold (attempts): 0
Reset account lockout after (mins): 30
- Podemos ver que o contrasinal ten que ter unha lonxitude mínima de 7 caracteres. Vexamos o que pasa se intentamos crear o usuario tom con contrasinal a:
root@dserver00:~# samba-tool user create tom a --given-name=Tom --surname=Tom --must-change-at-next-login --userou=OU=dam1,OU=alumnos,OU=usuarios --uid-number=10003 --gid-number=10000
ERROR(ldb): Failed to add user 'tom': - 0000052D: Constraint violation - check_password_restrictions: the password is too short. It should be equal or longer than 7 characters!
- O exemplo que se mostra a continuación elimina a restrición de complexidade dos contrasinais, e establece a lonxitude mínima a 1 carácter:
root@dserver00:~# samba-tool domain passwordsettings set --complexity=off --min-pwd-length=1
Password complexity deactivated!
Minimum password length changed!
All changes applied successfully!
- Podemos comprobar como agora podemos engadir o usuario tom co contrasinal a:
root@dserver00:~# samba-tool user create tom a --given-name=Tom --surname=Tom --must-change-at-next-login --userou=OU=dam1,OU=alumnos,OU=usuarios --uid-number=10003 --gid-number=10000
User 'tom' created successfully