Está en la página 1de 9

Tipos de permisos en GNU/Linux

Antes de aprender cómo se establecen los permisos en GNU/Linux, debemos saber


cómo se pueden diferenciar los diferentes tipos de archivos que el sistema puede tener.
Cada archivo en GNU/Linux queda identificado por 10 caracteres mismos a los que se
les denomina máscara. De estos 10 caracteres, el primero (de izquierda a derecha) hace
referencia al tipo de archivo. Los 9 siguientes, de izquierda a derecha y en bloques de 3,
hacen referencia a los permisos que se le conceden, respectivamente, al propietario, al
grupo y al resto u otros. Una captura para demostrar todo este rollo:

El primer carácter de los archivos puede ser el siguiente:

Permiso Identifica

– Archivo

d Directorio

b Archivo de bloques especiales (Archivos especiales de dispositivo)

c Archivo de caracteres especiales (Dispositivo tty, impresora…)

l Archivo de vinculo o enlace (soft/symbolic link)

p Archivo especial de cauce (pipe o tubería)

 
Los siguientes nueve caracteres son los permisos que se les concede a los usuarios del
sistema. Cada tres caracteres, se referencian los permisos de propietario, grupo y resto
de usuarios.
Los caracteres que definen estos permisos son los siguientes:

Permiso Identifica

– Sin permiso

r Permiso de lectura

w Permiso de escritura

x Permiso de ejecución

 
Permisos para archivos
<° Lectura: permite, fundamentalmente, visualizar el contenido del archivo.
<° Escritura: permite modificar el contenido del archivo.
<° Ejecución: permite ejecutar el archivo como si de un programa ejecutable se tratase.
Permisos para directorios
<° Lectura: Permite saber qué archivos y directorios contiene el directorio que tiene este
permiso.
<° Escritura: permite crear archivos en el directorio, bien sean archivos ordinarios o
nuevos directorios. Se pueden borrar directorios, copiar archivos en el directorio,
mover, cambiar el nombre, etc.
<° Ejecución: permite situarse sobre el directorio para poder examinar su contenido,
copiar archivos de o hacia él. Si además se dispone de los permisos de escritura y
lectura, se podrán realizar todas las operaciones posibles sobre archivos y directorios.
Nota: Si no se dispone del permiso de ejecución, no podremos acceder a dicho
directorio (aunque utilicemos el comando “cd”), ya que esta acción será denegada.
También permite delimitar el uso de un directorio como parte de una ruta (como cuando
pasamos la ruta de un archivo que se encuentra en dicho directorio como referencia.
Supongamos que queremos copiar el archivo “X.ogg” el cual se encuentra en la carpeta
“/home/perseo/Z” -para lo cual la carpeta “Z” no tiene permiso de ejecución-, haríamos
lo siguiente:
$ cp /home/perseo/Z/X.ogg /home/perseo/Y/
obteniendo con esto un mensaje de error diciéndonos que no tenemos los permisos
suficientes para acceder al archivo :D). Si el permiso de ejecución de un directorio está
desactivado, se podrá ver su contenido (si se cuenta con permiso de lectura), pero no se
podrá acceder a ninguno de los objetos contenidos en él, pues para ello este directorio es
parte del camino necesario para resolver la ubicación de sus objetos.
Gestión de permisos en GNU/Linux
Hasta ahora, hemos visto para que nos sirven los permisos en GNU/Linux, a
continuación, veremos cómo asignar o restar permisos o derechos.
Antes de comenzar, debemos de tener en cuenta que cuando damos de alta o creamos un
usuario en el sistema, le concedemos de forma automática unos privilegios. Estos
privilegios, por supuesto, no serán totales, es decir, los usuarios no dispondrán,
normalmente, de los mismos permisos y derechos del superusuario. Cuando el usuario
se crea, el sistema genera por defecto los privilegios del usuario para manejo de
archivos y para manejo de directorios. Evidentemente, éstos pueden ser modificados por
el administrador, pero el sistema genera unos privilegios más o menos válidos para la
mayoría de las operaciones que cada usuario realizará sobre su directorio, sus archivos y
sobre los directorios y archivos del resto de usuarios. Por lo general, son los siguientes
permisos:
<° Para archivos: – rw- r-– r-–
<° Para directorios: – rwx rwx rwx
Nota: no son los mismos permisos para todas las distribuciones de GNU/Linux.
Estos privilegios nos permiten crear, copiar y borrar archivos, crear nuevos directorios,
etc. Veamos en la práctica todo esto :D:

Tomemos como ejemplo el archivo “CSS Avanzado.pdf”. Observemos que aparece de


la siguiente manera: –rw-r-–r-– … CSS Avanzado.pdf. Miremos más a fondo.

Resto de usuarios Nombre del


Tipo Usuario Grupo
(otros) archivo
– rw- r-– r-– CSS Avanzado.pdf

 
Esto significa que:
<° Tipo: Archivo
<° El usuario puede: Leer (visualizar el contenido) y escribir (modificar) el archivo.
<° El grupo al que pertenece el usuario puede: Leer (únicamente) el archivo.
<° Otros usuarios pueden: Leer (únicamente) el archivo.
Para aquellos curiosos que se están preguntando en estos momentos a que se refieren los
otros campos del listado obtenido por ls -l, aquí la respuesta:

Si desean saber más acerca de los hard y soft/symbolic links, aquí la explicación y
sus diferencias.
Bueno amigos, llegamos a la parte más interesante y pesada del tema en cuestión…
Asignación de permisos
El comando chmod («change mode») permite modificar la máscara para que se puedan
realizar más o menos operaciones sobre archivos o directorios, dicho de otra forma, con
chmod puedes quitar o eliminar derechos a cada tipo de usuarios. Si no se especifica el
tipo de usuario al que queremos quitar, poner o asignar privilegios, lo que sucederá al
realizar la operación es afectar a todos los usuarios simultáneamente.
Lo básico que hay que recordar es que le demos dar o quitar permisos en estos niveles:

Parámetro Nivel Descripción

u dueño dueño del archivo o directorio

g grupo grupo al que pertenece el archivo


todos los demás usuarios que no son el dueño ni del
o otros
grupo

 
Tipos de permiso:

Permiso Identifica

r Permiso de lectura

w Permiso de escritura

x Permiso de ejecución

 
 Dar permiso de ejecución al dueño:
$ chmod u+x komodo.sh
Quitar permiso de ejecución a todos los usuarios:
$ chmod -x komodo.sh
Dar permiso de lectura y escritura a los demás usuarios:
$ chmod o+r+w komodo.sh
Dejar solo permiso de lectura al grupo al que pertenece el archivo:
$ chmod g+r-w-x komodo.sh
Permisos en formato numérico octal
Hay otra forma de utilizar el comando chmod que, para muchos usuarios, resulta “más
cómoda”, aunque a priori sea algo más compleja de entender ¬¬.
La combinación de valores de cada grupo de los usuarios forma un número octal, el bit
“x” es 20 es decir 1, el bit w es 21 es decir 2, el bit r es 22 es decir 4, tenemos entonces:
<° r  =  4
<° w  =  2
<° x  =  1
La combinación de bits encendidos o apagados en cada grupo da ocho posibles
combinaciones de valores, es decir la suma de los bits encendidos:

Valor
Permiso Descripción
Octal

– – – 0 no se tiene ningún permiso

– – x 1 solo permiso de ejecución

–w– 2 solo permiso de escritura

–wx 3 permisos de escritura y ejecución

r – – 4 solo permiso de lectura

r – x 5 permisos de lectura y ejecución

rw– 6 permisos de lectura y escritura

todos los permisos establecidos, lectura, escritura y


rwx 7
ejecución

Cuando se combinan los permisos del usuario, grupo y otros, se obtienen un número de
tres cifras que conforman los permisos del archivo o del directorio. Ejemplos:

Permiso Valor Descripción


rw– ––– –
600 El propietario tiene permisos de lectura y escritura

rwx ––x El propietario lectura, escritura y ejecución, el grupo y


711
––x otros solo ejecución

rwx r-x r- El propietario lectura, escritura y ejecución, el grupo y


755
x otros pueden leer y ejecutar el archivo

rwx rwx El archivo puede ser leído, escrito y ejecutado por quien
777
rwx sea

Solo el propietario puede leer el archivo, pero ni el


r–– ––– –
400 mismo puede modificarlo o ejecutarlo y por supuesto ni

el grupo ni otros pueden hacer nada en el

rw- El usuario propietario puede leer y escribir, el grupo


640
r-– ––– puede leer el archivo y otros no pueden hacer nada

 
Permisos especiales
Aún hay otro tipo de permisos que hay que considerar. Se trata del bit de permisos
SUID (Set User ID), el bit de permisos SGID (Set Group ID) y el bit de permisos de
persistencia (sticky bit).
setuid
El bit setuid es asignable a ficheros ejecutables, y permite que cuando un usuario
ejecute dicho fichero, el proceso adquiera los permisos del propietario del fichero
ejecutado. El ejemplo más claro de fichero ejecutable y con el bit setuid es:
$ su
Podemos ver que el bit está asignado como “s” en la siguiente captura:
Para asignar este bit a un fichero seria:
$ chmod u+s /bin/su
Y para quitarlo:
$ chmod u-s /bin/su
Nota: Debemos utilizar este bit con extremo cuidado ya que puede provocar una
escalada de privilegios en nuestro sistema ¬¬.
setgid
El bit setid permite adquirir los privilegios del grupo asignado al fichero, también es
asignable a directorios. Esto será muy útil cuando varios usuarios de un mismo grupo
necesiten trabajar con recursos dentro de un mismo directorio.
Para asignar este bit hacemos lo siguiente:
$ chmod g+s /carpeta_compartida
Y para quitarlo:
$ chmod g-s /carpeta_compartida
sticky
Este bit suele asignarse en directorios a los que todos los usuarios tienen acceso, y
permite evitar que un usuario pueda borrar ficheros/directorios de otro usuario dentro de
ese directorio, ya que todos tienen permiso de escritura.
Podemos ver que el bit está asignado como “t” en la siguiente captura:
Para asignar este bit hacemos lo siguiente:
$ chmod o+t /tmp
Y para quitarlo:
$ chmod o-t /tmp
Bueno amigos, ahora ya saben cómo proteger de mejor manera su información, con esto
espero que dejen de buscar alternativas para Folder Lock o Folder Guard que en
GNU/Linux no los necesitamos para nada XD.

También podría gustarte