miércoles, 2 de septiembre de 2015

Propietarios, miembros del grupo, y todos los demás

Cuando estábamos explorando el sistema allá por el capítulo 3, pudimos encontrar un problema cuando intentábamos examinar un archivo como /etc/shadow:

[me@linuxbox ~]$ file /etc/shadow
/etc/shadow: regular file, no read permission
[me@linuxbox ~]$ less /etc/shadow
/etc/shadow: Permission denied

La razón de este mensaje de error es que, como usuarios normales, no tenemos permiso para leer este archivo.

En el modelo de seguridad de Unix, un usuario puede poseer archivos y directorios. Cuando un usuario posee un archivo o directorio, el usuario tiene control sobre su acceso. Los usuarios pueden, a su vez, pertenecer a un grupo que consiste en uno o más usuarios a los que se les da acceso, a archivos y directorios, por sus propietarios. Además de conceder acceso a un grupo, un propietario puede también conceder algún tipo de derechos de acceso a todo el mundo, a quienes en el lenguaje de Unix nos referimos como el mundo. Para encontrar información sobre tu identidad, usa el comando id:

[me@linuxbox ~]$ id
uid=500(me) gid=500(me) groups=500(me)

Veamos la salida. Cuando se crea una cuenta de usuario, al usuario se le asigna un número llamado ID de usuario o uid que es, por el bien de los humanos, asignado a un nombre de usuario. Al usuario se le asigna un ID de grupo primario o gid y puede pertenecer a grupos adicionales. El ejemplo anterior es de un sistema Fedora. En otros sistemas, como Ubuntu, la salida puede ser un poco diferente:

[me@linuxbox ~]$ id
uid=1000(me) gid=1000(me)
groups=4(adm),20(dialout),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),108(lpadmin),114(admin),1000(me)

Como podemos ver, los números uid y gid son diferentes. Esto simplemente es porque Fedora empieza numerando las cuentas de los usuarios normales desde el 500, mientras que Ubuntu empieza en el 1000. También podemos ver que el usuario de Ubuntu pertenece a muchos más grupos. Esto tiene que ver con la forma en que Ubuntu maneja los privilegios para los dispositivos y servicios del sistema.

Pero ¿de dónde viene esta información? Como tantas otras muchas cosas en Linux, de un par de archivos de texto. Las cuentas de usuario están definidas en el archivo /etc/passwd y los grupos están definidos en el archivo /etc/group. Cuando las cuentas y los grupos de usuarios son creados, estos archivos son modificados junto con el archivo /etc/shadow que guarda la información de las contraseñas de los usuarios. Para cada cuenta de usuario, el archivo /etc/passwd define el nombre de usuario (login), uid, gid, el nombre real de la cuenta, el directorio home y el shell de login. Si examinas el contenido de /etc/passwd y /etc/group, verás que además de las cuentas de los usuarios normales, hay cuentas para el superusuario (uid 0) y otros usuarios del sistema.

En el próximo capítulo, veremos procesos, y verás que algunos de esos otros "usuarios" están, de hecho, muy ocupados.

Mientras que muchos sistemas tipo Unix asignan los usuarios normales a un grupo común como “users”, la práctica moderna de Linux es crear un único grupo de un sólo miembro con el mismo nombre que el usuario. Esto hace más fácil asignar ciertos tipos de permisos.

No hay comentarios:

Publicar un comentario