domingo, 14 de abril de 2019

Permisos en archivos - Parte 02


Permisos Especiales


En linux, existen algunos permisos especiales que podemos establecer sobre los archivos o carpetas. Veamos algunos de ellos


Setuid y Setgid – Nos sirven para poder ejecutar un comando como el usuario o el grupo dueño del archivo y no como el usuario que ejecuta el comando . Esto se logra modificando un bit en los permisos de las archivos mediante la aplicación de alguno de los siguientes permisos mediante el método simbólico:
u+s (suid)
[javier@localhost ~]$ ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27880 ago 4 2017 /usr/bin/passwd
g+s (sgid)


Como se puede observar en el resultado de listar los permisos del archivo passwd vemos una letra ‘s’ en lugar del permiso de ejecución. Esto nos dice que tenemos habilitado el setuid
El comando g+s puede aplicarse también a directorios para que los archivos creados en éstos directorios hereden los permisos de grupo del directorio en lugar de los permisos de grupo del usuario que los crea.
Siticky bit: Se aplica solo a directorios para que solamente el owner de los archivos en el directorio y root puedan eliminar esos archivos.
o+t (sticky)
javier@localhost ~]$ ls -ld /tmp/
drwxrwxrwt. 16 root root 380 abr 14 11:53 /tmp/


Se había mencionado que con el método númerico mediante tres bits podíamos establecer los permisos de un archivo. Por ejemplo un chmod 777 nos da permisos de lectura, escritura y ejecución a usuario, grupo y otros
Existe un cuarto bit que se antepone a los otros 3 y nos permite establecer mediante el método númerico los permisos especiales setuid, setgid y sticky tomando en cuenta lo siguiente:


setuid = 4
setgid = 2
sticky = 1


Esto quiere dejecir que también podríamos ejecutar un chmod de la siguiente forma:
chmod 2770 dir1 <- Tenemos permisos de r,w,x para el owner, r,w,x para el grutpo, sin permisos para otros y establecimos el setgid al dejar en 2 el primer bit.
Cuando creamos un archivo, estos archivos se crean con ciertos permisos por default. Por ejemplo:

javier@localhost ~]$ touch test.txt
[javier@localhost ~]$ ll test.txt
-rw-rw-r--. 1 javier javier 0 abr 14 12:24 test.txt

Como podemos ver, en el ejemplo anterior, por default se generaron permisos 664 a este archivo. Si quisieramos que cada que creemos un archivo durante una sesión los permisos default para estos nuevos archivos fueran distintos podemos utilizar el comando umask
Si validamos el valor que tenemos por default en umask seguramente nos encontraremos algo como:

[javier@localhost ~]$ umask
0002

Primero debemos entender que por default no se dan permisos de ejecución a ningún archivo creado solo permisos de lecutra o de escritura. Lo que el 2 significa en el 4to bit (el de otros) es que tampoco daremos permisos de escritura (2) a “otros” cuando creamos un archivo. Es decir umask nos sirve para negar por default ciertos permisos
Como se comentó, los cambios que realicemos con umask solamente aplicarán durante la sesión en turno. Cuando hagamos logout se volverá a los permisos default.

Ejemplo:
umask 007 <- Los archivos creados no tendrán permisos de r,w para otros

Una consideración a tomar en cuenta es que al contrario de los archivos los directorios siempre se crean con permisos de ejecución para usuario, grupo y otros para que podamos ejecutar el comando cd sobre ellos.
Si quisieramos modificar de forma permantente los permisos default de los archivos recién creados lo tendremos que hacer modificando el archivo /etc/bashrc y /etc/profile



No hay comentarios:

Publicar un comentario

Servicios y Demonios

Un demonio es un procesos que corre en el background para realizar un servicios. Generalmente se lanzan desde el inicio de...