13.14. Propiedades y permisos

Al principio de este capítulo ha recibido el siguiente mensaje, cuando intentó cambiarse al directorio login de root:

cd /root
bash: /root: Permission denied

Esto es un ejemplo de las características de seguridad de Linux. Linux, como UNIX, es un sistema multiusuario y los permisos para tener acceso a los archivos presentan una solución para proteger la integridad del sistema de cualquier daño.

Una manera de tener acceso cuando se le deniega el permiso es ejecutando su a root, como vió anteriormente. Esto es porque quien conoce la contraseña de root tiene acceso completo al sistema.

Pero cambiándose al superusuario no siempre es lo más conveniente o recomendado, pues es posible cometer errores y alterar archivos de configuración importantes como superusuario.

Todos los archivos y los directorios pertenecen a la persona que los ha creado. Hemos creado el archivo sneakers.txt (vea la Sección 13.9.1) en su directorio login, por ello sneakers.txt le pertenece.

Esto quiere decir que podemos especificar quién puede leer o escribir un archivo. Además en el caso de que un archivo sea ejecutable es posible especificar quién tiene el derecho a ejecutarlo.

Lectura, escritura, y ejecución son las tres configuraciones principales de permisos. Como cada usuario del sistema está incluído en un grupo, podemos también especificar qué grupos pueden leer, escribir o ejecutar un archivo.

Tome como ejemplo el archivo sneakers.txt con el comando ls utilizando la opción -l (consulte la Figura 13-11).

Hay mucha información aquí. Con esta opción se visualizan muchos de los detalles. Podemos ver quién puede leer (r) y escribir (w) el archivo, el creador del archivo (sam) y a qué grupo de usuarios pertenece (sam). Recuerde que por defecto, el nombre de su grupo es el mismo que su nombre de login.

Figura 13-11. Permisos para sneakers.txt

Entre el nombre del grupo y el nombre del archivo hay informaciones relativas al tamaño del archivo, a la fecha y a la hora de creación.

La primera columna muestra los permisos actuales; tiene diez espacios. El primer espacio representa el tipo de archivo. Los nueve restantes son, de hecho, tres grupos de permisos de tres categorías de usuarios diferentes.

Por ejemplo:

-rw-rw-r--

Estos tres grupos se refieren respectivamente al propietario del archivo, al grupo al que pertenece el archivo y "otros", o sea todos los demás usuarios del sistema.

-    (rw-)   (rw-)   (r--) 1 sam sam 
|      |       |       | 
type  owner  group   others
      

El primer elemento, que especifica el tipo de archivo, puede tener uno de los siguientes valores:

Después del primer carácter, en cada uno de los tres grupos que siguen es posible especificar uno entre los siguientes valores:

Cuando aparece un guión en propietario, grupo u otros, quiere decir que no se ha concedido un permiso en particular. Mire otra vez la primera columna del archivo sneakers.txt e identifique sus permisos.

ls -l sneakers.txt
-rw-rw-r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

El propietario del archivo, (en este caso, sam) tiene los permisos para escribir y leer el archivo. El grupo, sam, tiene los permisos para escribir y leer sneakers.txt. El archivo no es un programa por lo que ni el propietario (owner) ni el group tienen permiso para ejecutarlo.

13.14.1. El comando chmod

Puede utilizar el comando chmod para cambiar los permisos en sneakers.txt.

En el archivo original están presentes los siguientes permisos:

-rw-rw-r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

Si es el propietario del archivo o está registrado en la cuenta de root, puede cambiar cualquier permiso para el propietario, grupo u otros.

Por el momento, el propietario y el grupo pueden leer y escribir el archivo. Cualquiera fuera del grupo, sólo puede leer el archivo (r--).

AtenciónAtención
 

Recuerde que los permisos de los archivos son muy importantes para la seguridad. Cada vez que permite a todo el mundo leer, escribir o ejecutar un archivo, está arriesgando la integridad del sistema. Como regla general, le aconsejamos que sólo otorgue permisos de lectura y escritura a aquellos que realmente los necesiten.

En el siguiente ejemplo, suponga que quiere conceder a todo el mundo el permiso de escritura en un archivo, de forma que puedan leerlo, escribir en él y grabarlo. Esto quiere decir que tendrá que cambiar la sección "otros" en los permisos de archivos.

De un vistazo al archivo primero. En el intérprete de comandos de la shell, escriba:

ls -l sneakers.txt

El comando previo visualiza la información de este archivo:

-rw-rw-r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

Teclee lo siguiente:

chmod o+w sneakers.txt

El comando o+w le dice al sistema que desea dar a "otros" el permiso para escribir en el archivo sneakers.txt. Para controlar los resultados, puede nuevamente listar los detalles relativos al archivo:

-rw-rw-rw-    1 sam sam     150 Mar 19 08:08 sneakers.txt

Ahora, cualquiera puede leer o escribir el archivo

Para quitar los permisos de lectura y escritura del archivo sneakers.txt use el comando chmod.

chmod go-rw sneakers.txt

Al escribir go-rw, le está diciendo al sistema que quite los permisos de lectura y escritura para el grupo y para otros del archivo sneakers.txt.

El resultado sería similar a:

-rw-------    1 sam sam    150 Mar 19 08:08 sneakers.txt

Piense que estas configuraciones usando chmod, es como un tipo de taquigrafía para cambiar los privilegios de acceso, porque todo lo que debe hacer realmente es recordar unos pocos símbolos y letras para usar con chmod.

A continuación tiene una lista de la taquigrafía utilizada y sus correspondencias:

Identidades

u — es el usuario propietario del archivo

g — es el grupo al que el usuario pertenece

o — otros, el resto del mundo (ni el propietario, ni su grupo)

a — todo el mundo (u, g, y o)

Permisos

r — acceso a lectura

w — acceso a escritura

x — acceso de ejecución

Acciones

+ — añadir los permisos

- — elimina los permisos

= — hace que sea el único permiso

¿Quiere comprobar sus habilidades de permisos? Suprima todos los permisos de sneakers.txt — para todo el mundo.

chmod a-rwx sneakers.txt

Ahora vea si puede leer el archivo con el comando cat sneakers.txt, que debería devolver lo siguiente:

cat: sneakers.txt: Permission denied

¡Funciona! al remover todos los permisos, incluyendo los suyos, ha bloqueado el archivo. No obstante, como el archivo le pertenece, siempre puede cambiar sus permisos con el comando siguiente:

chmod u+rw sneakers.txt

Use el comando cat sneakers.txt para verificar que usted como propietario del archivo, lo puede leer otra vez.

He aquí algunos ejemplos comunes de configuración que se pueden realizar con chmod:

Añadiendo la opción -R puede cambiar los permisos para el árbol entero del directorio donde se encuentra.

De todas formas puesto que no podemos "ejecutar" un directorio como si fuera una aplicación; cuando añada o elimine los permisos de ejecución para un directorio, estará concediendo (o denegando) los permisos de búsqueda en el interior de este directorio

Si no le permite a otros tener permiso de ejecución sobre tigger, no importa quién tenga permiso de lectura o escritura. Nadie podrá accesar el directorio a menos que conozca exactamente el nombre del archivo.

Por ejemplo, escriba:

chmod a-x tigger

para quitarle a todos los permisos de ejecución.

Esto es lo que ocurre cuando intenta de ejecutar cd en tigger:

bash: tigger: Permission denied

Luego, restaure su propio acceso y el del grupo:

chmod ug+x tigger

Ahora, si verifica su trabajo usando ls -l verá que solamente otros tendrán el acceso denegado para el directorio tigger.

13.14.2. Cambiar los permisos usando números

¿Se acuerda de cuando hablábamos del modo abreviado (taquigráfico) para utilizar chmod? Aquí tiene otra manera de cambiar los permisos; que quizás en principio podrá parecerle algo más compleja.

Vuelva a los permisos originales de sneakers.txt:

-rw-rw-r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

Cada configuración del permiso puede estar representada por un valor numérico:

Si se suman estos valores, el resultado se utiliza para especificar los permisos. Por ejemplo, si quiere leer y escribir permisos, tendrá un valor de 6; 4 (leer)+ 2 (escribir)= 6.

Para el archivo sneakers.txt, aquí tiene un ejemplo de los permisos codificados en números:

 -  (rw-)   (rw-)  (r--)
      |       |      |
    4+2+0   4+2+0  4+0+0

El total para los usuarios es seis, el total para los grupos es seis y el total para para los demás es cuatro. El código de permisos será 664.

Si quiere cambiar el archivo sneakers.txt para que aquellos en su grupo no tengan acceso a escritura, pero si lo puedan leer, quite el acceso eliminando dos (2) de ese grupo de números.

Los valores numéricos serán seis, cuatro y cuatro (644).

Para llevar a cabo los nuevos valores, escriba:

chmod 644 sneakers.txt

Para controlar los cambios, teclee:

ls -l sneakers.txt

El resultado debería ser:

-rw-r--r--    1 sam sam     150 Mar 19 08:08 sneakers.txt

Ningún usuario, a parte del propietario, puede escribir el archivo (ni el grupo ni otros) sneakers.txt. Para reestablecer los derechos de escritura del grupo en el archivo, puede añadir el valor de w (2) al segundo grupo de permisos.

chmod 664 sneakers.txt

AvisoAviso
 

Los permisos a 666 (cualquiera puede leer o escribir) o 777 (cualquiera puede leer, escribir y ejecutar) dan la posibilidad a todos de leer o escribir un archivo o un directorio. Estos permisos pueden dañar los archivos, por ello utilizarlos no es buena elección.

Aquí tiene una lista de algunos valores numéricos y de los significados relativos:

Aquí tiene un conjunto de valores para los directorios: