Permisos
linux
los permisos de archivo son los permisos que contiene un archivo para el propietario, grupos, y otros, incluso nos dice que tipo de archivo es :
# esta cadena de digitos que representan los permisos es de 10 digitos en total
# al inicio de la cadena :
. o nada : archivo
d : directorio
el orden de los permisos debe ir asi :
rwx
primero r, luego w, y al final x, ese es el orden a seguir
# permisos
r : read
w : escribir
x : ejecutar # la capacidad de ejecutar en directorios es diferente, pues esta ahora se refiere a poder atravesar el directorio
- : el permiso no es existente para la posición en la que esta el guion
# ejemplos :
.rw-r--r--
# se divide facilmente en 3 partes
.rw- | r-- | r--
(p) (g) (o)
primera parte : permisos de propietario
segunda parte : permisos de grupos
ultima parte (tercera) : permisos de otros
las características de propietario y grupo podemos verlas con el ls -l, ejemplo :

en este ejemplo podemos ver que el propietario es root en la carpeta numero uno
en los otros ejemplos es el usuario user y el grupo de usuario user
Asignación de permisos :
ahora que vimos esto podemos entender mejor como asignar los permisos :
chmod o+w prueba.py
# le decimos que, queremos que otros puedan escribir en prube.py
chmod g-w hola.txt
le quitamos el permiso a los grupos de escribir y administrar el archivo de hola.txt
chgrp docker prueba/
# le asignamos el grupo docker a prueba
# tambien podemos asignar varios permisos a la ves
chmod u-s,g-rx,o+w,o-x
# asignacion de propietarios
chown pepe pepe1
# le hemos asignado como propietario a ppe al directorio pepe1
# podemos hacer lo mismo pero asignando tambien un grupo al mismo tiempo
chown juan:root pepe1
# propietario juan y grupo root al directorio pepe1
# asignacion de grupos
usermod -a -G grupoDeAlumnos roberto
# asignamos a roberto en el grupo alumnos
agregando usuarios :
useradd juan -s /bin/bash -d /home/juan
# creamos el usuario juan con iuna shell de bash y su directorio de usuario sera /home/juan
# le asignamos una password
passwd juan
groupadd alumnos
# creamos grupos, en este caso el grupo alumnos
Notación Octal de permisos :

partimos el permiso en 3, ahora lo vamos a convertir a binario y luego a decimal, donde haya una letra ponemos uno, y donde no haya permisos, ósea el guion, ponemos cero
luego indicamos las posiciones del 0 al 2 como se ve ahí en rojo
procedimiento :

Sticky Bit :
El Sticky Bit o bit adhesivo es uno de los permisos especiales de acceso utilizado en ficheros y directorios del entorno Unix y derivados como GNU/Linux. Su objetivo es que solo el usuario creador pueda eliminar o renombrar un archivo en sistemas donde todos los usuarios tienen permisos de lectura y escritura. Además, su activación está representada con la letra T mayúscula en el listado de permisos de un directorio.
Originalmente, este permiso de sticky bit solía utilizarse en dispositivos con poca RAM sobre ficheros ejecutables para indicarle al sistema operativo que debía mantener un determinado programa en SWAP para las siguientes ejecuciones, incluso si estas las realizaban otros usuarios. Sin embargo, debido a la actualización y mejora de los sistemas de almacenamiento, esta labor dejó de ser necesaria, por lo que, en la actualidad, las funciones de Sticky Bit están enfocadas en los directorios y es comúnmente ejecutado sobre ==/tmp
y /var/tmp
==.
Pertenece a los tres tipos de permisos especiales (Sticky Bit, Suid y Sgid) que son configurables en directorios o ficheros. A diferencia de los demás permiso de archivos, el bit de adhesión y los demás permisos de acceso especial no se corresponden con un número octal entre 000 y 777, como sucede con los permisos normales, sino que varían entre 0000 y 7777, siendo Sticky Bit el número 1000.
asignacion del sticky bit :
chmod +t
ejemplo :
# directorio pepe donde estan estos permisos peligrosos
rwxrwxrwx pepe/
# si juan crea un archivo ahi dentro todos lo podran borrar a menos de que le asigne el permiso a su archivo, de igual forma no se podra borrar el directorio gracias a que no se puede borrar el archivo de juan
Chattr y Lsattr :
permisos avanzados de los archivos en sistemas linux
El primer comando, lsattr permite listar los atributos asignados a los ficheros de un sistema de ficheros Linux, mientras que chattr permite modificar dichos atributos, los cuales que utilizamos como complemento al sistema de ACLs (chmod, chown,setfacl…) permitiendo un control más férreo sobre los archivos del filesystem.
uso :
lattr
chattr +i -V myFile
# la "i" es de inmutable y luego esta el verbose.
# al asignar este permiso nisiquiera root podra borrar el archivo
chattr -i -V myFile
# eliminar el permiso
https://programmerclick.com/article/5604675172/ # mas permisos
SUID :
permite ejecutar un archivo como si fueras el propietario
El permiso SUID permite que un archivo se ejecute como si del propietario se tratase, independientemente del usuario que lo ejecute, el archivo se ejecutará como el propietario. Ejemplo:
asignar los permisos SUID
# ejemplo :
chmod u+s
chmod 4numero_del_permiso
# enumerar archivos con SUID
find / -type f -perm 4000 2>/dev/null
SGID :
El permiso SGID está relacionado con los grupos, tiene dos funciones:
Si se establece en un archivo, permite que cualquier usuario ejecute el archivo como si fuese miembro del grupo al que pertenece el archivo.
Si se establece en un directorio, a cualquier archivo creado en el directorio se le asignará como grupo perteneciente, el grupo del directorio.
chmod g+s
chmod 2_numero_del_permiso
# enumerar archivos con SGID
find / -type f -perm 2000 2>/dev/null
Capabilities :
En Linux, las capabilities (capacidades) son un mecanismo de control de permisos que permite asignar permisos más granulares a procesos específicos, sin tener que darles privilegios completos de root (superusuario). En lugar de otorgar todos los privilegios de root, un proceso puede recibir solo las capacidades necesarias para realizar una tarea específica, mejorando así la seguridad del sistema.
# enumerar capabilities en el sistema
getcap -r / 2>/dev/null
setcap # agregar una capabilitie
setcap -r # eliminar una capabilitie
getcap file.txt # listar las capabilities de un archivo especifico
Last updated