Aprenda Linux, 302 (Entornos mixtos): Gestionando cuentas de usuario y grupos

Planificando la gestión de cuentas de usuario y grupo

Si usted gestiona cuentas de usuario y grupo, tal vez encuentre que estas cuentas no siempre funcionan perfectamente para usuarios en entornos mixtos—una fuente común de frustración para usuarios y administradores de sistemas. Afortunadamente, la suite de Samba proporciona herramientas para ayudarle a gestionar el proceso. En este artículo, aprenda cómo gestionar cuentas de usuario y de grupo en su entorno mixto.

Tracy Bost, Consultant and Trainer, Freelance

Author photo - Tracy BostTracy Bost es un desarrollador de software e ingeniero en sistemas experto. También es profesor y entrenador para el sistema operativo de Linux. Tracy ha sido certificado como Red Hat Certified Engineer (RHCE) y Microsoft Certified Systems Engineer (MCSE), además de ser un miembro activo de Linux Foundation. Ha trabajado en varias industrias, incluyendo hipotecas, bienes raíces y el sector sin fines de lucro.



26-03-2012

Sobre esta serie

Esta serie de artículos le ayuda a aprender las tareas de administración de sistemas Linux. También puede usar el material en estos artículos para prepararse para los exámenes de Linux Professional Institute Certification nivel 3 (LPIC-3).

Vea nuestro roadmap de developerWorks para LPIC-3 para obtener una descripción y un enlace de cada artículo en esta serie. El roadmap está en progreso y refleja los objetivos actuales (marzo de 2011) para los exámenes de LPIC-3. A medida que cada artículo es completado, es añadido al roadmap.

En este artículo, aprenda sobre estos conceptos:

  • Cuentas de UNIX
  • Gestionando cuentas de Samba
  • Correlacionando cuentas
  • Forzando permisos de cuenta para archivos y directorios

Este artículo le ayuda a prepararse para el Objetivo 313.1 en el Tema 313 del examen de Especialidad en Entorno Mixto de Linux Professional Institute (302). El objetivo tiene un peso de 4.

Prerrequisitos

Para obtener el máximo de los artículos en esta serie, debe tener un conocimiento avanzado de Linux y un sistema Linux funcional en el cual pueda practicar los comandos cubiertos en este artículo. En particular, este artículo asume que tiene un conocimiento práctico de las funciones de línea de comandos de Linux y al menos un entendimiento general del propósito de Samba de acuerdo con lo cubierto en "Aprenda Linux, 302 (Entornos mixtos): Conceptos." Para realizar las acciones descritas en este artículo, debe tener el software de Samba instalado. Además, debe tener acceso de red para un cliente de Windows.


Entendiendo las cuentas de usuario y de grupo de UNIX

Sobre el examen optativo LPI-302

Linux Professional Institute Certification (LPIC) es como muchas otras certificaciones en las que se ofrecen distintos niveles, con cada nivel requiriendo más conocimiento y experiencia que el anterior. El examen LPI-302 es un examen de especialidad optativo en el tercer nivel de la jerarquía de LPIC y requiere un nivel avanzado de conocimiento de administración de sistemas Linux.

Para obtener su certificación de LPIC-3, debe pasar los dos exámenes de primer nivel (101 y 102), los dos exámenes de segundo nivel (201 y 202) y el examen principal de LPIC-3 (301). Después de que haya obtenido este nivel, puede tomar los exámenes de especialidad optativos, tales como LPI-302.

Su servidor de Samba probablemente no existe en un silo. Los usuarios necesitan acceder a archivos y directorios, pero antes de que puedan hacerlo, necesitan autenticarse. Los usuarios pueden conectarse desde estaciones de trabajo de Linux o desde un escritorio de Windows. De cualquier manera, necesitan cuentas que reconozca el servidor de Samba.

Una vez que los usuarios son autenticados, necesitan permisos apropiados para archivos, directorios y servicios de impresión. Los grupos son un dispositivo de Samba que puede ayudarle a gestionar mejor estos permisos.

La base de datos de backend de sam es su mediador de las cuentas de UNIX locales a las cuentas de usuario remotas. Existen varios métodos para permitir a sus usuarios autenticarse en el servidor de Samba, pero antes de profundizar en las cuentas de Samba, debe tener un sólido entendimiento de las bases de la gestión de cuentas de usuario y de grupo de UNIX.

Cuentas de usuario

Cuando crea una cuenta de usuario local en una computadora de Linux con una herramienta como useradd, la información de cuenta se graba en el archivo /etc/passwd. Este archivo almacena información como el nombre de usuario, su directorio de inicio, su shell predeterminado y cualquier comentario asociado con la cuenta. Estas cuentas son comúnmente conocidas como cuentas locales de UNIX. Este artículo usa los términos cuenta de UNIX y cuenta local en forma intercambiable.

El Listado 1 crea una cuenta local con el nombre de usuario monty, proporciona una descripción de Monty Python en la sección de comentario (-c), especifica un directorio de inicio (-m) y da al usuario un shell predeterminado de /bin/bash (-s).

Listado 1. Creando una cuenta local
[tbost@samba ~]$ sudo useradd -c'Monty Python' -m -s /bin/bash monty
[tbost@samba ~]$ less /etc/passwd | grep monty
monty:x:504:504:Monty Python:/home/monty:/bin/bash
[tbost@samba ~]$

Cada línea en /etc/passwd representa un registro de cuenta de usuario. Cada registro tiene siete campos separados por un delimitador: un símbolo de dos puntos (:). El nombre de usuario en el primer campo, el ID de usuario (UID) en el tercer campo y el ID de grupo (GID) en el cuarto campo son de interés particular cuando gestiona cuentas de Samba.

Cuentas de grupo

Las cuentas de grupo tienen un rol vital para facilitar la carga de la gestión para cualquier computadora de usuarios múltiples. Si está gestionando un servidor de Samba, permitir el acceso de grupos destinado para directorios específicos, archivos y servicios de impresión es parte de una configuración típica.

Igual que en las cuentas de usuario, si está trabajando con una configuración de cuenta de Samba local, necesita crear cuentas de grupo de UNIX en el servidor de Samba local en la mayoría de las configuraciones de Samba. Puede ubicar la información de cuenta de grupo de UNIX en el archivo /etc/group. Algunas distribuciones de Linux crean un grupo privado local para cada nuevo usuario. Tal es el caso aquí, con la adición del usuario monty:

[tbost@samba ~]$ less /etc/group | grep monty
monty:x:504:
[tbost@samba ~]$

Este código muestra la cuenta de grupo privado creada para el usuario monty. Si está trabajando en un entorno mixto con computadores de Windows, tenga en mente que Windows no permite que una cuenta de usuario y una cuenta de grupo tengan nombres idénticos.

En forma muy similar a las cuentas de usuario, las cuentas de grupo deben existir en el servidor de UNIX local antes de que Samba pueda usarlas. Cree un grupo al usar una utilidad tal como groupadd (vea el Listado 2) o edite el archivo /etc/group directamente con un editor tal como vim.

Listado 2. Creando una cuenta de grupo y añadiendo un usuario a ella
[tbost@samba ~]$ sudo groupadd accounting
[tbost@samba ~]$ sudo usermod -G accounting monty
[tbost@samba ~]$ less /etc/group | grep accounting
accounting:x:506:monty
[tbost@samba ~]$

El Listado 2 usa las herramientas /sbin/groupadd y /sbin/usermod para crear el grupo y añadir un usuario a él. Si tiene múltiples usuarios para añadir a un grupo, puede crear un script para realizar la tarea o añadir los usuarios al archivo /etc/group directamente. Los miembros del grupo deben estar en el último campo delimitado y separados por una coma (,). Si crea grupos manualmente, tenga en mente que cada grupo debe tener un GID exclusivo.


Gestionando cuentas de Samba

Para la configuración típica de Samba, la información de cuenta es almacenada en una de tres bases de datos de contraseñas:

  • smbpasswd
  • tdbsam
  • ldapsam

Usando smbpasswd y tdbsam

La base de datos smbpasswd es la base de datos de backend predeterminada usada por Samba hasta la versión 3.4. En Samba 3.4, smbpasswd está en desuso y tdbsam es ahora el backend predeterminado así como la base de datos de fondo recomendada para un entorno con menos de 250 usuarios.

La base de datos tdbsam es considerada más escalable que smbpasswd. Si está usando una versión de Samba que emplea smbpassd de forma predeterminada, puede cambiar la base de datos de backend en el archivo smb.conf al especificar el parámetro passdb = tdbsam en la sección global .

Pero smbpasswd no es sólo una base de datos: es una herramienta incluida con la suite de Samba que puede proporcionar una forma de gestionar cuentas de Samba en una configuración simple de Samba. Para crear una cuenta de Samba, necesita privilegios de raíz. La cuenta debe existir en el servidor local de Linux antes de que intente crear la cuenta de Samba. El Listado 3 muestra el código para crear una cuenta de usuario de Samba con smbpasswd.

Listado 3. Creando una cuenta de usuario de Samba usando smbpasswd
[tbost@samba ~]$ sudo smbpasswd -a monty
New SMB password:
Retype new SMB password:
Added user monty.

Los usuarios tienen acceso a smbpasswd para cambiar sus contraseñas, como se muestra en el Listado 4.

Listado 4. Usuario local cambiando la contraseña con smbpasswd
[monty@samba ~]$ smbpasswd
Old SMB password:
New SMB password:
Retype new SMB password:
Password changed for user monty
[monty@samba ~]$

Alternativamente, puede configurar Samba para sincronización de contraseña, de forma que cuando un usuario cambia la contraseña de cuenta local, la contraseña de Samba es actualizada también:

[global]
unix password sync = yes

Si un usuario no necesita acceso al servidor de Samba durante un largo periodo de tiempo, puede inhabilitar temporalmente la cuenta y después habilitarla en una fecha posterior. Si un usuario ya no necesita el acceso, puede suprimir la cuenta. El Listado 5 muestra los comandos.

Listado 5. Inhabilitando, habilitando y suprimiendo una cuenta de Samba con smbpasswd
[tbost@samba ~]$ sudo smbpasswd -d monty
Disabled user monty.
[tbost@samba ~]$ sudo smbpasswd -e monty
Enabled user monty.
[tbost@samba ~]$ sudo smbpasswd -x monty
Deleted user monty.
[tbost@samba ~]$

Usando pdbedit

Una herramienta rica en dispositivos incluida con la suite de Samba es pdbedit. Esta herramienta puede trabajar con cuentas de cualquiera de las tres bases de datos de backend. Además de crear, modificar y eliminar usuarios, puede usar pdbedit para:

  • Listar cuentas de usuario
  • Especificar directorios de inicio
  • Importar cuentas de usuario
  • Establecer políticas de cuenta

Puede usar pdbedit y sambapasswd en forma intercambiable en la base de datos tdbsam (vea el Listado 6). Sin embargo, cualquier comando que realice con pdbedit debe ser con privilegios de raíz.

Listado 6. Interactuando con la base de datos de backend usando smbpasswd y pdbedit
[tbost@samba ~]$ sudo smbpasswd -a monty
New SMB password:
Retype new SMB password:
Added user monty.
[tbost@samba ~]$ sudo pdbedit -L
monty:504:Monty Python
[tbost@samba ~]# sudo pdbedit -L --verbose 
Unix username:        monty
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-2247757331-3676616310-3820305120-1001
Primary Group SID:    S-1-5-21-2247757331-3676616310-3820305120-513
Full Name:            Monty Python
Home Directory:       \\samba\monty
HomeDir Drive:        
Logon Script:         
Profile Path:         \\samba\monty\profile
Domain:               SAMBA
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    Tue, 24 May 2011 14:19:46 CDT
Password can change:  Tue, 24 May 2011 14:20:16 CDT
Password must change: Tue, 24 May 2011 14:20:16 CDT
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

El Listado 6 demuestra cómo puede crear un usuario con smbpassd y después lista los usuarios de Samba con pdbedit. Para obtener información de cuenta más extensa en pdbedit, incluya el conmutador --verbose .

Construya su propio feed

Puede construir un feed personalizado de RSS, Atom o HTML, de forma que sea notificado a medida que añadimos nuevos artículos o actualizamos el contenido. Vaya a los developerWorks RSS feeds. Seleccione Linux para la zona y Articles para el tipo, y escriba Linux Professional Institute para las palabras clave. Después, elija su tipo de feed preferido.

También puede usar pdbedit para establecer políticas de cuenta. Los nombres de políticas de cuenta que puede gestionar son:

  • min password length
  • password history
  • user must logon to change password
  • maximum password age
  • minimum password age
  • lockout duration
  • reset count minutes
  • bad lockout attempt
  • disconnect time
  • refuse machine password change

El Listado 7 cambia la longitud mínima de contraseña a ocho caracteres y después cambia la edad máxima de la contraseña a 30 días. El conmutador -P toma un argumento de cadena de caracteres que debe coincidir exactamente con uno de los nombres de política predefinidos, mientras que el conmutador -c toma un argumento del valor para la configuración de la política.

Listado 7. Gestionando cuentas con pdbedit
[tbost@samba ~]$ sudo pdbedit -P 'min password length' -C 8
account policy "min password length" description: Minimal password length (default: 5)
account policy "min password length" value was: 5
account policy "min password length" value is now: 8
[tbost@samba ~]$ sudo pdbedit -P 'maximum password age' -C 30
...
account policy "maximum password age" value was: 4294967295
account policy "maximum password age" value is now: 30

Consulte la documentación de man pdbedit o escriba pdbedit -h para obtener más detalles sobre comandos disponibles.

Usando ldapsam

Si está trabajando con un servicio de directorio existente tal como Lightweight Directory Access Control (LDAP) o trabajando en un entorno más grande (esto es, más de 250 usuarios), puede usar el fondo de ldapsam. De las tres bases de datos de backend, ldapsam es la única que permite el almacenamiento de cuentas de grupo. Al almacenar todos los usuarios y grupos en el fondo de ldap, todos sus servidores pueden tener UIDs y GIDs consistentes. Configurar LDAP está más allá del ámbito de este artículo, pero el parámetro idmap backend en smb.conf especifica la ubicación de su servidor LDAP.

El parámetro establecido a continuación dirige a Samba para que use el servicio de directorio LDAP en el nombre de host directory-services.example.org como su almacenamiento de backend. Primero debe tener un servidor LDAP en funcionamiento que esté configurado para interactuar con Samba. (idmap se discute con más detalle en la siguiente sección.)

[global]
idmap backend = ldap:ldap://directory-services.example.org:636

Correlacionando cuentas

Si su servidor de Samba es un servidor autónomo dentro de un dominio, probablemente sólo usará archivos de correlación. Sin embargo, si su entorno consiste en usuarios conectándose al servidor de Samba desde otro dominio, la herramienta idmap ayuda con la correlación apropiada de UIDs y GIDs.

Correlación de usuarios usando sampasswd y archivos de TDB

Si los usuarios de Windows conectándose al servidor de Samba tienen nombres de usuario idénticos a aquellos creados en el servidor de Samba, un archivo de correlación no debe ser necesario. Sin embargo, si sus usuarios de Windows tienen nombres que no se correlacionan exactamente, puede crear un archivo de correlación para enlazar los nombres de usuario. Tenga en mente que, aunque Linux es sensible a mayúsculas y minúsculas, los nombres de usuario de Windows no lo son. Entonces, el nombre de usuario de Windows TBost no es la misma cuenta local que tbost. La Tabla 1 muestra la correlación de una cuenta de Windows con una de UNIX.

Tabla 1. Nombres de cuenta de Windows y UNIX a ser usados para la correlación
WindowsUNIX
Montymonty
bostttbost
sue.georgesue

Cuando cree las cuentas de Samba, use el nombre de cuenta de Windows. Entonces puede especificar una ubicación de archivo en el archivo smb.conf que correlacionará las cuentas con la cuenta de UNIX apropiada. El Listado 8 muestra la correlación de cuentas en UNIX.

Listado 8. Correlación de cuentas simple en UNIX
[tbost@samba ~]$ sudo vi /etc/samba/smb.conf 
[global]
username map = /etc/samba/smbusers
...
...
...
[tbost@samba ~]$ sudo vi /etc/samba/smbusers 
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
monty = Monty
tbost = bostt
sue = sue.george

El comando de código en el Listado 8 configura el parámetro username map para que use /etc/samba/smbusers as como el archivo de correlación. Al correlacionar cuentas, esto es sencillo: coloca el nombre de cuenta de UNIX en el lado izquierdo y los nombres de cuenta de Samba en el lado derecho, separados por el símbolo de igual (=). Cuando los usuarios se conectan, Samba los correlaciona con la cuenta apropiada.

Correlacionando grupos

Para entornos de servidor de Samba típicos, las correlaciones de grupo son configurables usando el comando net groupmap de la suite de Samba. Suponga que las cuentas de usuarios de Windows Monty, bostt y sue.george son miembros de las cuentas de grupo Domain Admins, Domain Users y Domain Guests. Si desea que estos usuarios tengan permiso de cuenta de grupo para los grupos de UNIX similares en el servidor de Samba, añada los nombres de usuario de cuenta de UNIX a cada grupo:

adm:x:4:root,adm,daemon,monty,tbost,sue
users:x:100:monty,tbost,sue
guests:x:507:monty,tbost,sue

Esto es sólo un listado parcial de la lista completa de grupos en un servidor de Samba. Los administradores de grupos y los usuarios fueron creados cuando el sistema operativo de Linux fue instalado. Necesitará añadir cada usuario al grupo apropiado (vea la Tabla 2).

Tabla 2. Grupos de cuenta de Windows y UNIX a ser usados para la correlación
WindowsUNIXID relativo (RID) de WindowsGID de UNIX
Domain Adminsadm5124
Domain Usersusers513100
Domain Guestsguests514507

El comando net groupmap puede correlacionar sus grupos de dominio (vea el Listado 9) y net groupmap list lista las correlaciones de grupo de dominio. Comenzando con Samba 3.x, hay una nueva funcionalidad de correlación de grupos disponible para crear asociaciones entre un RID de grupo de Windows y un GID de UNIX.

Listado 9. Correlacionando grupos con el comando groupmap
[tbost@samba ~]$sudo net groupmap add ntgroup="Domain Admins" unixgroup=adm \
rid=512 type=d
Successfully added group Domain Admins to the mapping db as a domain group
[tbost@samba ~]$ sudo net groupmap add ntgroup="Domain Users" unixgroup=users \
rid=513 type=d
Successfully added group Domain Users to the mapping db as a domain group
[tbost@samba ~]$sudo net groupmap add ntgroup="Domain Guests" unixgroup=guests \
rid=514 type=d
Successfully added group Domain Guests to the mapping db as a domain group
[tbost@samba ~]$sudo net groupmap list
Domain Users (S-1-5-21-2247757331-3676616310-3820305120-513) -> users
Domain Guests (S-1-5-21-2247757331-3676616310-3820305120-514) -> guests
Domain Admins (S-1-5-21-2247757331-3676616310-3820305120-512) -> adm

La secuencia de etapas para correlacionar grupos en el Listado 9 es:

  1. Con privilegios de raíz, use el comando net groupmap add para especificar el grupo de Windows ntgroup='Domain Admin" para correlacionarlo con el grupo de UNIX, unixgroup=adm.

    Realice esta etapa para cada correlación de grupos.

  2. El comando final en el Listado 9 muestra la correlación para los grupos.

Usando correlación de identidades

Para la mayoría de los entornos, las correlaciones anteriores son suficientes. Sin embargo, si gestiona un entorno más complejo, tal como uno con múltiples servidores de Samba o estaciones de trabajo de distintos dominios conectándose a su servidor de Samba, debe familiarizarse con la correlación de identidades (IDMAP) y con Winbind. IDMAP puede ayudarle a superar los problemas de interoperabilidad entre un ID de seguridad (SID) y un UID o GID de Unix local.

Si su servidor de Samba es un miembro de un dominio de Windows, puede usar Winbind para correlacionar un SID con un UID o GID. Puede establecer el rango del parámetro idmap y especificar cuánta información de cuenta debe almacenar en caché Winbind en el archivo smb.conf:

[global]
idmap uid = 20000-50000
idmap gid = 20000-50000
winbind cache time = 300

Los parámetros en el código anterior instruyen a Winbind para que use el rango de UID local de 20000-50000 y un rango de GID de 20000-50000. Esta configuración es un rango relativamente seguro para un servidor de Samba que no espera tener varios miles de cuentas de usuarios o grupos locales. El parámetro winbind cache time = 300 instruye a Winbind para que almacene en caché información de cuenta durante 300 segundos. De forma predeterminada, Winbind almacena correlaciones en el archivo winbind_idmap.tdb.


Usando cuentas predeterminadas para forzar la propiedad

En lugar de añadir todos los usuarios a un grupo, tal vez encuentre menos abrumador usar los parámetros force user y force group . Cuando son establecidos, estos parámetros instruyen a Samba para que conecte a un usuario autorizado como si tuviera los permisos para el usuario y grupo especificados. Esto es especialmente benéfico cuando se construye un intercambio que será accedido por muchos usuarios y los permisos comunes son suficientes:

[global]
username map = /etc/samba/smbusers
force user = guest
force group = +employees

En el código anterior, el parámetro force user trata a todos los usuarios conectados como el usuario guest al trabajar con archivos. Un usuario aún debe conectarse con una cuenta de usuario válida. Las muestras de configuración forzarán a las cuentas de usuario para guest, con la cuenta de grupo employees.

Recursos

Aprender

Comentar

  • Participe en la Comunidad My developerWorks. Conéctese con otros usuarios developerWorks mientras explora los blogs, foros, grupos y wikis dirigidos a desarrolladores.

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Linux
ArticleID=806609
ArticleTitle=Aprenda Linux, 302 (Entornos mixtos): Gestionando cuentas de usuario y grupos
publish-date=03262012