28
Users and Groups 1 Capítulo 1 Usuarios de Linux y el archivo /etc/passwd Conceptos clave A un nivel inferior los usuarios son representados por un número entero llamado Id del usuario (uid). Cada proceso que se desarrolla en el sistema se ejecuta como un uid dado Cada archivo en el sistema de archivos es propiedad de un uid El archivo /etc/passwdasigna los uids a las cuentas de usuario. Las cuentas de usuarios asignan los uids al nombre del usuario, contraseña, Id de Grupo (s), directorio de inicio y shell de inicio. La contraseña se puede cambiar con el comando passwd . Los usuarios de Linux y el archivo /etc/passwd. Cuando se utiliza un sistema Linux, usted primero se identifica al entrar con un nombre particular de usuario nombre de usuario. Su nombre de usuario lo representa a usted. Está asociado con las cosas que usted hace: cada proceso que se ejecuta en el sistema tiene un nombre de usuario asociado. Está asociado con las cosas que usted grabe: cada archivo en el sistema está rotulado como propiedad de un usuario particular. Está asociado con las cosas que usted utiliza: la cantidad de espacio en el disco que utiliza o la cantidad de tiempo del procesador que usa, pueden ser rastreados por el nombre de usuario. Cada usuario en el sistema no sólo tiene un nombre de usuario único, sino también un userid, a menudo abreviado como uid. Linux rastrea los userids como un número entero de 32bits, es decir que puede haber más de 2^32 o cerca de 4 mil millones de usuarios. Mientras que a la gente le gusta pensar en términos de palabras (nombres de usuarios), al Kernel de Linux se le facilita pensar en términos de números (uids). Cuando el kernel mantiene el rastro de quién es el dueño del proceso o del archivo, éste recuerda el uid en lugar del nombre del usuario. Sólamente cuando algún comando produce salida para que la gente lea, el uid se convierte en el nombre de usuario. El sistema mantiene una base de datos que asigna los nombres de usuarios a los userids. Esta base de datos se almacena en el archivo de configuración /etc/passwd . Linux, al igual que Unix, tiene una afortunada tradición: incluso los archivos principales de configuración en el sistema se mantienen en un texto leíble por humanos y se pueden modificar con un editor de textos. Los usuarios y administradores pueden usar herramientas sencillas para manejar texto, tales como los paginadores para examinar las bases de datos. La mayoría de los usuarios en el sistema tiene permisos para leer, pero no para modificar este archivo. A continuación se verán unas lineas de un archivo típico/etc/passwd. [elvis@station elvis]$ tail /etc/passwd apache:x:48:48:Apache:/var/www:/bin/bash postfix:x:89:89::/var/spool/postfix:/sbin/nologin webalizer:x:67:67:Webalizer:/var/www/html/usage:/sbin/nologin

3 users and groups

  • Upload
    yimfer1

  • View
    104

  • Download
    17

Embed Size (px)

Citation preview

Page 1: 3   users and groups

Users and Groups

1

Capítulo 1 Usuarios de Linux y el archivo /etc/passwd

Conceptos clave

• A un nivel inferior los usuarios son representados por un número entero llamado Id del usuario (uid).

• Cada proceso que se desarrolla en el sistema se ejecuta como un uid dado • Cada archivo en el sistema de archivos es propiedad de un uid • El archivo /etc/passwd asigna los uids a las cuentas de usuario. • Las cuentas de usuarios asignan los uids al nombre del usuario, contraseña, Id de

Grupo (s), directorio de inicio y shell de inicio. • La contraseña se puede cambiar con el comando passwd .

Los usuarios de Linux y el archivo /etc/passwd.

Cuando se utiliza un sistema Linux, usted primero se identifica al entrar con un nombre particular de usuario nombre de usuario. Su nombre de usuario lo representa a usted. Está asociado con las cosas que usted hace: cada proceso que se ejecuta en el sistema tiene un nombre de usuario asociado. Está asociado con las cosas que usted grabe: cada archivo en el sistema está rotulado como propiedad de un usuario particular. Está asociado con las cosas que usted utiliza: la cantidad de espacio en el disco que utiliza o la cantidad de tiempo del procesador que usa, pueden ser rastreados por el nombre de usuario.

Cada usuario en el sistema no sólo tiene un nombre de usuario único, sino también un userid, a menudo abreviado como uid. Linux rastrea los userids como un número entero de 32bits, es decir que puede haber más de 2^32 o cerca de 4 mil millones de usuarios. Mientras que a la gente le gusta pensar en términos de palabras (nombres de usuarios), al Kernel de Linux se le facilita pensar en términos de números (uids). Cuando el kernel mantiene el rastro de quién es el dueño del proceso o del archivo, éste recuerda el uid en lugar del nombre del usuario. Sólamente cuando algún comando produce salida para que la gente lea, el uid se convierte en el nombre de usuario.

El sistema mantiene una base de datos que asigna los nombres de usuarios a los userids. Esta base de datos se almacena en el archivo de configuración /etc/passwd . Linux, al igual que Unix, tiene una afortunada tradición: incluso los archivos principales de configuración en el sistema se mantienen en un texto leíble por humanos y se pueden modificar con un editor de textos. Los usuarios y administradores pueden usar herramientas sencillas para manejar texto, tales como los paginadores para examinar las bases de datos. La mayoría de los usuarios en el sistema tiene permisos para leer, pero no para modificar este archivo. A continuación se verán unas lineas de un archivo típico/etc/passwd .

[elvis@station elvis]$ tail /etc/passwd apache:x:48:48:Apache:/var/www:/bin/bash postfix:x:89:89::/var/spool/postfix:/sbin/nologin webalizer:x:67:67:Webalizer:/var/www/html/usage:/sb in/nologin

Page 2: 3   users and groups

Users and Groups

2

elvis:x:501:501::/home/elvis:/bin/bash prince:x:502:502::/home/prince:/bin/bash madonna:x:504:504::/home/madonna:/bin/bash blondie:x:505:505::/home/blondie:/bin/bash sleepy:x:507:507::/home/sleepy:/bin/bash grumpy:x:509:509::/home/grumpy:/bin/bash doc:x:510:510::/home/doc:/bin/bash

El archivo /etc/passwd es una configuración de archivo con base en líneas, en donde cada línea define un usuario en el sistema. Las líneas están divididas internamente en siete campos y cada campo está separado por una coma. La siguiente tabla explica el uso de cada uno de estos campos.

Nombre de campo Num Propósito

Nombre de usuario

1 El nombre de usuario se utiliza para dar un nombre leíble al usuario.

Contraseña 2 En los sistemas Unix más antiguos este campo contiene la contraseña del usuario encriptada. Por defecto, Red Hat Enterprise Linux no hace uso de este campo por razones de seguridad.

Id del usuario (uid)

3 El número entero que el kernel de Linux utiliza para identificar al usuario.

Groupid Primario (gid)

4 El número entero que el kernel de Linux utiliza para identificar al grupo primario del usuario. Las membresías del grupo se estudiarán en la siguiente sección.

GECOS 5

Este campo con ese nombre tan raro ya no sirve su propósito original, el cual era importante para el entorno de desarrollo original de Unix. En estos días, el campo se utiliza para almacenar texto simple que ayuda a identificar al usuario, generalmente un nombre completo, pero algunas veces también incluye el número telefónico o la dirección.

Directorio de inicio

6

Cuando un usuario inicia sesión, su shell de inicio la utilizará como su directorio actual de trabajo. Este es uno de los pocos directorios en los que los usuarios estándar pueden escribir y generalmente son de uso privado para el usuario.

Shell de inicio de sesión

7 La shell de inicio de sesión es la shell predeterminada para los usuarios al iniciar la sesión. En Red Hat Enterprise Linux es generalmente /bin/bash .

Los usuarios rara vez modifican este archivo directamente pero presentaremos varios comandos que le permitirán al usuario cambiar ciertos campos. Si alguna vez necesita refrescar su memoria; los campos están documentados en la página man passwd(5).

Las contraseñas y el archivo /etc/shadow.

Como se mencionó anteriormente la contraseña encriptada del usuario se solía almacenar en el segundo campo del archivo /etc/passwd . Debido a que el archivo

Page 3: 3   users and groups

Users and Groups

3

/etc/passwd no solo contiene contraseñas, sino mucha más información, es necesario que todos puedan leerlo. Sin embargo, con el moderno poder de la informática, el exponer la forma encriptada de su contraseña es peligroso. Sin mucho esfuerzo, las máquinas modernas pueden tratar de adivinar su contraseña encriptando todas las combinaciones de cada letra hasta encontrar la combinación exacta. Esto se conoce como un ataque de "fuerza bruta".

En cambio los sistemas de Linux y Unix almacenan las contraseñas utilizando una nueva técnica llamada "Shadow Passwords", donde las contraseñas de los usuarios se almacenan en un archivo especializado /etc/shadow . Debido a que el archivo contiene sólo información relacionada con las contraseñas, sus permisos no permiten ver su contenido. Para mayores detalles vaya a la página man shadow(5) para obtener mayores detalles.

Los usuarios pueden cambiar su contraseña con un simple comando llamado passwd. Si usted no es el usuario de root, el comando passwd no aceptará argumentos ni opciones. Su uso individual permite al usuario cambiar su propia contraseña:

[madonna@station madonna]$ passwd Changing password for user madonna. Changing password for madonna (current) UNIX password: New password: Retype new password: passwd: all authentication tokens updated successfu lly.

Observe que los usuarios necesitan suministrar su contraseña antes de poder cambiarla. Esto evita que alguien tome aprovecho de una terminal abandonada por sólo unos segundos.

¡Recuerde su contraseña! Si cambia su contraseña de Linux, ¡asegúrese de recordarla! Su contraseña nunca se almacenará en el sistema en texto comprensible, incluso su administrador de sistemas no puede conocer su contraseña. Si usted la olvida, alguien con privilegios de root le puede crear una nueva.

Selección de una contraseña "segura" Al escoger una nueva contraseña, con frecuencia los usuarios son amonestados con un mensaje de BAD PASSWORD. Tradicionalmente, las contraseñas son susceptibles a un tipo de ataque conocido como un ataque de "diccionarios", en donde un atacante encripta un diccionario completo (tal como /usr/share/dict/words ) y compara la salida encriptada con el contenido del archivo/etc/shadow .

Para ayudar a evitar ataques de diccionarios, el comando passwd impedirá que los usuarios utilicen contraseñas demasiado sencillas o fáciles de encontrar en un diccionario.

Hay tres tipos de usuarios: normal, root y sistema

Page 4: 3   users and groups

Users and Groups

4

Los usuarios de Linux suelen agruparse en tres clases.

Usuarios normales

Los usuarios normales representan gente real que utiliza el sistema, estos usuarios normales generalmente tienen un /bin/bash como shell de inicio de sesión y un directorio de inicio dentro del directorio /home . Por lo general, los usuarios normales pueden crear archivos únicamente dentro de sus directorios de inicio y directorios temporales en todo el sistema, tales como /tmp y /var/tmp .En Red Hat Enterprise Linux, los usuarios normales tienen uids mayores a 500.

El usuario root

El uid 0 está reservado para root, algunas veces llamado el superusuario. El root es el rey del sistema: puede modificar o remover cualquier archivo; ejecutar cualquier comando; matar cualquier proceso. El usuario root está encargado de añadir y mantener otros usuarios, configurar el hardware y agregar el software del sistema. Aunque puede crear archivos en cualquier parte del sistema, generalmente utiliza su directorio de inicio /root .

Usuarios del sistema

La mayoría de los sistemas de Linux reservan un rango de valor bajo de uids para actuar como usuarios del sistema. Los usuarios del sistema no representan gente, sino componentes del sistema. Por ejemplo, los procesos que manejan el correo electrónico usualmente operan como el nombre de usuario correo. Los procesos que ejecutan el servidor de red Apache operan como el usuario apache. Los usuarios del sistema por lo general no tienen una shell de inicio de sesión porque no representan gente real. Asimismo, los directorios de inicio de los usuarios del sistema rara vez residen en /home , sino que por lo general son directorios de sistema que pertenecen a la aplicación relevante. Por ejemplo, el usuario Apache, tiene un directorio de inicio /var/www . En Red Hat Enterprise Linux, los usuarios del sistema tienen uids que van de 1 a 499.

Table 1. Ids de usuarios de Red Hat Enterprise Linux

Rango de uid Tipo de usuario

0 el usuario root

1-499 usuarios del sistema

500+ usuarios normales

Ejemplos

Examen de los userids de procesos

Page 5: 3   users and groups

Users and Groups

5

El usuario elvis quiere averiguar que otra gente está utilizando el sistema Linux y lo que están haciendo. Lista todos los procesos que están ejecutándose en la máquina actualmente.

[elvis@station elvis]$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT S TART TIME COMMAND root 1 0.0 0.0 1380 76 ? S 0 3:33 0:04 init [ root 2 0.0 0.0 0 0 ? SW 0 3:33 0:00 [keventd] root 3 0.0 0.0 0 0 ? SW 0 3:33 0:00 [kapmd] ... root 872 0.0 0.1 5932 440 ? S 0 3:34 0:00 [sendmail] smmsp 881 0.0 0.1 5732 312 ? S 0 3:34 0:00 [sendmail] root 891 0.0 0.0 1420 56 ? S 0 3:34 0:00 gpm -t ps/2 -m /d root 900 0.0 0.0 1572 128 ? S 0 3:34 0:00 crond xfs 973 0.0 0.0 4812 236 ? S 0 3:34 0:00 [xfs] root 992 0.0 0.0 3412 4 ? S 0 3:34 0:00 rhnsd --interval root 999 0.0 0.0 1356 4 tty1 S 0 3:34 0:00 /sbin/mingetty tt ... prince 1066 0.0 1.4 18428 3704 ? S 0 3:37 0:00 /usr/bin/gnome-se prince 1116 0.0 0.4 6136 1084 ? S 0 3:37 0:00 /usr/libexec/bono prince 1118 0.0 0.6 17380 1716 ? S 0 3:37 0:00 gnome-settings-da prince 1123 0.0 0.1 2688 388 ? S 0 3:37 0:00 [fam] prince 1128 0.0 0.4 3816 1032 ? S 0 3:37 0:02 xscreensaver -nos prince 1135 0.0 2.1 20220 5440 ? S 0 3:37 0:06 gnome-panel --sm- prince 1137 0.0 3.9 86176 10048 ? S 0 3:37 0:04 nautilus --no-def prince 1145 0.1 3.0 26132 7900 ? S 0 3:37 0:13 /usr/bin/python / root 1146 0.0 0.0 1412 156 ? S 0 3:37 0:00 [pam_timestamp_c] prince 1160 0.1 3.4 23208 8844 ? S 0 3:38 0:11 /usr/bin/gnome-te prince 1161 0.0 0.1 1852 284 ? S 0 3:38 0:00 [gnome-pty-helpe] prince 1162 0.0 0.1 4368 340 pts/0 S 0 3:38 0:00 bash prince 1210 0.0 0.3 4372 964 pts/1 S 0 3:39 0:01 bash prince 2262 0.4 8.0 99276 20476 pts/0 S 0 3:42 0:36 /usr/bin/galeon-b prince 2266 0.0 0.5 5652 1480 ? S 0 3:42 0:00 oafd --ac-activat prince 2818 0.0 0.3 4368 864 pts/2 S 0 4:17 0:00 bash prince 3673 0.1 0.5 4356 1444 pts/4 S 0 5:46 0:00 bash root 3699 0.0 0.3 4112 952 pts/4 S 0 5:46 0:00 [su] elvis 3702 0.0 0.5 4312 1416 pts/4 S 0 5:46 0:00 -bash elvis 3736 1.1 4.0 24572 10316 pts/4 S 0 5:46 0:00 evolution

Page 6: 3   users and groups

Users and Groups

6

elvis 3739 0.4 0.8 5664 2260 ? S 0 5:46 0:00 oafd --ac-activat elvis 3742 0.5 2.3 22548 6100 ? S 0 5:46 0:00 wombat --oaf-acti elvis 3746 0.3 1.6 11296 4288 ? S 0 5:46 0:00 bonobo-moniker-xm elvis 3753 1.0 3.4 57400 8916 ? S 0 5:46 0:00 evolution-mail -- elvis 3755 0.0 0.5 3260 1440 ? S 0 5:46 0:00 /usr/bin/gconfd-1 elvis 3762 0.6 2.5 23052 6628 ? S 0 5:46 0:00 evolution-address elvis 3766 0.5 2.5 23516 6560 ? S 0 5:46 0:00 evolution-calenda elvis 3771 0.5 2.2 21336 5860 ? S 0 5:46 0:00 evolution-alarm-n elvis 3773 0.6 2.3 21740 6104 ? S 0 5:46 0:00 evolution-executi root 3785 0.0 0.3 4108 948 pts/3 S 0 5:46 0:00 [su] madonna 3788 0.1 0.5 4308 1412 pts/3 S 0 5:46 0:00 -bash madonna 3822 11.4 8.7 89140 22320 pts/3 S 0 5:46 0:05 /usr/lib/mozilla- root 3852 0.0 0.3 4112 968 pts/2 S 0 5:47 0:00 [su] elvis 3855 0.6 0.5 4304 1392 pts/2 S 0 5:47 0:00 -bash elvis 3891 0.0 0.2 2668 716 pts/2 R 0 5:47 0:00 ps aux

Algunas de las líneas en esta lista bastante larga fueron editadas y remplazadas por "...".

La primera columna de la lista muestra el nombre de usuario que está operando un proceso. Además de prince, madonna y elvis, - elvis asume que son nombres de usuarios asociados con gente real, elvis observa que muchos de los procesos en el sistema están ejecutando como el usuario de root y también como usuarios smmsp y xfs.

Examen de los propietarios de archivo por nombre de usuario y userid.

La usuaria blondie está examinando el directorio /home y observa que cada directorio de inicio de usuario le pertenece al nombre de usuario apropiado. Luego utiliza el comando ls -ln para listar el directorio de propietarios "numéricamente"o por userid en lugar de por nombre de usuario. Preste mucha atención a la tercera columna en la siguiente lista, la cual muestra un propietario de archivo.

[blondie@station blondie]$ ls -l /home/ total 48 drwx------ 4 blondie blondie 4096 May 14 0 6:35 blondie drwx------ 4 doc doc 4096 May 14 0 6:32 doc drwx------ 4 elvis elvis 4096 May 14 0 6:31 elvis drwx------ 4 grumpy grumpy 4096 May 14 0 6:32 grumpy drwx------ 4 madonna madonna 4096 May 14 0 6:31 madonna drwx------ 4 prince prince 4096 May 14 0 6:31 prince drwx------ 4 sleepy sleepy 4096 May 14 0 6:32 sleepy [blondie@station blondie]$ ls -ln /home/ total 48 drwx------ 4 505 505 4096 May 14 0 6:35 blondie drwx------ 4 510 510 4096 May 14 0 6:32 doc

Page 7: 3   users and groups

Users and Groups

7

drwx------ 4 501 501 4096 May 14 0 6:31 elvis drwx------ 4 509 509 4096 May 14 0 6:32 grumpy drwx------ 4 504 504 4096 May 14 0 6:31 madonna drwx------ 4 502 502 4096 May 14 0 6:31 prince drwx------ 4 507 507 4096 May 14 0 6:32 sleepy

En la lista ls -l, los propietarios de archivo son vistos por nombre de usuario. En la lista ls -ln, los propietarios de archivo aparecen por userid.

Cambio de un nombre de usuario como root

El administrador de la máquina, actuando como root, desea editar el archivo /etc/passwd . Primero, root tomará un ls -l de los archivos en el directorio /home . Luego, root cambiará el nombre del usuario sleepy en la base de datos de usuarios y por último, mirará otra vez la salida del comando ls -l.

[root@station root]# ls -l /home/ total 48 drwx------ 4 blondie blondie 4096 May 14 0 6:40 blondie drwx------ 4 doc doc 4096 May 14 0 6:32 doc drwx------ 4 elvis elvis 4096 May 14 0 6:31 elvis drwx------ 4 grumpy grumpy 4096 May 14 0 6:32 grumpy drwx------ 4 madonna madonna 4096 May 14 0 6:31 madonna drwx------ 4 prince prince 4096 May 14 0 6:31 prince drwx------ 4 sleepy sleepy 4096 May 14 06:32 sleepy [root@station root]# nano /etc/passwd (root edits the /etc/passwd file, so that the line ... sleepy:x:507:507::/home/sleepy:/bin/bash ... now reads ... sleepier:x:507:507::/home/sleepy:/bin/bash ... ) [root@station root]# ls -l /home/ total 48 drwx------ 4 blondie blondie 4096 May 14 0 6:40 blondie drwx------ 4 doc doc 4096 May 14 0 6:32 doc drwx------ 4 elvis elvis 4096 May 14 0 6:31 elvis drwx------ 4 grumpy grumpy 4096 May 14 0 6:32 grumpy drwx------ 4 madonna madonna 4096 May 14 0 6:31 madonna drwx------ 4 prince prince 4096 May 14 0 6:31 prince drwx------ 4 sleepier sleepy 4096 May 14 06:32 sleepy

En el primer caso el usuario propietario del directorio de inicio de sleepy /home/sleepy aparece en la lista como sleepy.

En el segundo caso, el usuario propietario del directorio de inicio de sleepy aparecerá en la lista como sleepier.

¿Qué se puede aprender de este ejemplo? root no cambió nada en /home/sleepy , sólo la base de datos de usuarios. Sin embargo, tan pronto como el archivo modificado

Page 8: 3   users and groups

Users and Groups

8

/etc/passwd se grabó, el comando ls -l comenzó a reportar la nueva información. Esto sugiere lo siguiente:

1. El kernel de Linux no almacena el nombre de usuario del que posee el archivo, sino el número entero del userid, (del ejemplo anterior, ¿cuál userid es propietario del directorio /home/sleepy ?).

2. Cada vez que ejecuta el comando ls, debe buscar los trazados del nombre de usuario/userid en el archivo /etc/passwd para anexar los nombres de usuario a los propietarios de userid provistos por el kernel.

Ejercicios en línea

Determinación de información del usuario

Lab Exercise Objetivo:Determinar los parámetros relacionados con el usuario tales como userid y shell de inicio.

Estimated Time: 10 mins.

Especificaciones

Al examinar el primer, tercer y último campo (séptimo) del archivo /etc/passwd , determine el userid y la shell de inicio para su nombre de usuario, el usuario root, y el usuario nobody (sí, hay un usuario de sistema con el nombre de usuario"nobody"). Cree archivos sencillos en su directorio de inicio llamado my.uid ,my.shell , root.uid , root.shell , nobody.uid , y nobody.shell que contengan sólo la información apropiada en una sola línea.

Por ejemplo, si el shell de inicio de sesión del usuario nobody fuera /bin/bash , el siguiente comando crearía fácilmente el archivo apropiado.

[student@station student]$ echo /bin/bash > nobody.shell [student@station student]$ cat nobody.shell /bin/bash

Deliverables

Question 1

Al terminar, los siguientes seis archivos deberían estar en su directorio de inicio, el cual contiene sólo la siguiente información:

filename Contenido my.uid Su número entero de userid de cuenta

Page 9: 3   users and groups

Users and Groups

9

my.shell Su shell de inicio

root.uid El número entero de userid de root

root.shell La shell de inicio del usuario root

nobody.uid El userid entero del usuario nobody

nobody.shell La shell de inicio del usuario nobody

Capítulo 2 Los grupos Linux y el archivo/etc/group.

Conceptos clave

• Básicamente, un grupo es solo un group id (gid) de un número entero • Cada proceso que se ejecuta en el sistema opera bajo una colección de grupos

(gids). • El archivo /etc/group asigna gids a nombres y a membresías de grupo. • Cada archivo en el sistema de archivos pertenece a un solo gid. • Los usuarios tienen un solo grupo primario definido en el archivo /etc/passwd. • Los usuarios pueden ser miembros de múltiples grupos secundarios definidos en

el archivo /etc/groups.

Grupos de Linux

La lección anterior presentó el hecho de que cada proceso se ejecuta bajo el contexto de un usuario dado. Además, los usuarios, los procesos que estos operan y los archivos que poseen, pertenecen a la colección de grupos-. Las membresías de grupo le permiten a los administradores de sistemas manejar eficientemente las colecciones de los usuarios que tienen objetivos similares.

Cada usuario es miembro de un grupo primario. Además, los usuarios pueden ser miembros de cero o más grupos secundarios. Las implicaciones de los grupos primarios o secundarios se presentan a continuación.

El archivo /etc/group.

Para el kernel de Linux, un grupo es nombrado usando un id de grupo (GID) de 32 bits, (note la similitud con que el kernel referencia los usuarios). El archivo /etc/group asocia nombres de grupo con GIDs (para humanos) y define los usuarios que pertenecen a cada grupo. El archivo /etc/group , juega un papel similar para los grupos así como el archivo /etc/passwd lo es para los usuarios, tiene una estructura similar, y un nombre más razonable. Es un archivo de configuración con base en líneas, cada línea consta de campos separados por una coma así como se demuestra a continuación.

wrestle:x:201:ventura,hogan,elvis physics:x:202:einstein,maxwell,elvis

Page 10: 3   users and groups

Users and Groups

10

emperors:x:203:nero,julius,elvis governor:x:204:ventura,pataki music:x:205:elvis,blondie,prince,madonna dwarfs:x:206:sleepy,grumpy,doc elvis:x:501: prince:x:502: madonna:x:504: blondie:x:505:

Los cuatro campos proporcionan la siguiente información:

Nombre de campo Num Propósito

Groupname 1 El nombre de grupo se utiliza para dar al grupo un nombre legible.

Contraseña de grupo

2 Los grupos pueden contar con una contraseña de grupo aunque esto sucede raras veces.

Grupo ID (GID) 3 El número entero de grupo id.

Miembros de grupo

4 Una lista de nombres de usuarios separados por comas que define los miembros del grupo.

¿Por qué grupos?

Las membresías de grupo se utilizan muy a menudo para determinar quién tiene acceso a qué en el sistema de archivo. Los dwarfs que se encuentran en el siguiente ejemplo del archivo /etc/group doc, grumpy, y sleepy, podrían estar trabajando en mis prospectos y no querrán que otros usuarios tengan acceso a su información. Los archivos que están utilizando (y los directorios en los que están almacenándolos) pueden organizarse de tal manera que cada miembro del grupo dwarfs tenga acceso a ellos, pero otros usuarios no.

El hecho de que cada archivo en el sistema pertenezca a un usuario ya se ha mencionado anteriormente. Cada archivo en el sistema también pertenece a un grupo, al cual se alude como "grupo propietario". En la siguiente lista de archivos ls -len el directorio /var/prospects , la tercera columna lista al usuario propietario de los archivos y la cuarta columna el grupo propietario.

[doc@station prospects]# ls -l /var/prospects/ total 12 -rw-rw---- 1 doc dwarfs 143 May 15 07 :38 doc.txt -rw-rw---- 1 grumpy dwarfs 29 May 15 07 :38 grumpy.txt -rw-rw---- 1 sleepy dwarfs 2027 May 15 07 :38 sleepy.txt

Mientras que los usuarios individuales poseen sus propios archivos, cada archivo tiene al grupo dwarfs como su propietario de grupo o en otras palabras, cada archivo es "propiedad" del grupo dwarfs. La primera columma especifica los permisos que tienen el usuario propietario y los miembros del grupo dueños del archivo. ¿Pueden leerlo? ¿Pueden modificarlo? ¿Cómo interpretar y manejar estos permisos es el tema del próximo cuaderno. Por ahora, tenga en cuenta quecada archivo en el sistema de archivos tiene un usuario propietario y un grupo propietario.

Page 11: 3   users and groups

Users and Groups

11

Grupos primarios y secundarios

Debido a que cada archivo debe tener un grupo propietario, debe haber un grupo por defecto asociado con cada usuario. Este grupo por defecto se convierte en el propietario del grupo de los archivos recién creados. Este grupo se conoce como el grupo primariodel usuario. Un grupo de usuario primario se define en el cuarto campo de una entrada de usuario /etc/passwd .

Aparte del grupo primario, los usuarios pueden optar también por pertenecer a otros grupos. Estos grupos se llaman grupos secundariosy están definidos (por coincidencia) en el cuarto campo del archivo /etc/group file.

Considere los siguientes extractos de los archivos /etc/passwd file y /etc/group .

[elvis@station elvis]$ tail /etc/passwd grumpy:x:509:509::/home/grumpy:/bin/bash doc:x:510:510::/home/doc:/bin/bash student:x:2299:2299::/home/student:/bin/bash ventura:x:511:511::/home/ventura:/bin/bash hogan:x:512 :512 ::/home/hogan:/bin/bash pataki:x:513:513::/home/pataki:/bin/bash einstein:x:514:514::/home/einstein:/bin/bash maxwell:x:515:515::/home/maxwell:/bin/bash nero:x:516:516::/home/nero:/bin/bash julius:x:517:517::/home/julius:/bin/bash [elvis@station elvis]$ cat /etc/group ... wrestle:x:201:ventura,hogan ,elvis physics:x:202:einstein,maxwell,elvis emperors:x:203:nero,julius,elvis governor:x:204:ventura,pataki ... hogan:x:512: pataki:x:513: einstein:x:514: maxwell:x:515: nero:x:516: julius:x:517:

En la toma de pantalla anterior se han omitido algunas líneas y se han reemplazado con "...".

En el tercer campo encontramos que el usuario hogan tiene un userid de 512.

En el cuarto campo encontramos que el usuario hogan tiene un id de grupo primario de 512, (observe que el id del grupo primario hogan es el mismo que su id de usuario. Esto no tiene que ser el caso, pero lo es a menudo debido a la forma en que se adicionan los usuarios en Red Hat Enterprise Linux).

Aunque sabemos que el grupo primario de hogan es 512 desde el archivo /etc/passwd , no podemos conocer el nombre del grupo hasta examinar el archivo/etc/group . Aquí encontramos que el nombre de grupo del grupo 512 es hogan. En Red Hat Enterprise Linux,el grupo primario de un usuario casi siempre tiene el mismo nombre del nombre de usuario.

Page 12: 3   users and groups

Users and Groups

12

Aquí encontramos que hogan también es miembro del grupo wrestlers. El grupo wrestlers es un grupo secundario.

En resumen, se puede decir lo siguiente acerca de los grupos primarios y secundarios.

• Un groupid primario se define en el cuarto campo del archivo/etc/passwd . Luego, el nombre del usuario del grupo primario se asocia con el groupid en el archivo /etc/group .

• Los usuarios de grupos secundarios se definen al adicionar el nombre de usuario al cuarto campo de las líneas apropiadas en el archivo/etc/group .

¿Cómo puedo cambiar mis membresías de grupo?

Los usuarios estándar no tienen permiso para editar el archivo /etc/passwd ni el archivo /etc/group y por lo tanto, no pueden cambiar las membresías de grupo. Únicamente el usuario administrativo root, puede cambiar las membresías de grupo.

Si usted no tiene acceso a la máquina como root, las asociaciones de grupo se pueden modificar utilizando los comandos usermod y groupmod o la utilidad gráfica system-config-users. El uso de estos comandos se verá en otro curso.

Ejemplos

¿Quiénes son miembros de ese grupo?

En la siguiente lista del directorio /var/spool , prince observa que el grupo "sys" es propietario del directorio /var/spool/cups .

[prince@station prince]$ ls -l /var/spool/ total 64 ... drwx------ 2 root root 4096 Feb 19 0 8:39 cron drwx------ 3 lp sys 8192 May 21 1 2:36 cups drwxr-xr-x 23 root root 4096 Jan 24 1 8:52 lpd drwxrwxr-x 2 root mail 4096 May 21 1 0:55 mail ...

El usuario prince ahora se está preguntando cuál de los usuarios del sistema es miembro de los grupos sys. Con el fin de averiguarlo, examina el archivo /etc/group .

[prince@station prince]$ head /etc/group root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon sys:x:3:root,bin,adm adm:x:4:root,adm,daemon tty:x:5: disk:x:6:root lp:x:7:daemon,lp mem:x:8: kmem:x:9:

Page 13: 3   users and groups

Users and Groups

13

Al examinar la cuarta línea, prince determina que los usuarios root, bin y adm son los miembros actuales del grupo sys.

¿A qué grupos pertenece el usuario ?

El usuario prince desea averiguar a qué grupos pertenece el usuario root. Debido al formato del archivo /etc/group , no puede determinar la respuesta al examinar una sola línea. Decide, entonces, buscar la palabra "root" en el archivo.

[prince@station prince]$ cat /etc/group root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon sys:x:3:root,bin,adm adm:x:4:root,adm,daemon tty:x:5: disk:x:6:root lp:x:7:daemon,lp mem:x:8: kmem:x:9: wheel:x:10:root ...

Después de una inspección tediosa de la salida, prince decide que root pertenece a los siguientes grupos: root, bin, daemon, sys, adm, disk y wheel y piensa para sí que "debe haber una forma más fácil", (esperemos que prince lea la siguiente lección).

Ejercicios en línea

Determinación de membresías de grupo

Lab Exercise Objetivo: determinar las membresías de grupos localmente definidos.

Estimated Time: 10 mins.

Especificaciones

Crea un archivo en su directorio de inicio llamado physics.txt , el cual contiene una lista de los miembros del grupo physics, separados por espacios.

Por ejemplo, si elvis, blondie, y prince fueran los miembros de un grupo physics, el siguiente comando crearía fácilmente dicho archivo.

[student@station student]$ echo "blondie elvis prince" > physics.txt [student@station student]$ cat physics.txt blondie elvis prince

Deliverables

Page 14: 3   users and groups

Users and Groups

14

Question 1

1. Un archivo ~/physics.txt que contenga una lista del grupo physics, separado

por espacios.

Determinación de los grupos a los que un usuario está suscritos (la forma difícil)

Lab Exercise Objetivo:Determinar los grupos a los cuales pertenece un usuario definido localmente.

Estimated Time: 10 mins.

Especificaciones

Crea un archivo en su directorio de inicio llamado elvisgrp.txt , el cual contiene una lista de los grupos a los que el usuario elvis pertenece.

Por ejemplo, si elvis perteneció a los grupos sys, music, y elvis, entonces el siguiente comando crearía fácilmente dicho archivo.

[student@station student]$ echo "elvis music sys" > elvisgrp.txt [student@station student]$ cat elvisgrp.txt elvis music sys

Deliverables

Question 1

1. El archivo ~/elvisgrp.txt que contiene una lista de los grupos a los que el

usuario elvis pertenece.

Capítulo 3 Revisar la información del usuario

Conceptos clave

• El comando id muestra la información del grupo y del usuario. • El comando whoami informa el nombre del usuario actual. • Los comandos who, users, y w informan sobre usuarios con sesiones activas. • El comando finger reporta la última vez que los usuarios entraron al sistema y

otra información adicional.

Identificacion de usuarios: el comando id.

Page 15: 3   users and groups

Users and Groups

15

La lección anterior presentó los conceptos de grupos y la manera cómo los archivos /etc/passwd y /etc/Group definen las membresías de grupo. Debido a que la determinación de las membresías de grupos desde estos archivos no se hace directamente, los usuarios suelen utilizar el comando id para determinar la información sobre un usuario.

id [[-g] | [-G] | [-u]] [-n] [NOMBRE DE USUARIO]

Escribe información para el NOMBRE DE USUARIO o el usuario actual.

Opción Efecto

-g,--grupo Escribe únicamente el id de grupo

'G,--grupos Escribe todos los ids de grupo

-u, --user Escribe sólo el identificador de usuario efectivo

-n, --name Imprime el nombre del usuario o del grupo en lugar del número.

Si se llama sin argumentos, el comando id entrega un resumen de membresías de grupo para el usuario que lo ejecuta. Si está provisto del nombre de usuario, el comando id entrega información del grupo para ese usuario específico.

[elvis@station elvis]$ id uid=501(elvis) gid=501(elvis) groups=501(elvis),203(emperors),205(music) [elvis@station elvis]$ id blondie uid=505(blondie) gid=505(blondie) groups=505(blondi e),205(music)

Por defecto, el comando presenta el identificador de usuario, el grupo primario y todos los grupos (primario y secundario) a los cuales pertenece el usuario, tanto por nombre de grupo como por id de grupo.

La salida del comando id puede calificarse con las opciones, como se resume en la tabla anterior. Por ejemplo, si un usuario solo quizo saber el id del grupo primario de un usuario, el comando podría ser invocado con la opción -g. Si el usuario quizo conocer el nombre del grupo en lugar del número, la opción -n también podría especificarse. De la misma manera, la opción -G reportará todos los grupos , no sólo el grupo primario. Estas líneas de comando son muy útiles cuando el comando id se utilizado en scripts.

[elvis@station elvis]$ id -g blondie 505 [elvis@station elvis]$ id -gn blondie blondie [elvis@station elvis]$ id -Gn blondie blondie music

El comando whoami .

El comando whoami simplemente entrega el nombre del usuario actual.

Page 16: 3   users and groups

Users and Groups

16

whoami

Escribe el nombre del usuario actual.

En Red Hat Enterprise Linux, muy pocas veces hay la necesidad de usar el comando whoami, porque el intérprete de comandos por defecto bash presenta de inmediato el nombre de usuario del usuario actual. El intérprete de comandos es configurable, sin embargo, en otros sistemas de Linux y Unix o en otros entornos (tales como shells de rescate), la identidad del usuario podría no ser tan obvia. También el comando whoami puede estar insertado en un script, el cual podría tener un comportamiento diferente dependiendo de quién lo está ejecutando.

¿Quién tiene una sesión abierta? Los comandos users, wy who.

Si un usuario quisiera saber quién más está usando una máquina Linux o Unix en particular. Red Hat Enterprise Linux, provee tres comandos que reportan los usuarios actuales, cada uno con un nivel diferente de detalle. El más sencillo de estos es el comando users.

users

Hace una lista sencilla de quienes están conectados al sistema.

Puede que el usuario elvis quiera saber quién más está conectado a la máquina.

[elvis@station elvis]$ users blondie elvis elvis elvis elvis elvis prince root

El comando reporta que blondie, elvis, prince y root están actualmente conectados a la máquina. ¿Por qué elvis aparece en la lista cinco veces? Unix tradicionalmente asocia toda la actividad desde una sola terminal con lo que técnicamente se llama "sesión". Al utilizar el entorno gráfico X, cada ventana de una terminal abierta se considera una terminal distinta y por lo tanto, una sesión diferente. El usuario elvis probablemente está usando terminales múltiples dentro de X windows.

w [[-h] | [-s] | [-f]] [NOMBRE DE USUARIO]

Escribe información detallada de quien está actualmente conectado o para el usuario USERNAME, si es dado.

Opción Efecto

-h salta la cabecera

-s una lista corta

-f no muestra el campo "FROM".

Page 17: 3   users and groups

Users and Groups

17

Al igual que el comando users, el comando w lista los usuarios que están conectados en el sistema, pero provee mucha más información detallada como lo demuestra el usuario elvis:

[elvis@station elvis]$ w 12:58:58 up 1 day, 3:32, 8 users, load average : 0.01, 0.04, 0.04 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty2 - 12:45pm 13:19 0.05s 0.05s -bash prince tty1 - 12:45pm 13:01 4.63s 4.60s top elvis rain.rdu station.redhat.c 9:44am 0.00s 5:42 1.58s /usr/bin/gnome elvis pts/0 station.redhat.c 9:59am 1:05m 5.33s 3.05s mutt elvis pts/2 station.redhat.c 11:24am 1.00s 0.99s 57.08s /usr/bin/gnome elvis pts/4 station.redhat.c 11:10am 1:05m 0.20s 0.20s bash elvis pts/5 station.redhat.c 11:29am 12:37 1 5.90s 0.16s ssh root blondie pts/6 station.redhat.c 12:46pm 12:37 0.05s 0.05s -bash

La línea superior da la información resumida: el tiempo actual, el tiempo en días, horas y minutos que la máquina ha estado funcionando sin interrupciones, el número de usuarios y el promedio actual de carga (como un promedio de 1.5 y 15 minutos) para la máquina. El comando luego presenta una tabla con la siguiente información.

Columna Información

USER El nombre de usuario del usuario que está conectado.

TTY La terminal desde donde el usuario está conectado, (la interpretación de las terminales se discute en el cuaderno 1).

FROM Si el usuario está conectado a la red, el nombre del anfitrión desde donde el usuario está conectado.

LOGIN@ La hora en que el usuario inició la sesión.

IDLE El tiempo que ha transcurrido desde la última interacción en la terminal.

JCPU La cantidad de tiempo CPU consumido por todos los procesos que están ejecutándose en el momento asociados con la sesión de la terminal.

PCPU La cantidad de tiempo de CPU consumido por sólo el proceso actual, como se le llama en el campo "WHAT".

WHAT El proceso del usuario, ejecutándose actualmente.

El último de estos tres comandos similares, who,también provee información detallada acerca de quién está conectado en el momento. Si se llama sin argumentos, se comporta de una manera similar al comando w. El comando who también está diseñado para reportar eventos del sistema tal como el nivel de ejecución actual, ajustes al sistema del reloj y procesos generados por el proceso /sbin/init . Mucha de esta información va más allá del alcance de este curso.

Revisión de usuarios: el comando finger.

Uso del comando finger.

Page 18: 3   users and groups

Users and Groups

18

El comando fingerse puede utilizar para "chequear" al usuario, no sólo para ver si está conectado, sino también si ha leído su correo y la hora en que inició la sesión, entre otras cosas.

finger [[-s] | [-l] | [-p]] [USUARIO...] [USER@HOST ...]

Escribe la información sumaria acerca del usuario específico, incluyendo si ha entrado al sistema, si ha revisado su correo o hace una lista de todos los usuarios en el sistema si no se proporciona ninguno.

Opción Efecto

-s Salida en formato sumario

-l Salida en formato largo

-p No muestre la información ".plan", ".project", etc.

A manera de ejemplo, el usuario elvis usa el comando finger para ver quién está en el sistema.

[elvis@station elvis]$ finger Login Name Tty Idle Login Time Of fice Office Phone madonna *:0 May 26 06:40 madonna pts/0 28 May 26 06:40 (: 0.0) madonna pts/1 20 May 26 06:41 (: 0.0) madonna pts/2 May 26 06:50 (: 0.0) madonna pts/3 3 May 26 07:04 (: 0.0) elvis tty1 May 26 07:09 prince tty2 May 26 07:10

Sin argumentos el comando finger actúa de manera muy parecida al comando who, dando información sumaria incluyendo la de la terminal del usuario (Tty), la hora de inicio y el tiempo de inactividad.

Ahora elvis nota que su amiga blondie no está conectada y decide buscar más información acerca de ella.

[elvis@station elvis]$ finger blondie Login: blondie Name: (null) Directory: /home/blondie Shell: /bin/ba sh Never logged in. No mail. No Plan.

En este caso el comando finger entrega información sumaria sobre la usuaria blondie, incluyendo el hecho de que ella nunca ha estado en el sistema y que no tiene correo en espera.

Personalización de la salida del comando finger.

Page 19: 3   users and groups

Users and Groups

19

Cuando elvis decide chequear al usuario prince, el comando finger proporciona mucha más información.

[elvis@station elvis]$ finger prince Login: prince Name: (null) Directory: /home/prince Shell: /bin/ba sh On since Mon May 26 07:10 (EDT) on tty2 10 minute s 30 seconds idle New mail received Mon May 26 07:17 2003 (EDT) Unread since Wed May 14 06:31 2003 (EDT) Plan: 12:00 - 1:00 lunch 1:00 - 3:00 in class 3:30 - 4:30 ultimate frisbee

Debido a que prince está conectado en el momento, el comando finger entrega al usuario, la terminal, la hora de acceso al sistema y el tiempo de inactividad.

El comando finger reporta la úĺtima hora en que el usuario recibió correo y la última vez que lo leyó, (observe que no sólo funciona si la máquina está configurada para recibir correo-e directamente, sino que utiliza una cuenta POP provista de un proveedor del servicio de Internet).

El usuario prince ha creado un archivo ~/.plan que el comando finger reporta.

Un usuario puede personalizar la información que otra persona ve cuando está en finger, creando archivos ocultos en su directorio de inicio. El comando finger conoce los siguientes archivos.

Nombre de archivo

Propósito

.plan Aparece en pantalla con el comando finger bajo el título "Plan:".

.project Aparece en pantalla con el comando finger bajo el título "Project:".

.pgpkey

Aparece en la pantalla gracias al comando finger bajo el título "PGP Key:". Sirve para que el usuario publique una parte de la clave pública de una clave pública/privada que se utiliza en la encripción de la clave pública.

Permiso de acceso a su directorio de inicio Por defecto en Red Hat Enterprise Linux, el directorio de inicio de un usuario no tiene acceso a los otros directorios de inicio que se encuentran en el sistema . Para que el comando finger encuentre estos archivos, un usuario debe habilitar los permisos de ejecución en su directorio de inicio usando un comando similar al siguiente:

[prince@station prince]$ chmod o+x ~

Este tema se tratará a profundidad en el Cuaderno 4.

Page 20: 3   users and groups

Users and Groups

20

Utilización del comando finger en la red.

El comando finger también puede reportar la actividad de un usuario en máquinas remotas. El usuario elvis desea ver lo que va a hacer el usuario pataki en la máquina nimbus.example.com.

[elvis@station elvis]$ finger [email protected] Login: pataki Name: (null) Directory: /home/pataki Shell: /bin/ba sh Never logged in. New mail received Mon May 26 07:41 2003 (EDT) Unread since Wed May 14 15:34 2003 (EDT) Plan: Balance the budget.

Para que este comando funcione, la máquina remota nimbus.example.com debe optar por utilizar el servicio finger. En los comienzos del Internet, las máquinas Unix comúnmente prestaban este servicio. Ahora que el Internet ha crecido y las solicitudes de seguridad a menudo pesan más que el espíritu de la comunidad, la mayoría de los administradores deciden no utilizar ese servicio. El servicio está disponible en Red Hat Enterprise Linux, pero se encuentra desactivado por defecto.

Ejemplos

Utilización del comando idpara determinar las membresías de grupo.

La usuaria blondie ha enviado un correo electronico a su administrador pidiendo unirse al grupo de music. Al entrar el siguiente día, quiere saber si el administrador lo hizo. Para averiguarlo, blondie ejecuta el comando id.

[blondie@station blondie]$ id uid=505(blondie) gid=505(blondie) groups=505(blondi e),205(music)

blondie ve que ha sido agregada al grupo music.

Ponerse al corriente con elvis.

La usuaria blondie quiere ponerse al corriente con el usuario elvis. Ella averigua si elvis está conectado al sistema utilizando el comando w.

[blondie@station blondie]$ w 08:05:50 up 1:28, 7 users, load average: 0.00, 0.15, 0.34 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT prince tty2 - 9:10am 55:48 0.05s 0.05s -bash elvis tty1 - 9:09am 55:52 0.01s 0.01s -bash blondie :0 - 8:40am ? 0.00s 0.83s /usr/bin/gnome- blondie pts/0 :0.0 8:40am 8:27 1 0.23s 0.10s bash blondie pts/1 :0.0 8:41am 2:03 0.54s 0.54s bash blondie pts/2 :0.0 8:50am 0.00s 0.56s 8.06s /usr/bin/gnome-

Page 21: 3   users and groups

Users and Groups

21

blondie pts/3 :0.0 9:04am 59:28 0.20s 8.06s /usr/bin/gnome-

Blondie observa que elvis está conectado pero tiene un tiempo inactivo de cerca de una hora. Al tratar de decidir si elvis está realmente sentado frente a la terminal, utiliza el comandofinger.

[blondie@station blondie]$ finger elvis Login: elvis Name: (null) Directory: /home/elvis Shell: /bin/ba sh On since Mon May 26 07:09 (EDT) on tty1 1 hour 6 minutes idle New mail received Mon May 26 06:53 2003 (EDT) Unread since Wed May 14 06:31 2003 (EDT) Plan: 9:30 - 10:30 Team meeting 12:30 - 1:30 Lunch

Al ver que elvis ha puesto en la lista una reunión a las 9;30, blondie asume que elvis no está en la terminal, pero que quedó conectado.

Personalización de la información de finger.

El usuario prince desea personalizar lo que los usuarios ven si ellos ejecutan finger. El sabe que primero necesita permitir el acceso a su directorio de inicio.

[prince@station prince]$ chmod o+x ~

Luego, prince genera un archivo .plan .

[prince@station prince]$ nano ~/.plan ...( dentro del editor nano, prince crea el siguien te archivo )... Convertirse en la primera persona en instalar Red H at Enterprise Linux en la luna. ...( y guarda el archivo como ~/.plan) ... [prince@station prince]$ cat ~/.plan Convertirse en la primera persona en instalar Red H at Enterprise Linux en la luna.

Por último, prince rutinariamente firma su correo-e con la clave privada GPG. Le gustaría que el comando finger reportara su clave pública para que la gente pudiera verificar su firma.

[prince@station prince]$ gpg --export -a prince > ~/.pgpkey

Para confirmar su configuración, él decide ejecutar el comando finger para sí mismo.

[prince@station prince]$ finger prince Login: prince Name: (null)

Page 22: 3   users and groups

Users and Groups

22

Directory: /home/prince Shell: /bin/ba sh On since Mon May 26 07:10 (EDT) on tty2 New mail received Mon May 26 07:17 2003 (EDT) Unread since Wed May 14 06:31 2003 (EDT) PGP key: -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v1.2.1 (GNU/Linux) mQGiBD7SCMcRBADqfVCpDz/h4ky/K0y2aJoJXaBMRn1KG5fro8P RXa/mH8/ToR9h n3PdJGCV4glJnMfG2II6+HTm5kgTbg+ACZyvP9JBDGqMpbA2kCQ k2RjEEArkL8d4 ... R1ujp1rJ8gCfUtM9p6A5yx5FpPQrsCtKRuurixo= =315x -----END PGP PUBLIC KEY BLOCK----- Plan: Become the first person to install Red Hat Enterpri se Linux on the moon.

Observe que se han borrado varias líneas y se remplazaron con "...".

Contactar el servidor de finger, finger.kernel.org

Algunas veces, los sitios de Internet reconfigurarán su servicio finger de esta manera que en vez de listar a todos los usuarios conectados en ese momento, el servicio presente una pequeña cantidad de información. (por lo general cambiante). La usuaria Madonna utiliza el comando finger para preguntarle a finger.kernel.org por las últimas versiones del kernel de Linux.

[madonna@station madonna]$ finger @finger.kernel.org The latest stable version of the Linux kernel is: 2.4.20 The latest prepatch for the stable Linux kernel tre e is: 2.4.21-rc3 The latest beta version of the Linux kernel is: 2.5.69 The latest snapshot for the beta Linux kernel tree is: 2.5.69-bk19 The latest 2.2 version of the Linux kernel is: 2.2.25 The latest 2.0 version of the Linux kernel is: 2.0.39 The latest prepatch for the 2.0 Linux kernel tree i s: 2.0.40-rc6 The latest -ac patch to the stable Linux kernels is : 2.4.21-rc2-ac3 The latest -ac patch to the beta Linux kernels is: 2.5.69-ac1 The latest -dj patch to the beta Linux kernels is: 2.5.69-dj1

Ejercicios en línea

Listado de grupos con el comando id.

Lab Exercise Objetivo: Listar las membresías de grupo con el comando id.

Tiempo estimado: 5 minutos.

Especificaciones

Page 23: 3   users and groups

Users and Groups

23

Redireccione la salida del comando id para crear un archivo en su directorio de inicio llamado mygroups.txt . Utilice el comando apropiado para cambiar la línea de comando, de tal manera que sus grupos suscritos (primarios y secundarios) aparezcan en una sola línea, separados por un solo espacio.

Por ejemplo, si los ejercicios se han completado correctamente, el archivo debería tener un formato similar al siguiente.

[student@station student]$ cat mygroups.txt student wrestle physics

Deliverables

Question 1

1. Un archivo ~/mygroups.txt que contenga sus grupos suscritos, separados por

un espacio en una sola línea.

Creación de un .plan para el comandofinger.

Lab Exercise Objetivo: Crear una respuesta personalizada para el comando finger.

Estimated Time: 10 mins.

Especificaciones

Utilización de un editor de texto o una redirección sencilla del comando echo para crear un archivo .plan , de tal manera que cuando los usuarios utilicen el comando finger, puedan ver los contenidos de su plan. Utilice una de sus cuentas alternas para confirmar su configuración.

Para que este ejercicio funcione, usted debe permitir que otros usuarios tengan acceso a su directorio de inicio utilizando el comando chmod o+x ~.

Deliverables

Question 1

1. Permisos en su directorio de inicio autorizando a otros usuarios la entrada a

archivos dentro de éste. 2. Un archivo llamado ~/.plan en su directorio de inicio con contenido que se

puede ver con el comando finger.

Page 24: 3   users and groups

Users and Groups

24

Possible Solution

El siguiente comando da una posible solución a este ejercicio.

[student@station student]$ chmod o+x ~ [student@station student]$ echo "Complete exercise two successfully" > ~/.plan [student@station student]$ cat ~/.plan Ejercicio 2 completo a satisfacción

Al entrar en la consola virtual con una de sus cuentas alternas, debería poder ver su plan como salida del comandofinger.

[student_a@station student_a]$ finger student Login: student Name: (null ) Directory: /home/student Shell: /bin /bash Never logged in. No mail. Plan: Complete exercise two successfully

Limpieza

Al final de este ejercicio, usted puede cerrar su directorio de inicio restaurando los permisos originales con chmod o-x ~ (¿Qué ven los otros usuarios en respuesta al comando fingeren este caso?).

Capítulo 4 Cambio de identidad

Conceptos clave

• El comando su le permite a un usuario cambiar el id del usuario. • El comando su, usualmente se llamado con un guión, así como en su -para

especificar que, en efecto, el usuario debería iniciar la sesión como el nuevo usuario.

• El comando newgrp, también llamado sg, permite al usuario cambiar el id degrupo primario.

Cambio de identidad

A menudo en Linux, a un usuario le gustaría convertirse temporalmente en otro usuario. Puede que necesite cambiar los permisos a un archivo del cual no es dueño o puede que un amigo quiera utilizar su terminal por un momento. El comando que le permite temporalmente cambiar su id de usuario se llama su.

su [[-] | [-c] | [-m, -p] | [-s, --shell=SHELL]] [USER [ARG]]

Cambie el userid al USUARIO específicado o a root si ahora el USUARIO se especifica.

Page 25: 3   users and groups

Users and Groups

25

Opción Efecto

- haga de la shell una shell de inicio.

-c ejecute el comando específico y regrese

-m,-p Preserve el entorno actual

-s, --shell=SHELL Utilice SHELL como la nueva shell de usuario

Convertirse temporalmente en otro usuario puede ser tan simple como "su" a ese usuario.

[elvis@station elvis]$ su prince Password: [prince@station elvis]$

Observe los obvios problemas de seguridad. Las propiedades y permisos de usuarios no tendrían sentido si los usuarios pudieran usar su cuando quisieran. Para convertirse en el usuario prince, era necesario que elvis conociera la contraseña de prince.

Al utilizar el comando su, la nueva shell se convierte en la shell de prince y los procesos iniciados desde la shell le pertenecen a prince. Sin embargo, la shell se llama una shell de no-inicio, prince no se registró totalmente- el intérprete de comandos indica que él aún está en el directorio de inicio de elvis. Aunque la shell y todo lo que ésta inicie, pertenece a prince gran parte del entorno de la shell fue heredado de elvis.

Para iniciar la sesión como usuario nuevo puede llamar al comando su con un - (un guión simple). Este especifica que la shell del nuevo usuario debe ser una shell de inicio.

[elvis@station elvis]$ su - prince Password: [prince@station prince]$

En este caso prince ha ingresado efectivamente, para que el nuevo directorio de trabajo actual de la shell sea el directorio de inicio de prince, y el entorno de prince se haya inicializado desde su propia configuración.

La diferencia entre una shell de inicio y una de no-inicio y el uso de las variables de entorno, se verá con más detalle en otro cuaderno. Por ahora, sólo tenga en cuenta que para llegar a ser completamente un nuevo usuario, el comando su debería llevar un - y un nombre de usuario.

Convertirse en root

Usualmente,un usuario debe ser root para configurar(o arreglar) una máquina Linux. Para convertirse de un usuario normal a un usuario root, el usuario debe conocer la contraseña de root y usar el comando "su". Si el comando su se utiliza sin argumentos, éste asume que el usuario está tratando de convertirse en root.

[elvis@station elvis]$ su -

Page 26: 3   users and groups

Users and Groups

26

Password: [root@station root]#

Debido a que el comando su se llamó con un -, la nueva shell de root comienza en el directorio de inicio. También observe el cambio sutil en el intérprete de comandos bash. Cuando la shell está se ejecuta como root, el intérprete de comandos usa "#" en lugar de "$".

El "superusuario" En Linux y Unix, la cuenta de root se conoce algunas veces como el "superusuario". Este término probablemente surgió de un malentendido del significado de las letras del comando su, las cuales se utilizan para convertirse en root. En lugar de superusuario, las letras significan switch userid - cambio de userid.

Cambio de grupo primario con el comando newgrp (o sg).

En las lecciones anteriores hablamos del papel del grupo primario. Para repasar, cada usuario tiene un grupo primario como se define en el archivo/etc/passwd y los archivos recién creados son grupos pertenecientes a un usuario del grupo primario. Algunas veces, puede que los usuarios quieran convertir uno de sus grupos secundarios en primario para que los archivos recién creados, sean propiedad de ese grupo. El comando newgrp, equivalente al comando llamado sg hace justamente esto.

newgrp [[GROUP]]

Genera una nueva shell con GROUP como su grupo primario. Si GROUP no se especifica, utilice el grupo primario por defecto.

En la siguiente secuencia de comandos, prince creará un nuevo archivo, luego utilizará el comando newgrppara generar una nueva shell con un grupo primario de music. En la nueva shell, prince creará otro archivo, el cual pertenecerá al grupo music, prince luego abandonará la nueva shell.

[prince@station prince]$ id uid=502(prince) gid=502(prince) groups=502(prince), 205(music) [prince@station prince]$ date > foo [prince@station prince]$ ls -l total 4 -rw-rw-r-- 1 prince prince 29 May 26 1 2:26 foo [prince@station prince]$ newgrp music [prince@station prince]$ id uid=502(prince) gid=205(music) groups=502(prince),205(music) [prince@station prince]$ date > biz [prince@station prince]$ ls -l total 8 -rw-r--r-- 1 prince music 29 May 26 12:26 biz -rw-rw-r-- 1 prince prince 29 May 26 1 2:26 foo [prince@station prince]$ exit

Page 27: 3   users and groups

Users and Groups

27

Observe que después de ejecutar el comandonewgrp, el comando id está reportando al grupo primario de prince como "music".

El archivo biz , creado cuando el grupo primario de prince era music, es propiedad del grupo music.

Ejercicios en línea

Utilización del comando newgrppara cambiar grupos primarios.

Lab Exercise Objetivo: Uso del comando newgrp para cambiar los grupos primarios y crear un grupo de archivos de propiedad de un nuevo grupo.

Estimated Time: 10 mins.

Especificaciones

Use el comando idpara confirmar que su cuenta es miembro del grupo secundario music.

[student@station student]$ id uid=2299(student) gid=2299(student) groups=2299(student),201(wrestle),205(music)

En su directorio de inicio, cree un archivo llamado music.txt , el cual es de propiedad de grupo music y otro archivowrestle.txt , el cual es de propiedad de grupo wrestle. Para poder hacer esto, cambie a su grupo primario con el comandonewgrp. El contenido de los archivos en realidad no tiene importancia.

Si el ejercicio se ha completado correctamente, un listado largo (ls -l) de su directorio de inicio debería dar una salida similar a lo siguiente:

[student@station student]$ ls -l total 8 -rw-r--r-- 1 student music 29 May 27 0 8:57 music.txt -rw-r--r-- 1 student wrestle 29 May 27 0 8:57 wrestle.txt

Deliverables

Question 1

1. Un archivo titulado ~/music.txt perteneciente al grupo music. 2. Un archivo titulado ~/wrestle.txt perteneciente al grupo wrestle.

Possible Solution

Page 28: 3   users and groups

Users and Groups

28

La siguiente secuencia de comandos brinda una solución posible para crear el archivomusic.txt .

[student@station student]$ id uid=2299(student) gid=2299(student) groups=2299(student),201(wrestle),205(music) [student@station student]$ newgrp music [student@station student]$ id uid=2299(student) gid=205(music) groups=2299(student),201(wrestle),205(music) [student@station student]$ date > music.txt [student@station student]$ exit exit [student@station student]$