Permisos en Linux
No sé porqué, pero a la gente que empieza con linux siempre se le atascan los permisos. En Linux, y en cualquier UNIX un fichero/directorio tiene un dueño (owner) y pertenece a un grupo, para la interacción con los usuarios que no sean ni el dueño ni pertenezcan al grupo que posee el objeto en cuestión entran en juego los permisos de otros (others).
Cuando hacemos un ls por cada archivo/directorio que tenemos obtenemos algo así:
-rw-r–r– 1 nico equipaje 0 ene 6 11:49 file.dat
Lo primero que vemos es el tipo de fichero (-) los posibles son los siguientes:
- “-” -> fichero normal
- “d” -> directorio
- “l” -> enlace simbólico
- “s” -> UNIX socket
- “p” -> pipe/tubería
- “c” -> character special file (no se me ocurre una traducción aceptable para esto)
- “b” -> block special file
A continuación está la representación simbólica de los permisos (rw-r–r–), los 3 primeros (rw-) son los permisos de usuario, el segundo bloque de 3 (r–) representa los permisos del grupo y el último bloque (r–) son los permisos de otros usuarios. Los posibles permisos son los siguientes:
- r -> lectura (Read)
- w -> escritura (Write)
- x -> ejecución en ficheros, búsqueda en directorios (eXecution)
- s -> setuid con ejecución/búsqueda. Si un achivo ejecutable tiene el bit setuid activo, se ejecutará con los permisos efectivos del dueño del fichero, en vez de usar los permisos de quien ejecuta el archivo.
- S -> setuid sin ejecución/búsqueda
- t -> pegajoso (sticky) con ejecución/búsqueda. Un directorio pegajoso es un directorio append-only, es decir, los usuarios pueden añadir ficheros nuevos pero no pueden borrar ni renombrar los archivos existentes.
- T -> pegajoso sin ejecución/búsqueda.
A partir de eso, podemos ver que el dueño del fichero (nico) file.dat puede leer y escribir en el fichero, el grupo equipaje podrá leer el fichero y el resto de usuario también podrá leer el fichero.
El siguiente dato que se puede ver es el propietario del archivo (nico) seguido del grupo (equipaje).
Ahora que ya sabemos para que valen las letritas.. ¿cómo modificamos los permisos? chown permite modificar el propietario del fichero, ejemplo: “chown root file.dat” haría a root propietario del archivo file.dat. chgrp nos permite cambiar el grupo del fichero, ejemplo: “chgrp users file.dat” otorgaría al grupo users el fichero file.dat
Los permisos se modifican con el comando chmod. chmod nos permite representar los permisos de dos formas, utilizando la notación simbólica explicada anteriormente o mediante notación octal (0-7). La notación octal utiliza un dígito de 0 a 7 para cada bloque de permisos, así “chmod 0755 file.dat” el 7 afecta a los permisos del propietario, el primer 5 a los permisos de grupo y el segundo 5 a los permisos de otros usuarios.
El significado de los numeritos es el siguiente:
- 0 -> sin permisos
- 1 -> ejecución (–x)
- 2 -> escritura (-w-)
- 3 -> escritura y ejecución (-wx)
- 4 -> lectura (r–)
- 5 -> lectura y ejecución (r-x)
- 6 -> lectura y escritura (rw-)
- 7 -> lectura, escritura y ejecución (rwx)
Como buenos observadores, habréis visto que faltan los permisos de sticky y setuid, para eso se usa el primer dígito:
- 1 -> pegajoso (sticky)
- 2 -> setgid
- 4 -> setuid
Poniendo todo junto, “chmod 1750 file.dat” activaría el bit pegajoso para file dat, daría permisos de lectura, escritura y ejecución al propietario, lectura y ejecución al grupo y ningún permiso a otros. Utilizando notación simbólica los comandos serían: “chmod u+rwx file.dat” para los permisos del propietario, “chmod g+rx-w file.dat” para los del grupo, “chmod o-rwx file.dat” para los permisos de otros y “chmod +t fichero” para activar el bit pegajoso (sticky). De ahí que a la hora de aplicar permisos se utilice la notación octal, por su comodidad.




Enero 6th, 2010 at 5:55 pm
Buen resumen.En mi opinión quedaría más completo si tocases el tema de ACLs.(p.e http://www.suse.de/~agruen/acl/linux-acls/online/ ).
Enero 6th, 2010 at 6:00 pm
Eso va en la 2ª parte
Enero 7th, 2010 at 1:59 pm
[...] Permisos en Linux blog.mundodisco.net/archives/348 por KaRMeGD hace 2 segundos [...]
Enero 9th, 2010 at 8:01 am
[...] » noticia original [...]