En Linux tenemos la posibilidad de gestionar permisos tanto para archivos como para directorios, estos se interpretan de forma distinta en cada caso.
En el caso de ficheros, la lectura está asociada a ver su contenido, la escritura a modificar, agregar o borrar contenido, y la ejecución a que esté permitido desde el sistema operativo que lo utiliza, ejecutarlo.
En el caso de directorios, la lectura está asociada a ver qué ficheros contiene, la escritura está asociada a crear y borrar ficheros/directorios y la ejecución está asociada a que no pueda ser revisado por un comando (como ser ls).
Cuando hablamos de permisos tenemos que saber identificar cual es el privilegio y a quien va dirigido el mismo, el comando a utilizar es chmod.
Los posibles privilegios son:
- Lectura (identificado con la letra r).
- Escritura (identificado con la letra w).
- Ejecución (identificado con la letra x).
¿A quién podemos dirigir estos 3 atributos?
Usuario, identificado con u
- Es la persona que ha creado el archivo o directorio.
Grupos, identificado con g
- Es un grupo de usuarios que nosotros generamos previamente, el cual puede tener determinados users asignados.
Otros, identificado con o
- Otros usuarios, que no son el propietario y es indiferente en que grupos estén.
Para visualizar que permisos tiene un fichero o directorio, podemos usar el comando:
ls -l /home/filenotfound/fichero.txt

De esta forma podemos ver quién es el propietario del fichero, en qué fecha se creó y que permisos tiene, que según esa imagen, usuario tiene lectura y escritura, grupo/otros tienen solo lectura.
Existen dos formas de cambiar permisos con chmod, independientemente de cual usemos la sintaxis se basa en la siguiente:
chmod [permisos] [ruta al fichero o directorio]
Entonces si nosotros deseamos agregarle permisos de lectura y escritura al grupo sería de esta forma:
chmod g+rw /home/filenotfound/fichero.txt
Por otra parte si queremos agregar o quitar permisos indistintamente de a que usuario:
chmod +x /home/filenotfound/fichero.txt
chmod –rw /home/filenotfound/fichero.txt
También podemos concatenar distintos cambios de permisos en un solo comando de esta forma:
chmod g-w,u+rx,o+x /home/filenotfound/fichero.txt
Permisos con números Octales
La otra forma de gestionar permisos, es por medio de números octales, quizá más práctica si la dominamos.
La representación octal de los permisos funciona teniendo como máximo el valor 7 y como mínimo el valor 0.
- La lectura esta simbolizada por el valor 4.
- La escritura esta simbolizada por el valor 2.
- La ejecución esta simbolizada por el valor 1.
Nosotros tendremos 3 números octales, cada uno representa usuario, grupos y otros, que deben ingresarse en el chmod obligatoriamente, sobrescribiendo los permisos anteriores, un ejemplo sería así:
chmod 777 /home/filenotfound/fichero.txt
Bajo este octal damos rwx a todos los usuarios (poco recomendable).
Un octal más prudente podría ser:
chmod 755 /home/filenotfound/fichero.txt
- 7 = lectura (4) + escritura (2) + ejecución (1)
- 5 = lectura (4) + ejecución (1)
- 5 = lectura (4) + ejecución (1)
Podemos quitar permisos de esta forma:
chmod 000 /home/filenotfound/fichero.txt
De esta forma nadie tendrá ningún permiso de nada.
Ahora antes de terminar este post debemos resolver unas interrogantes importantes que son:
- ¿Cómo seteo el propietario de un fichero después de que se creó?
- ¿De que forma gestiono un grupo de usuarios?
- ¿Cómo asigno permisos de forma masiva a todos los ficheros de un directorio?
Cambiando de propietario un fichero que ya fue creado
Para cambiar de propietario un fichero debemos ejecutar el siguiente comando:
chown filenotfound /home/filenotfound/fichero.txt
El usuario (en este caso filenotfound) debe existir, y de esta forma los permisos que apunten a Usuario, van a ir dirigidos a filenotfound en este contexto.
Como gestionar un grupo de usuarios
Primero que nada debemos saber añadir usuarios a nuestro sistema:
adduser nombreUser
Para agregar un grupo al sistema:
addgroup nombreGrupo
Para agregar un usuario existente a un grupo que también existe debemos hacer lo siguiente:
adduser nombreUser nombreGrupo
Como asignar mismos permisos de forma masiva a muchos ficheros
Con la opción –R (viene de recursive), nosotros generamos permisos para todos los ficheros que estén dentro del directorio especificado.
chmod 755 –R /home/filenotfound