Usuarios y Grupos en Sistemas GNU/Linuxhot!
Transcripción
Usuarios y Grupos en Sistemas GNU/Linuxhot!
Usuarios y Grupos en sistemas GNU/Linux La información del usuario cómo es almacenada en el sistema /etc/passwd En la mayoría de las distribuciones Linux (así como en los *nixes comerciales), la información del usuario es almacenada en /etc/passwd, un archivo de texto que contiene el nombre de inicio de sesión de cada usuario, su contraseña cifrada, un identificador único numérico (llamado uid), un identificador numérico de grupo (llamado gid), un campo opcional para comentarios (comúnmente contiene ítemes tales como nombre real, número telefónico, etc.), su directorio hogar, y su intérprete de comandos por omisión. Una entrada típica en /etc/passwd deberia ser: pete:K3xcO1Qnx8LFN:1000:1000:Peter Hernberg,,,1-800-FOOBAR:/home/pete:/bin/bash Como puedes ver, es bastante directo. Cada entrada contiene los seis campos que descritos en el párrafo anterior, con cada campo separado por dos puntos. Contraseñas ocultas Observe su archivo /etc/passwd, muy probablemente le resultará similar: pete:x:1000:1000:Peter Hernberg,,,1-800-FOOBAR:/home/pete:/bin/bash ¿Y donde está la contraseña cifrada? Antes de decirle donde está, se requiere una pequeña explicación. El archivo /etc/passwd, el cual contiene información de todos los usuarios, incluye su contraseña cifrada, es visible por todos los usuarios, permitiendo tanto como sea posible que cualquier usuario obtenga la contraseña cifrada cuando sea requerida por el sistema. Aunque las contraseñas estén cifradas, los programas que determinan contraseñas están ampliamente disponibles. Para combatir esta amenaza cada vez mayor de la seguridad, las contraseñas ocultas (shadow N. del T.) fueron desarrolladas. Cuando un sistema habilita las contraseñas ocultas, el campo de la contraseña en /etc/passwd es reemplazado por una "x", la contraseña cifrada es grabada en /etc/shadow. Ya que /etc/shadow es legible solamente por el usuario administrador, usuarios maliciosos no pueden obtener la contraseña de sus compañeros. Cada entrada en /etc/shadow contiene el nombre de inicio de sesión del usuario (login N. del T.), su contraseña cifrada, y un número de campos relativos a la vigencia de la contraseña. Una entrada típica es como la siguiente: pete:/3GJllg1o4152:11009:0:99999:7::: /etc/group y /etc/gshadow La información de los grupos es almacenada en /etc/group. El formato es similar al de /etc/passwd, con las entradas conteniendo campos para el nombre del grupo, contraseña, identificador numérico (gid), y una lista separada por comas de los miembros del grupo. Una entrada en /etc/group es como ésta: pasta:x:103:spagetti,fettucini,linguine,vermicelli Como se puede observar existe una “x” en el campo de la contraseña, las contraseñas de grupo se pueden ocultar también. Aunque los grupos casi nunca tienen contraseñas asignadas, vale la pena observar que la contraseña cifrada del grupo se almacena en /etc/gshadow. Contraseñas cifradas MD5 Tradicionalmente, las contraseñas en los sistemas unix son cifradas con la función estándar crypt(). (Para más información de la función crypt(), vea la página del manual crypt(3)). Como las computadoras personales crecieron rápidamente, las contraseñas cifradas con ésta función se han hecho muy fáciles de violentar. Mientras Internet creció, la distribución de herramientas para violentar contraseñas a través de los equipos conectados en al red se volvió una tarea común. Muchas de las distribuciones (las más nuevas) permiten cifrar contraseñas con el algoritmo generador de claves más fuerte MD5 para representar de manera unívoca un documento (hash N. del T). (Para más información sobre el algoritmo hash MD5, consultar RFC 1321.) Mientras que las contraseñas cifradas con MD5 no eliminarán la amenaza de violentar las contraseñas, harán que el proceso de descifrar tus contraseñas sea mucho más difícil. Cómo suceden las cosas Como puede observar, existen varias formas de almacenar la información de autentificación del usuario en el sistema (contraseñas ocultas sin el algoritmo de cifrado MD5, /etc/passwd contraseñas con algoritmo de cifrado MD5, etc.). ¿De que forma los programas establecen una conexión entre tu inicio de conexión para verificar tu contraseña? Peor aún, ¿que si estás buscando cambiar la forma en que las contraseñas son almacenadas en el sistema? ¿Cómo hacen los programas para obtener tu contraseña conocida para almacenar una distinta? PAM es la respuesta. Cuentas de usuarios A fin de lograr una organización coherente entre todas las máquinas, en mi sistema las primeras cuentas son siempre las mismas. Siempre creo una primer cuenta de usuario con un nombre como "admin" (uid=1000). Reenvío todos los mensajes del superusuario a ella. Esta cuenta pertenece al grupo adm, al que puede darse una buena cantidad de privilegios de superusuario mediante el comando su usando PAM o con sudo. Sugiero crear una cuenta especial para las tareas de entrenamiento, para efectos prácticos la llamaremos penguin y será añadida al grupo adm para permitirle el acceso de lectura a los diversos archivos de registros situados en /var/log/. Véase passwd(5), group(5), shadow(5), group(5), vipw(8) y vigr(8). Para el significado oficial de usuarios y grupos, vea la lista a continuación: Usuarios y Grupos en el Sistema Debian El paquete base passwd de Debian contiene las versiones principales de /etc/passwd y de /etc/group. La herramienta update-passwd mantiene las entradas estos archivos principales en sincronización de todos los sistemas Debian. Abarcan solamente las identificaciones “estáticos globales”: es decir, aquellos cuales están reservados globalmente para el beneficio de paquetes que incluya archivos de esos usuarios o grupos, o necesitan los identificadores compiladas en dentro de los binarios. Puesto que esta reservación es una restricción seria, estos identificadores deben ser asignados de forma ordenada por el mantenedor de solicitudes de base-passwd. En general, los paquetes deben evitar solicitudes de tales identificadores en lo posible y en lugar de ello, asignar usuarios o grupos del sistema dinámicamente. Véase la política de Debian para otros detalles. El Manual de la política de Debian reserva rangos para éstos usuarios y grupos estáticos globales, pero no hace ningún intento en asignar números individuales o de definir sus propósitos. Este documento llena ese vacío describiendo los propósitos de las entradas individuales en estos archivos principales. Esto es un trabajo en progreso. Los ítemes requieren que el diálogo de retorno sea marcado con la etiqueta "HELP". Por favor envíe sus correos a <[email protected]> o un archivo de errores al Debian bug tracking system si tienes mayor información. Lista de usuarios y grupos en el sistema Debian Muchos usuarios tiene correspondencia en un grupo, y estos pares serán tratados juntos. root Root es (típicamente) el superusuario. daemon Algunos demonios sin privilegios requieren ser habilitados para escribir algunos archivos en el disco cuando son ejecutados como daemon.daemon (portmap, atd, jabberd, lambdamoo, mon, y otros). Demonios que no necesitan sus propios archivos, en algunas ocasiones se ejecutan como nobody.nogroup en lugar de otros; es generalmente mejor práctica utilizar un usuario dedicado, demonios más complejos y/o conscientes de la seguridad realmente hacen eso. El usuario daemon probablemente también es manipulado por demonios instalados localmente. LSB 1.3 enumera a los demonios de forma hereditaria, y dice: “El 'demonio' UID/GID será usado como un UID/GID no privilegiado para que los demonios se ejecuten con acceso limitado al sistema. Los demonios ahora deben ejecutarse generalmente debajo de UID/GIDs individuales para repartir funciones uno a partir de los otros.” bin NOTA: Ningún archivo en mi sistema pertenece al usuario o grupo bin. ¿Qué tan bueno es? ¿Históricamente ellos fueron probablemente los dueños de los binarios en /bin? No se menciona en el FHS, la política de Debian, o los registros de cambios de la base-passwd o de base-files. LSB 1.3 lista bin como herencia, y dice: “El UID/GID de 'bin' es incluido para compatibilidad con aplicaciones heredadas. Las nuevas aplicaciones no deben utilizar más UID/GID de 'bin'.” sys NOTA: Como bin, con la excepción que no se para que fue bueno históricamente. I'm told that /var/spool/cups is owned by group sys, dunno why. sync El intérprete del usuario sync es /bin/sync. Así, si establece su contraseña algo fácil adivinar (por ejemplo ""), cualquiera puede hacer uso de sync en el sistema a través de una consola aunque no tenga ninguna cuenta en el sistema. games Muchos juegos hacen sgid a juegos de tal forma que puedan escribir en sus archivos de mejores jugadas. Esto es explicado en Debian Policy. man El programa man (algunas veces) se ejecuta con el usuario man, lo cual le permite escribir páginas en /var/cache/man y actualizar bases de datos. lp En los dispositivos lp* se puede escribir con este grupo de modo que los usuarios en éste grupo podrán tener acceso al puerto paralelo directamente. Tradicionalmente éste trabajo es tomado por un demonio de impresión en lugar de otro que necesite ejecutarse en éste grupo. El sistema lpr mantiene sus directorios spool bajo el dominio lp/lp. Estos demonios y herramientas finales para el usuario (a través de setuid) se ejecutan como superusuario. NOTA: ¿que hacen otros sistemas de impresión(rlpr, cupsys, lprng, ...)? mail Contenedores de correo en /var/mail pertenecen y el grupo mail puede escribir en el, tal como es explicado en el Debian Policy. El usuario y grupo es usado para otros propósitos como lo son varios MTAs y MUAs. news Varios servidores de noticias y otros programas asociados (por ejemplo suck) utiliza el usuario y grupo news de varias formas. Los archivos en el spool de news a menudo son propiedad del usuario y grupo news. Programas como inews que necesitan ser utilizados por post news típicamente hacen sgid a news. uucp El usuario y grupo uucp es utilizado por el subsistema UUCP. Estos son propietarios de spool y archivos de configuración. Usuarios en el grupo uucp pueden ejecutar uucico. proxy Como demonio, éste usuario y grupo es utilizado por algunos demonios (especificamente, demonios proxy) que no tienen identificador de usuario dedicado y que necesita ser dueño de los archivos. Por ejemplo, el grupo proxy es utilizado pdnsd, así como squid se ejecuta como un usuario proxy. majordom Mayordomo el tiene asignado un uid estáticamente en los sistemas de Debian por razones históricas. No está instalado en nuevos sistemas. postgres Las bases de datos Postgresql son propiedad de éste usuario y grupo. www-data Algunos servidores web se ejecutan como www-data. El contenido del Web no debe ser propiedad de éste usuario, ya que si el servidor web está comprometido podría reescribir todo el sitio web. Los datos escritos fuera del web, incluyendo registros, serán propiedad de www-data. backup ¿Probablemente las responsabilidades de realizar respaldos y restaurarlos pueden ser delegadas localmente a alguien sin los permisos completos del administrador? NOTA: ¿Eso es correcto? ¿Amanda reporta éste uso, detalles? operator Históricamente, la cuenta del usuario operador ha sido usada por operadores del sistema con privilegios bajos para vaciar respaldos de sistemas de archivo a una cinta, y eran miembros del grupo root para poder realizar dicha tarea. En Debian, el uso de una utilidad como sudo para obtener privilegios es preferido ante cuentas tales como: propósitos altamente especiales, y el usuario operador no fue creado más por omisión. Este tenía uid 37. El grupo operator es usado por dump -n para informar a los operadores que hallan iniciado sesión vía wall cuando éstos requieren atención operador. Esto es un uso histórico, y las nuevas aplicaciones no deben tener este comportamiento. (Si no queda de otra, el grupo debe configurarse.) list Archivos de listas de correo y datos son propiedad de éste usuario y grupo. Algunos programas que manipulan listas de correo pueden ejecutarse como éste usuario también irc Utilizado por demonios IRC. Es requerido asignar un único usuario estáticamente debido a que un bug en ircd permite asignarse setuid() a sí mismo para compilarse un identificador de usuario al inicio del sistema. gnats NOTA: Evidentemente usado por gnats. ¿Y éste necesita una asignación estática? ¿por qué? nobody, nogroup Demonios que necesiten no ser dueños de cualquier archivo se ejecutan como usuario nobody y grupo nogroup, aunque utilizar un usuario dedicado es lejano a ser preferible. Así, ningún archivo en un sistema serán propiedad de éste usuario o grupo. (Técnicamente hablando, ésto no causa ningún daño para que un archivo sea propiedad del grupo nogroup mientras no tenga la propiedad de conferir privilegios adicionales, ésto es si el grupo y otros bits de permiso son iguales. Sin embargo, ésta práctica es descuidada y se debe evitar.) Si root-squashing está en uso sobre NFS, el acceso de root desde el cliente se realiza como usuario nobody en el servidor. Otros grupos que no están asociados a un usuario. adm El grupo es utilizado para tareas de monitoreo del sistema. Miembros de éste grupo pueden leer muchos archivos de registro en /var/log, y pueden usar xconsole. Históricamente, /var/log fue /usr/adm (y luego /var/adm), de allí el nombre del grupo. NOTA: Quizás la política debe indicar el propósito de este grupo así como los usuarios pueden ser agregados con seguridad a él, ciertamente que todos ellos estarán habilitados para leer registros. Que tal si alguien renombra un 'log' por ejemplo... tty Dispositivos tty y /dev/vcs* son miembros de éste grupo. Estos son usados por write y wall para permitir escritura en otros ttys. disk Raw access to disks. Mostly equivalent to root access. HELP: Well, I have some disk devices in /dev owned by the group, but I can't see the point. On another system, I noticed that some of the files lilo puts in /boot are also owned by disk. I can imagine local uses for such a group, like if you want to give some users in the group direct access to some hard disk. But these uses I've found on my systems seem to preclude doing that easily; if I put a user in group disk here, they'd have write access to the root filesystem. kmem /dev/kmem and similar files are readable by this group. This is mostly a BSD relic, but any programs that need direct read access to the system's memory can thus be made setgid kmem. dialout Full and direct access to serial ports. Members of this group can reconfigure the modem, dial anywhere, etc. dip The group's name stands for "Dialup IP". Being in group dip allows you to use a tool such as ppp or dip to dial up a connection. fax Allows members to use fax software to send or receive faxes. voice Voicemail, useful for systems that use modems as answering machines. cdrom This group can be used locally to give a set of users access to a CD-ROM drive. floppy This group can be used locally to give a set of users access to a floppy drive. tape This group can be used locally to give a set of users access to a tape drive. sudo Members of this group do not need to type their password when using sudo. See /usr/share/doc/sudo/OPTIONS. audio This group can be used locally to give a set of users access to an audio device. src This group owns source code, including files in /usr/src. It can be used locally to give a user the ability to manage system source code. HELP: /usr/src is owned by group src and is setgid. This doesn't make files put there by foo-src packages necessarily be owned by group src though. If the intent is to make group src be able to manage source code, perhaps policy should say that foo-src packages make files in /usr/src owned and writeable by the group (and files in tarballs dropped there likewise)? shadow /etc/shadow is readable by this group. Some programs that need to be able to access the file are setgid shadow. utmp This group can write to /var/run/utmp, /var/log/wtmp, /var/log/lastlog, and similar files. Programs that need to be able to write to them (such as X terminal emulators) are setgid utmp. video This group can be used locally to give a set of users access to a video device. plugdev Members of this group can mount removable devices in limited ways via pmount without a matching entry in /etc/fstab. This is useful for local users who expect to be able to insert and use CDs, USB drives, and so on. Since pmount always mounts with the nodev and nosuid options and applies other checks, this group is not intended to be root-equivalent in the ways that the ability to mount filesystems might ordinarily allow. Implementors of semantics involving this group should be careful not to allow root-equivalence. staff Allows users to add local modifications to the system (/usr/local, /home) without needing root privileges. Compare with group 'adm', which is more related to monitoring/security. users While Debian systems use the user-group system by default (each user has their own group), some prefer to use a more traditional group system. In that system, each user is a member of the 'users' group.