miércoles, 19 de diciembre de 2007

Diferentes permisos a diferentes usuarios

Cómo funcionan los permisos

Linux maneja los permisos de la siguiente forma:

Lectura (r): Permite al usuario visualizar el archivo.
Escritura (w): Permite al usuario editar el archivo.
Ejecución (x): Permite entrar al directorio ó ejecutar el archivo. Muy útil para scritps en bash, awk, c, java, php, python cuando el archivo es el propio código.

Y luego a quién van dirigidos:

Usuario (u): El propietario del archivo.
Grupo (g): El grupo al que pertenece el archivo.
Resto (o): Los demás.

Dar/quitar permisos

Por consola, la función chmod funciona:
chmod {u, g, o, a} {+, -, =} {r, w, x} Nombre del archivo

a  todos (u, g & o) ; + dar permisos ; - quitar permisos ; = por defecto

Hay otra forma de dar permisos (numérica):
Suponemos tres números que dan los permisos u g o, y Suponemos rwx 3 bits, con lógica positiva (activado=1). El número (en octal) resultante serán, en orden, los permisos del archivo, así 751 significa: u +rwx, g +rx, o +x.

El comando se usaría: chmod 751 Archivo

Más información: man chmod

Establecer usuario

Por consola, la función chown (change own er) funciona: chown usuario:grupo Nombre del archivo

Es importante, para que los permisos u surtan efecto, sobretodo si el archivo ha sido copiado por root u otro usuario.


Otros comandos relacionados

Los principales: chmod, chown, chgrp (cambia el grupo al que pertenece el archivo).

Otros: sudo groupadd, sudo groupdel, sudo adduser, sudo userdel, passwd.

Para ver su funcionamiento: man <comando>

Diferentes permisos a diferentes usuarios

Este post tiene su origen en LinuxParaSeresHumanos.com donde Gerard tenía el siguiente problema:

«Tengo los usuarios: ana, bea, cris, dora, eva y fani. Quiero que ana y bea tengan permiso 'rw' sobre un fichero. cris y dora de 'r', y que eva y fani no puedan acceder. ¿como dejo los permisos?»

Solución a un caso ligeramente más trivial
Éste no es un problema trivial, pues hay varios usuarios en varios grupos. Si fuera más trivial (no estuviera ana), a bea lo ponemos como propietario y le damos permisos u +rw; en cuanto a cris y dora con permiso r se podría crear un grupo (y hacerlas pertenecer a él), al archivo se le diría el grupo y los permisos g +r. Bastaría con poner los permisos 750. Le pondríamos un enlace a los interesados y punto.

Solución más elegante al problema de Gerard
Existe a través de la consola un comando para hacer enlaces: ln. Lo más normal es crear enlaces simbólicos ln -s ó ln --symbolic, pero por defecto este comando crea enlaces duros (hard links). El archivo creado no direcciona a otro archivo, sino directamente a su lugar en el disco duro. Ésto es propio únicamente de sistemas UNIX. Sólo cuando todos los enlaces duros se borran se habrá borrado el archivo, mientras los cambios se reflejarán por igual. Aparentemente son dos archivos diferentes*, internamente es el mismo archivo.

*Usaremos ésta ventaja para dar solución a Gerard, pues daremos diferentes permisos a cada archivo.

Como root:
#cd /home/ana/
#ln privado.txt /home/bea/
#ln privado.txt /home/cris/
#ln privado.txt /home/dora/
#chmod 600 privado.txt
#chmod 600 /home/bea/privado.txt
#chmod 400 /home/cris/privado.txt
#chmod 400 /home/dora/privado.txt

Y posteriormente le cambiamos los propietarios.

3 comentarios:

Alberto dijo...

Todo eso me lo tuve que estudiar para al final tener que crear otra partición para la música, en fin, lo mejor de todo es que me hice un lio por no querer usar nautilus y querer aprender desde consola, luego acabé usando nautilus pero no tenía la cuenta de root activada, ya no me acuerdo ni como se hacía, ¿era su?

Rutrus dijo...

Para usar Nautilus como root basta poner desde consola o en ejecutar aplicación (Alt+F2): sudo nautilus

Se te abrirá una ventana con el navegador de archivos y podrás editar y borrar todos los archivos del sistema. No te pregunta, así que úsalo con precaución.

Si lo que quieres hacer es una partición nueva, o formatearla... lo mejor es instalarte qtparted ó gparted.

Alberto dijo...

No, si ya lo hice todo eso xo gracias rutrus