sábado, 12 de mayo de 2012

Permisos

PERMISOS


El sistema de permisos de Linux es simple y efectivo. Existen tres tipos de permisos:

Ejecución: Si es para un archivo será ejecutable y si es para un directorio significa que podemos pasar por él. Es representado por una X.

Lectura: Si es para un archivo significa que podemos leerlo y si es un directorio es que podemos leerlo también. Es representado por una R.

Escritura: Si es para un archivo será que podemos escribir en él y si es para un directorio significa que podemos crear ficheros dentro de él. Es representado por una W

También existen tres tipos de roles sobre los que se aplican estos permisos. Un archivo pertenece a un usuario y a un grupo:

Usuario: El propietario del archivo.
Grupo: Grupo al que pertenece el archivo.
Otros: Los demás usuarios.

Veamos un ejemplo:

$ ls -l pg_backup.sh
-rwxr-x---  1  pepito usuarios 453 2005-02-17 09:35 pg_backup.sh

El archivo pg_backup.sh pertenece al usuario pepito y al grupo usuarios. Los permisos que tiene para el usuario son rwx lo que significa que el usuario pepito puede leer el archivo, escribir en él y ejecutarlo. Por la extensión vemos que es un script, por lo que es normal que se pueda ejecutar. Para el grupo tiene los permisos r-x. Eso significa que los miembros del grupo usuarios pueden leer el archivo y ejecutarlo, pero no modificarlo. Los permisos para los demás usuarios (otros) son ---, por lo que un usuario que no sea pepito ni pertenezca al grupo usuarios no podrá leer, escribir ni ejecutar el archivo.

CAMBIO DE PERMISOS
Interfaz gráfica

Podrás cambiar los permisos de forma gráfica; sólo tienes que darle con el botón derecho del ratón sobre el directorio o el archivo al que quieras cambiar el permiso y seleccionar la pestaña permisos.

CONSOLA

El comando chmod se usa para designar los permisos de un archivo. Sólo el dueño del archivo y el root pueden cambiar los permisos. La sintaxis de chmod es:

chmod {a, u, g, o} {+, -} {r, w, x} nombre del archivo

donde:

u: corresponde al dueño del archivo
g: corresponde al grupo
o o a: corresponde al resto de los usuarios, a para todos (all) y o para otros (others)

Para autorizar o desautorizar el permiso:

+: autoriza
-: desautoriza
=: resetea los permisos

Los tipos de permisos son:

r: lectura
w: escritura
x: ejecución

El comando chmod también acepta otros valores para cambiar los permisos. Es probable que hayas visto algo como:

sudo chmod 751 [nombre del archivo]

Es otro modo de gestionar los permisos; de forma binaria. El sistema es muy simple y cómodo: se considera un bit para lectura (r) otro para escritura (w) y otro para ejecución (x). Las combinaciones posibles son ocho y se muestran en la tabla siguiente:

Octal r w x
0 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1

Un uno equivale a activar y un cero a desactivar los permisos. El equivalente octal de los permisos se aplica en orden: dueño, grupo y cualquiera (u,g,a). Entonces en el ejemplo anterior el valor 751 actúa:

Cediendo todos los permisos al dueño.
Cediendo permiso de lectura y ejecución al grupo.
Cediendo permiso de ejecución a cualquiera.

CAMBIO DE PROPIETARIO/GRUPO
Interfaz gráfica


De forma gráfica solamente podrás cambiar el grupo al que pertenece un archivo. Para hacerlo tienes que darle con el botón derecho del ratón sobre el directorio o el archivo al que quieras cambiar el grupo y seleccionar la pestaña permisos.


CONSOLA
El cambio de propietario se hace empleando el comando chown :

chown (propietario):(grupo) (archivo)

Pondremos un ejemplo, supongamos que el usuario gaccardo desea darle una copia del archivo test.sxw al usuario pigu, el usuario pigu debe ser propietario de su copia para poder modificarla. Para esto debe cambiar el propietario y el grupo utilizando el comando chown.

Haciendo "ls -l" nos encontramos con un fichero asi:

-rwx-rw-r-- gaccardo gaccardo 435 sep 4 11:38 test.sxw

Por lo que en este caso el usuario gaccardo (actual propietario) deberá hacer :

[gaccardo@servidor priv]chown pigu:pigu test.sxw

Si vuelve a hacer "ls -l" encuentra que ha cambiado el actual propietario

-rwx-rw-r-- pigu pigu 435 sep 4 11:38 test.sxw
------------------------------------------------------------------------------------------------------------------------------------------------

Notación simbólica.

El esquema de notación simbólica se compone de 10 caracteres, donde el primer carácter indica el tipo de fichero:

Valor Descripción
-
Denota un fichero regular.
d
Denota un directorio.
b
Denota un fichero especial como dispositivo de bloque.
c
Denota un fichero de carácter especial
l
Denota un enlace simbólico.
p
Denota una tubería nombrada (FIFO)
s
Denota un zócalo de dominio (socket)

Cada clase de permisos es representada por un conjunto de tres caracteres. El primer conjunto de caracteres representa la clase del usuario, el segundo conjunto de tres caracteres representa la clase del grupo y el tercer conjunto representa la clase de «otros» (resto del mundo). Cada uno de los tres caracteres representa permisos de lectura, escritura y ejecución, respectivamente y en ese orden.

Ejemplos:

Permisos Descripción
drwxr-xr-x
Directorio con permiso 755
crw-rw-r--
Fichero de carácter especial con permiso 664.
srwxrwxr-x
Zócalo con permiso 775.
prw-rw-r--
Tubería (FIFO) con permiso 664.
-rw-r--r--
Fichero regular con permiso 644.

Notación octal.

La notación octal consiste de valores de tres a cuatro dígitos en base-8. Con la notación octal de tres dígitos cada número representa un componente diferente de permisos a establecer: clase de usuario, clase de grupo y clase de «otros» (resto del mundo) respectivamente. Cada uno de estos dígitos es la suma de sus bits que lo componen (en el sistema numeral binario). Como resultado, bits específicos se añaden a la suma conforme son representados por un numeral:

  • El Bit de ejecución añade 1 a la suma.
  • El bit de escritura añade 2 a la suma
  • El bit de lectura añade 4 a la suma.

Estos valores nunca producen combinaciones ambiguas y cada una representa un conjunto de permisos específicos. De modo tal puede considerarse la siguiente tabla:

Valor Permiso Decripción
0
-
Nada
1
x
Ejecución
2
w
Escritura
3
wx
Escritura y ejecución
4
r
Lectura
5
rx
Lectura y Ejecución
6
rw
Lectura y Escritura
7
rwx
Lectura, Escritura y Ejecución

Note que el 3 (wx) es el resultado de 1+2 (w+x). Note que 5 (rx) es el resultado de 4+1 (r+x). Note que 6 (rw) es el resultado de 4+2 (r+w). Note que 7 (rwx) es el resultado de 4+3 (r+xw).

Permisos adicionales.

Hay una forma de cuatro dígitos. Bajo este esquema el estándar de tres dígitos descrito arriba se convierte en los últimos tres dígitos del conjunto. El primer dígito representa permisos adicionales. En sistemas y programática donde no puede ser omitido este primer dígito del conjunto de cuatro, se establece cero como valor de éste.

El primer dígito del conjunto de cuatro es también la suma de sus bits que le componen:

  1. El bit pegajoso (sticky bit) añade 1 al total de la suma.
  2. El bit setgid añade 2 al total de la suma.
  3. El bit setuid añade 4 al total de la suma.

El permiso SUID o bit setuid hace que cuando se ha establecido ejecución, el proceso resultante asumirá la identidad del usuario dado en la clase de usuario (propietario del elemento).

El permiso SGID o bit setgid hace que cuando se ha establecido ejecución, el proceso resultante asumirá la identidad del grupo dado en la clase de grupo (propietario del elemento). Cuando setgid ha sido aplicado a un directorio, todos los nuevos ficheros creados debajo de este directorio heredarán el grupo propietario de este mismo directorio. Cuando no se ha establecido setgid, el comportamiento predefinido es asignar el grupo del usuario al crear nuevos elementos.

El bit pegajoso (sticky bit) significa que un usuario solo podrá modificar y eliminar ficheros y directorios subordinados dentro de un directorio que le pertenezca. En ausencia del bit pegajoso (sticky bit) se aplican las reglas generales y el derecho de acceso de escritura por si solo permite al usuario crear, modificar y eliminar ficheros y directorios subordinados dentro de un directorio. Los directorios a los cuales se les ha establecido bit pegajoso restringen las modificaciones de los usuarios a solo adjuntar contenido, manteniendo control total sobre sus propios ficheros y pueden crear nuevos ficheros; sin embargo, solo pueden adjuntar o añadir contenido a los ficheros de otros usuarios. El bit pegajoso (sticky bit) es utilizado en directorios como /tmp y /var/spool/mail.

De modo tal puede considerarse la siguiente tabla:

Valor Permiso Descripción
1
--- --- --t
bit pegajoso
2
--- --s ---
bit setgid
3
--- --s --t
bit pegajoso + bit setgid
4
--s --- ---
bit setuid
5
--s --- --t
bit setuid + bit pegajoso
6
--s --s ---
bit setuid + bit setgid
7
--s --s --t
bit setuid + bit setgid + bit pegajoso

Cuando un fichero no tiene permisos de ejecución en alguna de las clases y se le es asignado un permiso especial, éste se representa con una letra mayúscula.

Permiso Clase Ejecuta No ejecuta
setuid
Usuario
s
S
setgid
Grupo
s
S
pegajoso (sticky)
Otros
t
T

Ejemplos.

Ejemplos permisos regulares.

Permiso Clase de Usuario Clase de Grupo Clase de Otros
0400
r--
---
---
0440
r--
r--
---
0444
r--
r--
r--
0500
r-x
---
---
0550
r-x
r-x
---
0555
r-x
r-x
r-x
0644
rw-
r--
r--
0664
rw-
rw-
r--
0666
rw-
rw-
rw-
0700
rwx
---
---
0711
rwx
--x
--x
0707
rwx
---
rwx
0750
rwx
r-x
---
0755
rwx
r-x
r-x
0777
rwx
rwx
rwx

Ejemplos permisos especiales.

Permiso Clase de Usuario Clase de Grupo Clase de Otros
1644
rw-
r--
r-T
2644
rw-
r-S
r--
3644
rw-
r-S
r-T
4644
rwS
r--
r--
5644
rwS
r--
r-T
6644
rwS
r-S
r--
7644
rwS
r-S
r-T
1777
rwx
rwx
rwt
2755
rwx
r-s
r-x
3755
rwx
r-s
r-t
4755
rws
r-x
r-x
5755
rws
r-x
r-t
6755
rws
r-s
r-x
7755
rws
r-s
r-t

Uso de chmod.

chmod [opciones] modo fichero

Ejemplo:

mkdir -p ~/tmp/
touch ~/tmp/algo.txt
ls -l ~/tmp/algo.txt
chmod 755 ~/tmp/algo.txt
ls -l ~/tmp/algo.txt

Lo anterior debe arrojar una salida similar a la siguiente:

[fulano@localhost ~]$ mkdir -p ~/tmp/
[fulano@localhost ~]$ touch ~/tmp/algo.txt
[fulano@localhost ~]$ ls -l ~/tmp/algo.txt
-rw-rw-r-- 1 fulano fulano 0 mar 2 15:09 /home/fulano/tmp/algo.txt
[fulano@localhost ~]$ chmod 755 ~/tmp/algo.txt
[fulano@localhost ~]$ ls -l ~/tmp/algo.txt
-rwxr-xr-x 1 fulano fulano 0 mar 2 15:09 /home/fulano/tmp/algo.txt
[fulano@localhost ~]$

Opciones de chmod.

Opción Descripción

-R

Cambia permisos de forma descendente en un directorio dado. Es la única opción de los estándares POSIX.

-c

Muestra que ficheros han cambiado recientemente en una ubicación dada

-f

No muestra errores de ficheros o directorios que no se hayan podido cambiar

-v

Descripción detallada de los mensajes generados por el proceso

El mandato chmod y los enlaces simbólicos.

El mandato chmod jamás cambia los permisos de enlaces simbólicos, sin embargo no representa un problema siendo que jamás se utilizan los permisos de los enlaces simbólicos. Si se aplica el mandato chmod sobre un enlace simbólico, se cambiará el permiso del fichero o directorio hacia el cual apunta. Cuando se aplica chmod de forma descendente en un directorio, éste ignora los enlaces simbólicos que pudiera encontrar en el recorrido.

No hay comentarios:

Publicar un comentario