Este documento describe los usuarios de Linux y el archivo /etc/passwd. Explica que cada usuario tiene un nombre de usuario y un ID de usuario (UID) asociado, y que el archivo /etc/passwd mapea los nombres de usuario a los UID. También describe los tipos de usuarios (normales, root y de sistema), y cómo las contraseñas se almacenan de forma segura en el archivo /etc/shadow en lugar de en /etc/passwd.
1. 1
Users and Groups
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
2. 2
Users and Groups
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
Num Propósito
campo
Nombre de El nombre de usuario se utiliza para dar un nombre leíble al
1
usuario usuario.
En los sistemas Unix más antiguos este campo contiene la
Contraseña 2 contraseña del usuario encriptada. Por defecto, Red Hat Enterprise
Linux no hace uso de este campo por razones de seguridad.
Id del El número entero que el kernel de Linux utiliza para identificar al
3
usuario (uid) usuario.
Groupid El número entero que el kernel de Linux utiliza para identificar al
Primario 4 grupo primario del usuario. Las membresías del grupo se estudiarán
(gid) en la siguiente sección.
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
GECOS 5
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.
Cuando un usuario inicia sesión, su shell de inicio la utilizará como
Directorio de su directorio actual de trabajo. Este es uno de los pocos directorios
6
inicio en los que los usuarios estándar pueden escribir y generalmente son
de uso privado para el usuario.
Shell de La shell de inicio de sesión es la shell predeterminada para los
inicio de 7 usuarios al iniciar la sesión. En Red Hat Enterprise Linux es
sesión 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
3. 3
Users and Groups
/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 successfully.
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
4. 4
Users and Groups
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
5. 5
Users and Groups
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 START TIME COMMAND
root 1 0.0 0.0 1380 76 ? S 03:33 0:04 init [
root 2 0.0 0.0 0 0 ? SW 03:33 0:00
[keventd]
root 3 0.0 0.0 0 0 ? SW 03:33 0:00 [kapmd]
...
root 872 0.0 0.1 5932 440 ? S 03:34 0:00
[sendmail]
smmsp 881 0.0 0.1 5732 312 ? S 03:34 0:00
[sendmail]
root 891 0.0 0.0 1420 56 ? S 03:34 0:00 gpm -t
ps/2 -m /d
root 900 0.0 0.0 1572 128 ? S 03:34 0:00 crond
xfs 973 0.0 0.0 4812 236 ? S 03:34 0:00 [xfs]
root 992 0.0 0.0 3412 4 ? S 03:34 0:00 rhnsd -
-interval
root 999 0.0 0.0 1356 4 tty1 S 03:34 0:00
/sbin/mingetty tt
...
prince 1066 0.0 1.4 18428 3704 ? S 03:37 0:00
/usr/bin/gnome-se
prince 1116 0.0 0.4 6136 1084 ? S 03:37 0:00
/usr/libexec/bono
prince 1118 0.0 0.6 17380 1716 ? S 03:37 0:00 gnome-
settings-da
prince 1123 0.0 0.1 2688 388 ? S 03:37 0:00 [fam]
prince 1128 0.0 0.4 3816 1032 ? S 03:37 0:02
xscreensaver -nos
prince 1135 0.0 2.1 20220 5440 ? S 03:37 0:06 gnome-
panel --sm-
prince 1137 0.0 3.9 86176 10048 ? S 03:37 0:04
nautilus --no-def
prince 1145 0.1 3.0 26132 7900 ? S 03:37 0:13
/usr/bin/python /
root 1146 0.0 0.0 1412 156 ? S 03:37 0:00
[pam_timestamp_c]
prince 1160 0.1 3.4 23208 8844 ? S 03:38 0:11
/usr/bin/gnome-te
prince 1161 0.0 0.1 1852 284 ? S 03:38 0:00 [gnome-
pty-helpe]
prince 1162 0.0 0.1 4368 340 pts/0 S 03:38 0:00 bash
prince 1210 0.0 0.3 4372 964 pts/1 S 03:39 0:01 bash
prince 2262 0.4 8.0 99276 20476 pts/0 S 03:42 0:36
/usr/bin/galeon-b
prince 2266 0.0 0.5 5652 1480 ? S 03:42 0:00 oafd --
ac-activat
prince 2818 0.0 0.3 4368 864 pts/2 S 04:17 0:00 bash
prince 3673 0.1 0.5 4356 1444 pts/4 S 05:46 0:00 bash
root 3699 0.0 0.3 4112 952 pts/4 S 05:46 0:00 [su]
elvis 3702 0.0 0.5 4312 1416 pts/4 S 05:46 0:00 -bash
elvis 3736 1.1 4.0 24572 10316 pts/4 S 05:46 0:00
evolution
6. 6
Users and Groups
elvis 3739 0.4 0.8 5664 2260 ? S 05:46 0:00 oafd --
ac-activat
elvis 3742 0.5 2.3 22548 6100 ? S 05:46 0:00 wombat
--oaf-acti
elvis 3746 0.3 1.6 11296 4288 ? S 05:46 0:00 bonobo-
moniker-xm
elvis 3753 1.0 3.4 57400 8916 ? S 05:46 0:00
evolution-mail --
elvis 3755 0.0 0.5 3260 1440 ? S 05:46 0:00
/usr/bin/gconfd-1
elvis 3762 0.6 2.5 23052 6628 ? S 05:46 0:00
evolution-address
elvis 3766 0.5 2.5 23516 6560 ? S 05:46 0:00
evolution-calenda
elvis 3771 0.5 2.2 21336 5860 ? S 05:46 0:00
evolution-alarm-n
elvis 3773 0.6 2.3 21740 6104 ? S 05:46 0:00
evolution-executi
root 3785 0.0 0.3 4108 948 pts/3 S 05:46 0:00 [su]
madonna 3788 0.1 0.5 4308 1412 pts/3 S 05:46 0:00 -bash
madonna 3822 11.4 8.7 89140 22320 pts/3 S 05:46 0:05
/usr/lib/mozilla-
root 3852 0.0 0.3 4112 968 pts/2 S 05:47 0:00 [su]
elvis 3855 0.6 0.5 4304 1392 pts/2 S 05:47 0:00 -bash
elvis 3891 0.0 0.2 2668 716 pts/2 R 05: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 06:35 blondie
drwx------ 4 doc doc 4096 May 14 06:32 doc
drwx------ 4 elvis elvis 4096 May 14 06:31 elvis
drwx------ 4 grumpy grumpy 4096 May 14 06:32 grumpy
drwx------ 4 madonna madonna 4096 May 14 06:31 madonna
drwx------ 4 prince prince 4096 May 14 06:31 prince
drwx------ 4 sleepy sleepy 4096 May 14 06:32 sleepy
[blondie@station blondie]$ ls -ln /home/
total 48
drwx------ 4 505 505 4096 May 14 06:35 blondie
drwx------ 4 510 510 4096 May 14 06:32 doc
7. 7
Users and Groups
drwx------ 4 501 501 4096 May 14 06:31 elvis
drwx------ 4 509 509 4096 May 14 06:32 grumpy
drwx------ 4 504 504 4096 May 14 06:31 madonna
drwx------ 4 502 502 4096 May 14 06:31 prince
drwx------ 4 507 507 4096 May 14 06: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 06:40 blondie
drwx------ 4 doc doc 4096 May 14 06:32 doc
drwx------ 4 elvis elvis 4096 May 14 06:31 elvis
drwx------ 4 grumpy grumpy 4096 May 14 06:32 grumpy
drwx------ 4 madonna madonna 4096 May 14 06:31 madonna
drwx------ 4 prince prince 4096 May 14 06: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 06:40 blondie
drwx------ 4 doc doc 4096 May 14 06:32 doc
drwx------ 4 elvis elvis 4096 May 14 06:31 elvis
drwx------ 4 grumpy grumpy 4096 May 14 06:32 grumpy
drwx------ 4 madonna madonna 4096 May 14 06:31 madonna
drwx------ 4 prince prince 4096 May 14 06: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
8. 8
Users and Groups
/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
9. 9
Users and Groups
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/groupasigna 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/groupasocia 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
10. 10
Users and Groups
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
Num Propósito
campo
El nombre de grupo se utiliza para dar al grupo un nombre
Groupname 1
legible.
Contraseña de Los grupos pueden contar con una contraseña de grupo aunque
2
grupo esto sucede raras veces.
Grupo ID (GID) 3 El número entero de grupo id.
Miembros de Una lista de nombres de usuarios separados por comas que
4
grupo 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.
11. 11
Users and Groups
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.
12. 12
Users and Groups
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 08:39 cron
drwx------ 3 lp sys 8192 May 21 12:36 cups
drwxr-xr-x 23 root root 4096 Jan 24 18:52 lpd
drwxrwxr-x 2 root mail 4096 May 21 10: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:
13. 13
Users and Groups
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
14. 14
Users and Groups
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.txtque 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.
15. 15
Users and Groups
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(blondie),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.
16. 16
Users and Groups
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".
17. 17
Users and Groups
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 15.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.
La terminal desde donde el usuario está conectado, (la interpretación de las
TTY
terminales se discute en el cuaderno 1).
Si el usuario está conectado a la red, el nombre del anfitrión desde donde el
FROM
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.
La cantidad de tiempo CPU consumido por todos los procesos que están
JCPU
ejecutándose en el momento asociados con la sesión de la terminal.
La cantidad de tiempo de CPU consumido por sólo el proceso actual, como
PCPU
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.
18. 18
Users and Groups
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 Office 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/bash
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.
19. 19
Users and Groups
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/bash
On since Mon May 26 07:10 (EDT) on tty2 10 minutes 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
Propósito
archivo
.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:".
Aparece en la pantalla gracias al comando finger bajo el título
.pgpkey
"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.
20. 20
Users and Groups
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 pataki@nimbus.example.com
Login: pataki Name: (null)
Directory: /home/pataki Shell: /bin/bash
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(blondie),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 10.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-
21. 21
Users and Groups
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/bash
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 siguiente archivo )...
Convertirse en la primera persona en instalar Red Hat Enterprise Linux
en la luna.
...( y guarda el archivo como ~/.plan) ...
[prince@station prince]$ cat ~/.plan
Convertirse en la primera persona en instalar Red Hat 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)
22. 22
Users and Groups
Directory: /home/prince Shell: /bin/bash
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/K0y2aJoJXaBMRn1KG5fro8PRXa/mH8/ToR9h
n3PdJGCV4glJnMfG2II6+HTm5kgTbg+ACZyvP9JBDGqMpbA2kCQk2RjEEArkL8d4
...
R1ujp1rJ8gCfUtM9p6A5yx5FpPQrsCtKRuurixo=
=315x
-----END PGP PUBLIC KEY BLOCK-----
Plan:
Become the first person to install Red Hat Enterprise 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 tree 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 is: 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
23. 23
Users and Groups
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.txtque 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 ~/.planen su directorio de inicio con contenido que se
puede ver con el comando finger.
24. 24
Users and Groups
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.
25. 25
Users and Groups
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 -
26. 26
Users and Groups
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 12: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 12:26 foo
[prince@station prince]$ exit
27. 27
Users and Groups
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 08:57 music.txt
-rw-r--r-- 1 student wrestle 29 May 27 08:57 wrestle.txt
Deliverables
Question 1
1. Un archivo titulado ~/music.txt perteneciente al grupo music.
2. Un archivo titulado ~/wrestle.txtperteneciente al grupo wrestle.
Possible Solution
28. 28
Users and Groups
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]$