Derek Molloy

Raspberry Pi® a fondo para desarrolladores


Скачать книгу

sigue funcionando perfectamente. Así pues, comprobamos que los enlaces simbólicos no se actualizan cuando se mueve el archivo enlazado, mientras que los enlaces duros siempre hacen referencia al origen, aunque se haya movido o eliminado. Para ilustrar el último punto, podemos eliminar el archivo test.txt escribiendo lo siguiente:

      pi@erpi /tmp $ rm subdirectory/test.txt

      pi@erpi /tmp $ more hardlink

      testing links on the RPi

      Mas el archivo todavía existe, y no se borrará hasta que eliminemos el enlace duro llamado hardlink, con lo que la cuenta bajará hasta cero. Así pues, si un archivo tiene una cuenta de enlaces duros igual a cero, y no lo utiliza ningún proceso, será borrado. En efecto, el propio nombre, test.txt, no es más que un enlace duro. Observe que no se pueden establecer enlaces duros a través de distintos sistemas de archivos, puesto que cada sistema posee su propia tabla de índices inodo que empieza en 1. Por lo tanto, el inodo 269, que es el índice inodo del directorio /tmp, seguramente describa una cosa completamente diferente en otro sistema de archivos. Escriba el comando man ln para acceder a una guía especialmente útil sobre los enlaces a archivos.

      NOTA Puede escribir history para obtener una lista de todos los comandos escritos anteriormente. Asimismo, puede pulsar Control+R para acceder a una búsqueda interactiva del historial de comandos y localizar uno que haya usado recientemente. Pulsar Intro activa el comando, mientras que pulsar Tab lo sitúa en nuestra línea de comandos para que podamos modificarlo.

      Linux es un sistema operativo multiusuario que utiliza las siguientes tres clases diferenciadas para gestionar los permisos de acceso:

      ❏Usuario (user): podemos crear diferentes cuentas de usuario en nuestro RPi. Esto resulta útil si deseamos limitar el acceso a determinados procesos y áreas del sistema de archivos. La cuenta de usuario root es el superusuario del RPi y tiene acceso a todos y cada uno de los archivos. Por tanto, no sería seguro ejecutar un servidor web público desde esta cuenta, ni tampoco desde pi, si el servidor soporta scripts locales.

      ❏Grupo (group): las cuentas de usuario se pueden marcar (flag) para indicar que pertenecen a uno o varios grupos. Grupos que pueden contar con diferentes niveles de acceso a los distintos recursos del sistema, por ejemplo dispositivos UART o buses I2C.

      ❏Otros (others): todos los usuarios del RPi aparte del propietario del archivo, o de un miembro de un grupo listado en los permisos.

      Podemos crear usuarios desde una ventana de terminal de Linux. Podemos ver la lista completa de grupos escribiendo more /etc/group. El ejemplo siguiente demuestra cómo crear una nueva cuenta de usuario en el RPi y modificar sus propiedades según nos convenga.

      Ejemplo: crear una nueva cuenta de usuario en el RPI

      Este ejemplo muestra cómo crear una cuenta de usuario y, luego, cambiar sus propiedades:

      1. Creamos una nueva cuenta de usuario llamada molloyd en el RPi

      2. Añadimos la cuenta a un nuevo grupo diseñado por nosotros mismos.

      3. Añadimos la cuenta de usuario a los grupos de interfaz estándar del RPi.

      4. Cambiamos la contraseña de la nueva cuenta de usuario.

      5. Comprobamos que la cuenta funcione correctamente.

      Paso 1: Crear el usuario molloyd del siguiente modo:

      pi@erpi ~ $ sudo adduser molloyd

      Adding user 'molloyd' ...

      Adding new group 'molloyd' (1002) ...

      Adding new user 'molloyd' (1001) with group 'molloyd' ...

      Creating home directory '/home/molloyd' ...

      Copying files from '/etc/skel' ...

      Enter new UNIX password: ThePassword

      Retype new UNIX password: ThePassword

      passwd: password updated successfully

      Changing the user information for molloyd

      Enter the new value, or press ENTER for the default

       Full Name []: Derek Molloy

       Room Number []: Home

       Work Phone []: XXXX

       Home Phone []: XXXX

       Other []: XXXX

      Is the information correct? [Y/n] Y

      Paso 2: Añadir el usuario a un nuevo grupo diseñado por nosotros mismos.

      pi@erpi ~ $ sudo groupadd newgroup

      pi@erpi ~ $ sudo adduser molloyd newgroup

      Adding user 'molloyd' to group 'newgroup' ...

      Adding user molloyd to group newgroup

      Done.

      pi@erpi ~ $ groups molloyd

      molloyd : molloyd newgroup

      Paso 3: Añadir el usuario a los grupos de usuarios estándar y de interfaz del RPi:

      pi@erpi ~ $ sudo usermod -a -G pi,adm,dialout,cdrom,sudo,audio,video,

      plugdev,users,games,netdev,gpio,i2c,spi,input molloyd

      pi@erpi ~ $ groups molloyd

      molloyd : molloyd adm dialout cdrom sudo audio video plugdev games users pi

       netdev input spi i2c gpio newgroup

      Paso 4: Cambiar la contraseña si es preciso:

      pi@erpi ~ $ sudo passwd molloyd

      Enter new UNIX password: ABetterPassword

      Retype new UNIX password: ABetterPassword

      passwd: password updated successfully

      pi@erpi ~ $ sudo chage -d 0 molloyd

      Para practicar los temas presentados hasta ahora en este capítulo, los siguientes ejemplos utilizan la cuenta de usuario molloyd. El primer ejemplo muestra el comando chown (change ownership) para cambiar la propiedad de un archivo, y para cambiar la propiedad de grupo del archivo usamos chgrp (change group).

      Para poder invocar correctamente la herramienta sudo en el ejemplo, el usuario molloyd debe figurar en el archivo sudoers, lo que se hace desde el usuario pi ejecutando el comando visudo. Se puede modificar el archivo para que incluya una entrada molloyd del siguiente modo:

      pi@erpi ~ $ sudo visudo

      pi@erpi ~ $ sudo tail -n 2 /etc/sudoers

      pi ALL=(ALL) NOPASSWD: ALL

      molloyd ALL=(ALL) ALL

      La cuenta de usuario molloyd puede ejecutar a partir de ahora el comando sudo, pero deberá escribir su contraseña para ello.

      Los permisos del sistema de archivos (file system permissions) indican qué niveles de acceso a un archivo o directorio tiene cada una de las clases de permisos. El comando chmod (change mode, cambiar modo) permite a un usuario cambiar los permisos de acceso a los objetos del sistema de archivos. Es posible especificar los permisos de una forma relativa. Por ejemplo, chmod a+w test.txt proporciona a todos los usuarios acceso de escritura al archivo test.txt, pero no cambia ningún otro permiso.

      Por otra parte, también es posible especificar los permisos de una forma absoluta. Por ejemplo, chmod a=r test.txt establece que todos los usuarios tendrán únicamente acceso de lectura al archivo test.txt. El ejemplo siguiente muestra cómo modificar los permisos del sistema de archivos para un archivo utilizando el comando chmod.