Los permisos de Unix: Quien puede y quien no

imagen de ejemplo de permisos

imagen de ejemplo de permisos

Siempre que he dado clases de Unix o Linux, una de las cosas que más problemas ha dado a los alumnos ha sido el concepto de permiso. Este pequeño artículo, recoge como podemos cambiar y asignar los permisos en Unix y Linux.

En Unix, y vamos a hacerlo extensivo a sistemas similares como Linux, pueden ser de 3 clases, ejecución, lectura y escritura y para poder verlos, se puede utilizar el comando ls –l.

Con esta tabla, podremos ver las propiedades de un fichero del sistema:

-rwxr–r– 1 root users 1779380 Dec 26 10:05 fichero

-rwxr–r–

Estos son los permisos del sistema, que se trataran inmediatamente después de este cuadro.
1 Este es el numero de enlaces.
root Este es el propietario de este fichero.
users Este es el grupo propietario de este fichero.
1779380 Este es el tamaño en bloques de este fichero (1 bloque = 1024 bytes)
Jun 05 10:05 Esta es la fecha de modificación.

fichero

Este es el nombre del fichero.

 

Los permisos de un fichero, pueden ser de 3 clases y están divididos en 3 grupos distintos. La primera letra es el tipo de fichero que es. Un guión (-) significará que es un fichero, una letra d nos indicará que es un directorio, y una letra l , nos dirá que es un enlace a otro fichero. Además, podemos ver otros ficheros “especiales” como sockets (s), pipes (p), fifos (f), etc. cuyo significado se aleja un poco del contenido de este artículo y que recogeré en otro más adelante.

Bueno, vamos a quedarnos con el segundo bloque del ejemplo: rwxr–r– que es donde se localizan los permisos del fichero. Este se divide a su vez en tres partes. Los tres primeros caracteres para los permisos del propietario (rwx), tres para los permisos del grupo (r–) y los últimos tres, corresponden a los permisos del resto de usuarios presentes en la máquina (r–).

El significado de estas letras es el siguiente:

Permisos de un fichero.
r Lectura. El fichero puede ser leído.
w Escritura. El fichero puede ser modificado.
x Ejecución. El fichero es ejecutable.

 

La forma de cambiar un permiso puede ser en modo ASCII, o en modo octal. El modo octal es mucho mas fácil de usar que el modo ASCII y por eso lo vamos a ver en segundo lugar.

Los permisos en Linux, se cambian con el comando chmod y se utiliza de la siguiente forma:

bash# chmod ugoa+-=rwxugo fichero

Los argumentos de chmod están contenidos en la siguiente tabla:

Carácter Significado
u Se refiere al propietario del archivo. (user)
g Se refiere al grupo. (group)
o Se refiere al resto. (others)
a Se refiere a todos los usuarios incluidos el propietario. (es decir, equivale a “ugo”)
+ Añade permisos.
Resta permisos.
= Iguala el niver de permisos a los de otro grupo de usuarios.
r Permiso de lectura.
w Permiso de escritura.
x Permiso de ejecución.

 

Este método tan complejo, se entenderá mejor si usamos un ejemplo con un fichero al que llamaremos “ejemplo”:

-rw-r–r–    1 root     root           91 Jan 20 20:53 ejemplo

Usando este fichero de ejemplo que se puede leer (r) por el propietario, el grupo y el resto de usuarios. Si fueran usuarios de verdad, no nos interesarían estos permisos, por lo tanto le podemos cambiar estos para que sea solamente accesible para el propietario del fichero (root).

bash#  chmod og-r ejemplo

bash#  ls –l ejemplo

bash#  -rw——-    1 root     root           91 Jan 20 20:53 ejemplo

Como se puede observar, con el tiempo no es tan difícil. Pero vamos con otro ejemplo. Queremos que se recuperen los permisos, y que además, sea modificable por el resto de los usuarios:

bash#  chmod ugo+rw usuarios

bash#  ls –l usuarios

bash# -rw-rw-rw-    1 root     root           91 Jan 20 20:53 usuarios

En caso de que sea un directorio, el significado de “x” varía y nos indica que se puede acceder al mismo.

La asignación de permisos en modo octal, sigue la siguiente tabla como guía para la asignación de permisos:

Valor Permiso.
4 Lectura.
2 Escritura.
1 Ejecución.

 

El comando para cambiar los permisos de los ficheros es chmod y en caso de la asignación de permisos en modo octal su utilización es la siguiente:

Usuario Grupo Otros
r w x r w x r w x
4 2 1 4 2 1 4 2 1

 

Para aplicar los permisos rw-rw-rw- a un fichero, ni siquiera necesitamos saber los que poseía anteriormente:

bash#  chmod 666 usuarios

bash#  ls –l usuarios

bash# -rw-rw-rw-    1 root     root           91 Jan 20 20:53 usuarios

o uno menos ‘diabólico’ en muchos sentidos 🙂

bash#  chmod 655 usuarios

bash#  ls –l usuarios

bash# -rw-r-xr-x    1 root     root           91 Jan 20 20:53 usuarios

Como se puede intuir, los permisos se obtienen de la suma de los valores del cuadro anterior. Este método es muy sencillo y es el más utilizado desde hace unos años. No obstante, os recomiendo que os aprendáis los dos métodos.

A la hora de asignar permisos, es importante también tener claro quien es el propietario y asignar correctamente el grupo.

Para cambiar de propietario un fichero, esta el comando chown. Este comando, además puede cambiar el grupo al que pertenece el fichero. La sintaxis es muy fácil:

bash# chown usuario.grupo fichero

pudiendo utilizar por separado el usuario y el grupo:

bash# chown usuario fichero

bash# chown .grupo fichero

En algunas variantes de Unix, es posible utilizar el carácter “:” para separar grupos y usuarios.

Como siempre, si tenéis alguna duda, podéis mandarme un mensaje a través del formulario de contacto o vía email o bien un comentario. También estoy disponible vía twitter: @jesusdml

Saludos,

Related Posts Plugin for WordPress, Blogger...
Print Friendly
Facebooktwittergoogle_plusredditlinkedinmailFacebooktwittergoogle_plusredditlinkedinmail

1 Trackback / Pingback

  1. SUID, SGID, Sticky...Los otros permisos de ficheros | @jesusdml

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*