Carpeta compartida en Linux



Si tenemos la necesidad de crear una carpeta compartida en nuestro PC, debemos conocer como funcionan los permisos.  A continuación se detallan las diferentes formas de dar accesos a usuarios, grupos u otros.


Esta información, también es complemento a la instalación del servidor FTP en la que es posible que necesitemos crear una carpeta compartida en la que los usuarios puedan subir archivos y compartirlos con el resto. 

Creando el directorio.

Creamos la carpeta compartida a la que llamaremos común:

mkdir común

Creamos el nuevo grupo de usuarios llamado shared (compartido en inglés)

sudo addgroup shared

Cambia la propiedad de la carpeta compartida al nuevo grupo:

sudo chown :shared común

Agregar el usuario que deseemos a ese grupo:

sudo adduser chapuboot shared

Repita el procedimiento para el resto de usuarios.

Creando los permisos

Ahora tienes que tomar algunas decisiones sobre lo que quieres que esos usuarios puedan hacer:

[a] Todos los usuarios del grupo pueden añadir y eliminar de la carpeta y pueden leer y no escribir en los archivos de los demás:

sudo chmod 0770 común

[b] Igual que el anterior, pero sólo el propietario del archivo puede borrarlo:

sudo chmod 1770 común

[c] Todos los usuarios del grupo pueden añadir y eliminar de la carpeta y pueden leer y escribir en los archivos de los demás:

sudo chmod 2770 común

[d] Igual que [c] pero sólo el propietario del fichero puede borrarlo:

sudo chmod 3770 común

Un "1" en la primera posición del comando chmod es el "sticky bit" que impide el borrado de un archivo a cualquiera que no sea el propietario.

Un "2" en la primera posición del comando chmod es el "bit setgid" que obliga a que todos los archivos nuevos o copiados tengan el grupo de esa carpeta.

Un "3" en la primera posición del comando chmod es la combinación de los bits sticky (1) y setgid (+2).

Hay una advertencia a todo esto en lo que respecta al bit setgid. Todos los archivos nuevos creados en esa carpeta y cualquier archivo copiado en ella heredarán el grupo de la carpeta. Pero no los archivos movidos a esa carpeta. Los archivos movidos conservan la propiedad de donde fueron movidos.


Lo único que falta es ¿qué hacer con los usuarios que no están en el grupo?. Obviamente no querrás dejar que cambien nada, pero puede que quieras dejarles leer lo que hay.

Todos los ejemplos anteriores no les dan acceso, pero eso es fácil de cambiar si quieres. Por ejemplo

[Todos los usuarios del grupo pueden añadir y borrar de la carpeta y pueden leer y no escribir en los archivos de los demás:

sudo chmod 0770 común

mantiene a todos los demás (otros) fuera, pero

sudo chmod 0775 común

Da a las personas fuera del grupo acceso de sólo lectura

Si quieres que otros usuarios tengan acceso de sólo lectura sólo tienes que cambiar el 0 final en el chmod por un 5. Si no utilizas los comandos como se indica.

Información de interés:

Si queremos sacar de un grupo a un usuario, usaremos el comando deluser así:

sudo deluser chapuboot shared

Ahora el usuario “chapuboot” ya no pertenece al grupo “shared”

Eliminamos un grupo con “groupdel“, seguido del grupo que queremos eliminar.

sudo groupdel shared

Ahora no existe grupo "shared"

Clases de permisos

ParámetroNivelDescripción
uusuariodueño del archivo o directorio
ggrupogrupo al que pertenece el archivo
ootrostodos los demás usuarios que no son el dueño ni del grupo

 

Tipos de permiso:

PermisoIdentifica
rPermiso de lectura
wPermiso de escritura
xPermiso de ejecución


Valor de Permisos


PermisoValor OctalDescripción
–  –0no se tiene ningún permiso
–  x1solo permiso de ejecución
– w –2solo permiso de escritura
– w x3permisos de escritura y ejecución
 –4solo permiso de lectura
 x5permisos de lectura y ejecución
r w –6permisos de lectura y escritura
r w x7todos los permisos establecidos, lectura, escritura y ejecución


Permisos especiales

Aún hay otro tipo de permisos que hay que considerar. Se trata del bit de permisos SUID (Set User ID), el bit de permisos SGID (Set Group ID) y el bit de permisos de persistencia (sticky bit).

setuid

El bit setuid es asignable a ficheros ejecutables, y permite que cuando un usuario ejecute dicho fichero, el proceso adquiera los permisos del propietario del fichero ejecutado. El ejemplo más claro de fichero ejecutable y con el bit setuid es:


$ su


Podemos ver que el bit está asignado como “s” en la siguiente captura:


Para asignar este bit a un fichero seria:

$ chmod u+s /bin/su

Y para quitarlo:

$ chmod u-s /bin/su


Nota: Debemos utilizar este bit con extremo cuidado ya que puede provocar una escalada de privilegios en nuestro sistema.

setgid

El bit setid permite adquirir los privilegios del grupo asignado al fichero, también es asignable a directorios. Esto será muy útil cuando varios usuarios de un mismo grupo necesiten trabajar con recursos dentro de un mismo directorio.


Para asignar este bit hacemos lo siguiente:


$ chmod g+s /carpeta_compartida


Y para quitarlo:


$ chmod g-s /carpeta_compartida

sticky

Este bit suele asignarse en directorios a los que todos los usuarios tienen acceso, y permite evitar que un usuario pueda borrar ficheros/directorios de otro usuario dentro de ese directorio, ya que todos tienen permiso de escritura.

Podemos ver que el bit está asignado como “t” en la siguiente captura:




Para asignar este bit hacemos lo siguiente:

$ chmod o+t /tmp

Y para quitarlo:

$ chmod o-t /tmp







Comentarios

Entradas populares de este blog

TP-Link WR841ND repetidor WIFI

Instalar y Configurar aMule en Ubuntu

II. Vodafone Technicolor Tc7230 modo bridge.