¿Cómo funcionan los permisos de archivos de Linux?
Si ha estado usando Linux por algún tiempo (e incluso OS X) probablemente se haya topado con un error de "permisos". Pero, ¿qué son exactamente y por qué son necesarios o útiles? Echemos un vistazo al interior.
Permisos de usuario
En el pasado, las computadoras eran máquinas enormes que eran increíblemente caras. Para sacar el máximo provecho de ellos, se conectaron múltiples terminales de computadora que permitieron a muchos usuarios hacer sus negocios simultáneamente. El procesamiento y almacenamiento de datos se realizó en la máquina, mientras que los propios terminales eran poco más que un medio para ver e ingresar datos. Si lo piensas bien, es más o menos como accedemos a los datos en la "nube"; mire el sistema de MP3 en la nube de Amazon, Gmail y Dropbox, y notará que mientras los cambios se pueden hacer localmente, todo se almacena de forma remota.
(Imagen: terminal “tonta” Zenith Z-19; crédito: ajmexico)
Para que esto funcione, los usuarios individuales deben tener cuentas. Deben tener una sección del área de almacenamiento asignada a ellos, y se les debe permitir ejecutar comandos y programas. Todos obtienen "permisos de usuario" específicos, que dictan lo que pueden y no pueden hacer, en qué parte del sistema tienen y no tienen acceso, y cuyos archivos pueden y no pueden modificar. Cada usuario también se coloca en varios grupos, que otorgan o restringen el acceso adicional.
Acceso a archivos
En este extraño mundo multiusuario, ya hemos establecido límites en cuanto a lo que los usuarios pueden hacer. Pero ¿qué pasa con lo que acceden? Bueno, cada archivo tiene un conjunto de permisos y un propietario. La designación del propietario, que normalmente se vincula cuando se crea el archivo, declara a qué usuario pertenece y solo ese usuario puede alterar sus permisos de acceso.
En el mundo de Linux, los permisos se dividen en tres categorías: leer, escribir y ejecutar. El acceso de "lectura" permite ver el contenido de un archivo, el acceso de "escritura" permite modificar el contenido de un archivo y "ejecutar" permite ejecutar un conjunto de instrucciones, como un script o un programa. Cada una de estas categorías se aplica a diferentes clases: usuario, grupo y mundo. "Usuario" significa el propietario, "grupo" significa cualquier usuario que esté en el mismo grupo que el propietario, y "mundo" significa cualquiera y todos.
Las carpetas también se pueden restringir con estos permisos. Por ejemplo, puede permitir que otras personas de su grupo vean directorios y archivos en su carpeta de inicio, pero no a nadie fuera de su grupo. Es probable que desees limitar el acceso de "escritura" solo a ti mismo, a menos que estés trabajando en un proyecto compartido de algún tipo. También puede crear un directorio compartido que permita a cualquier persona ver y modificar archivos en esa carpeta..
Cambiando permisos en Ubuntu
GUI
Para cambiar los permisos de un archivo que posee en Ubuntu, simplemente haga clic derecho en el archivo y vaya a "Propiedades".
Puede cambiar si el Propietario, el Grupo u Otros pueden leer y escribir, solo leer o no hacer nada. También puede marcar una casilla para permitir la ejecución del archivo, y esto lo habilitará para el propietario, el grupo y otros simultáneamente..
Línea de comando
También puede hacerlo a través de la línea de comandos. Vaya a un directorio que tenga archivos y escriba el siguiente comando para ver todos los archivos en una lista:
ls -al
Junto a cada archivo y directorio, verá una sección especial que describe los permisos que tiene. Se parece a esto:
-rwxrw-r-
los r significa "leer", el w significa "escribir", y la X significa "ejecutar". Los directorios comenzarán con una "d" en lugar de una "-". También notarás que hay 10 espacios que tienen valor. Puede ignorar el primero, y luego hay 3 conjuntos de 3. El primer conjunto es para el propietario, el segundo conjunto es para el grupo y el último conjunto es para el mundo.
Para cambiar los permisos de un archivo o directorio, veamos la forma básica del comando chmod.
chmod [clase] [operador] [permiso] archivo
chmod [ugoa] [+ o -] [rwx] archivo
Esto puede parecer complicado al principio, pero créeme, es bastante fácil. Primero, echemos un vistazo a las clases:
- u: esto es para el dueño.
- g: esto es para el grupo.
- o: esto es para todos los demas.
- a: Esto cambiará los permisos para todos los anteriores.
A continuación, los operadores:
- +: El signo más agregará los permisos que siguen.
- -: El signo menos eliminará los permisos que siguen.
¿Aún conmigo? Y la última sección es la misma que cuando verificamos los permisos de un archivo:
- r: Permite el acceso de lectura.
- w: Permite el acceso de escritura.
- x: permite la ejecución.
Ahora, vamos a ponerlo juntos. Digamos que tenemos un archivo llamado "todo.txt" que tiene los siguientes permisos:
-rw-rw-r-
Es decir, el propietario y el grupo pueden leer y escribir, y el mundo solo puede leer. Queremos cambiar los permisos a estos:
-rwxr-
Es decir, el propietario tiene permisos completos y el grupo puede leer. Podemos hacer esto en 3 pasos. Primero, agregaremos el permiso de ejecución para el usuario..
chmod u + x todo.txt
Luego, eliminaremos el permiso de escritura para el grupo..
chmod g-w todo.txt
Por último, eliminaremos los permisos de lectura de todos los demás usuarios..
chmod o-r todo.txt
También podemos combinarlos en un solo comando, así:
chmod u + x, g-w, o-r todo.txt
Puedes ver que cada sección está separada por comas y no hay espacios..
Aquí hay algunos permisos útiles:
- -rwxr-xr-x: el propietario tiene permisos completos, el grupo y otros usuarios pueden leer el contenido del archivo y ejecutar.
- -rwxr-r-: el propietario tiene permisos completos, el grupo y otros usuarios solo pueden leer archivos (útil si no le importa que otros vean sus archivos).
- -rwx-: el propietario tiene permisos completos, todos los demás no tienen ninguno (útil para scripts personales).
- -rw-rw--: el propietario y el grupo pueden leer y escribir (útil para la colaboración con los miembros del grupo).
- -rw-r-r-: el propietario puede leer y escribir, el grupo y otros usuarios solo pueden leer archivos (útil para almacenar archivos personales en una red compartida).
- -rw--: el propietario puede leer y escribir, todos los demás no tienen ninguno (útil para almacenar archivos personales).
Hay algunas otras cosas que puedes hacer con chmod, como setuid y setgid, pero son un poco profundas y la mayoría de los usuarios no necesitarán usarlas de todos modos..
La raíz o el superusuario y los archivos del sistema
Hoy en día, no siempre ejecutamos sistemas que tienen múltiples usuarios. ¿Por qué deberíamos preocuparnos por los permisos??
Bueno, Unix y sus derivados (Linux, OS X, entre otros) también distinguen entre las cosas que ejecuta el usuario, las que ejecuta un administrador o con privilegios de administrador y las que ejecuta el propio sistema. Como tal, las cosas que son integrales para el sistema necesitan privilegios de administrador para ser cambiados o accedidos. De esta manera, no arruines nada accidentalmente..
En Ubuntu, para realizar cambios en los archivos del sistema, utilice "sudo" o "gksudo" para obtener el equivalente de privilegios de administrador. En otras distribuciones, cambia a "root" o al "superusuario" que efectivamente hace lo mismo hasta que cierre la sesión.
Tenga en cuenta que en estas dos circunstancias, cambiar los permisos de los archivos puede hacer que los programas no funcionen, cambiar involuntariamente la propiedad de los archivos al usuario root (en lugar del propietario) y hacer que el sistema sea menos seguro (otorgando más permisos). Como tal, se recomienda que no cambie los permisos para los archivos, especialmente los archivos del sistema, a menos que sea necesario o sepa lo que está haciendo..
Los permisos de archivo están en su lugar para proporcionar un sistema básico de seguridad entre los usuarios. Aprender cómo funcionan puede ayudarlo a configurar el uso compartido básico en un entorno de múltiples usuarios, proteger archivos "públicos" y darle una pista de cuándo algo falla con la propiedad del archivo del sistema..
¿Crees que puedes explicar las cosas más fácil? ¿Tienes una corrección? ¿Quieres rememorar los viejos tiempos? Tómate un descanso y deja tus pensamientos en los comentarios..