¿Cómo configuro una carpeta para que todo lo que se cree herede los permisos?


18

Tengo una carpeta / data (en realidad una partición) para todos los datos a los que deberían poder acceder todos los usuarios (en este caso, miembros de la familia). Todos tenemos cuentas de usuario individuales y, a menudo, todos iniciamos sesión en cualquier momento en esta PC.

¿Cómo puedo configurar los permisos para que todos conservemos el acceso a los archivos allí sin importar quién los cree, incluidas las carpetas nuevas? Si creo una carpeta, obtiene mi usuario y grupo, por lo que nadie más puede escribir en ella.


para los visitantes Si solo desea que se herede el nombre del grupo chmod -R g+s /parentdir. Nota: ejecutar chmod -R antes de esto si es necesario
Thamme Gowda

1
Nota sobre lo anterior: el -Rindicador a chmodrara vez es útil porque rara vez queremos que los directorios (que siempre necesitan algún permiso de ejecución) y los archivos normales (que rara vez necesiten algún permiso de ejecución) tengan los mismos permisos
Zanna

Respuestas:


17

Otro enfoque es utilizar las Listas de control de acceso, un superconjunto de permisos de archivos.

En primer lugar, tenemos que instalar el paquete acl Instalar acl :

sudo apt-get install acl

Antes de Ubuntu 14.04 , la partición debe montarse con la opción aclpara que funcione lo siguiente. Se podría agregar /etc/fstab, como en

UUID=<XXXX>  /media/shared  ext4  noatime,acl  0  2

o para un sistema de archivos ya montado

sudo mount -o remount,acl /media/shared

A continuación, debe crear un nuevo grupo, al que se agregarán todos los usuarios autorizados para acceder al recurso compartido en modo lectura / escritura. Yo lo llamo usershare. Se podría utilizar un grupo ya existente.

sudo addgroup usershare

Ahora agregamos los usuarios enzotiby steevca ese grupo:

sudo gpasswd -a steevc  usershare
sudo gpasswd -a enzotib usershare

(vigente en el próximo inicio de sesión).

Luego agregamos una ACL con rwxpermisos para el grupo usersharea todos los archivos que ya están en/media/shared

sudo setfacl -Rm g:usershare:rwX /media/shared

Finalmente, agregamos una ACL predeterminada con rwxpermisos para el grupo usersharepara todos los archivos creados a partir de ahora dentro/media/shared

sudo setfacl -d -Rm g:usershare:rwX /media/shared

Ahora todos los usuarios del usersharegrupo tienen permisos completos en todos los archivos bajo /media/shared. Los permisos de cada usuario en sus directorios personales y los de otros no se ven afectados.

Probé esta solución y parece funcionar, pero las sugerencias y correcciones son bienvenidas.

Observación : los nuevos archivos y directorios creados en el directorio considerado tendrán permiso de escritura para el usersharegrupo, pero los archivos copiados o movidos en la carpeta conservarán sus permisos originales. Si el usuario, según tengo entendido, solo requiere acceso de escritura a los directorios recién creados, esto no es un problema. De lo contrario, debe modificar los permisos a mano. Vea esta respuesta sobre cómo superar esto definiendo la máscara de usuario para 002.


No sé muy bien acl, ¿puede probar y copiar un archivo con permisos como rw-r - r-- de su carpeta de inicio a la carpeta compartida y ver si los permisos cambian a su rwx predeterminado para el usersharegrupo?
organizar el

@arrange: no, no funciona según lo previsto. Voy a señalar en la respuesta. Gracias
enzotib

Agregaría que el /etc/fstab/ remountpaso no es obligatorio, ya que ext4debe montarse con la aclopción activa por defecto.
enzotib

8
  1. Hacer carpeta

    Por ejemplo:

    mkdir /mnt/family
    

    Si necesita montar la partición en ellos ... si ext4 todo lo que necesita /etc/fstabes

    UUID=xxx    /mnt/family ext4    **rw,exec,defaults,auto,async   0   2**
    
  2. Crear grupo myfam.

    addgroup myfam
    
  3. Agregar algunos usuarios a ese grupo

    adduser papa myfam  
    adduser mom myfam
    
  4. Ahora toma y da permiso.

    Creo que deberías comenzar, desde el cambio umask.

    Permisos predeterminados del sistema de archivos y derechos de acceso en 12.04

    chown -R you.myfam /mnt/family  
    chmod -R g+rwx /mnt/family  
    

    Ahora lo más importante. Esa línea crea setgidcualquier cosa que crees en esa carpeta tiene tus usuarios como propietario y grupo myfam. Eso permitió que el sistema anulara el grupo primario de usuarios.

    chmod -R g+s /mnt/family   
    

3

Lo más simple que viene a la mente es agregar a cada usuario al grupo de todos los demás usuarios.

Luego cambie umask de cada usuario de 022 a 002, esto podría hacerse en /etc/profile.

Editar

El primer paso podría reemplazarse con lo siguiente: hacer que todos los usuarios pertenezcan al usersgrupo como grupo principal.

Edi2

Como sugirió @James_Henstridge, puede ser conveniente establecer el bit setgid en el directorio principal, de modo que los nuevos archivos y directorios creados tengan su mismo grupo, independientemente del usuario. De esta forma, puede evitar el conjunto userscomo el grupo principal para los usuarios.


Es posible que desee editar su respuesta para sugerir también establecer el bit setgid en todos los directorios /datapara que los archivos nuevos hereden la propiedad del grupo.
James Henstridge

edit3 :) Si copia un archivo a la /datacarpeta, los permisos no se heredan, por lo que los archivos antiguos con permisos gw no serán modificables por otros. edit4: establecer userscomo su grupo principal y umask0002 definitivamente no es una buena idea ya que cualquiera de ese grupo podrá modificar cualquiera de sus archivos recién creados.
organizar el

@arrange: con respecto a su edit4, sugerí poner en el usersgrupo solo a los usuarios autorizados a tener acceso rw al recurso compartido. Era una cuestión de conveniencia, también podría crear otro grupo para eso. Con respecto a su edit3, no es correcto, el archivo copiado adquiere el grupo de carpetas.
enzotib

@enzotib: para reiterar mi punto en otras palabras: edit4: si userses mi grupo principal y hay más usuarios en este grupo, entonces pueden modificar mis archivos incluso fuera del directorio compartido; edit3 - Escribí permisos , NO grupo de carpetas.
organizar el

@arrange: su punto es correcto, acabo de escribir otra respuesta, podría ser interesante escuchar su opinión.
enzotib

2

Esto suena como un trabajo para ACL. Giles tiene una respuesta muy completa en el sitio SE Unix y Linux que me ayudó a resolver el mismo problema.


1
¡Eso funciono! He visto otras respuestas usando ACL, pero esta es la única que he visto que cambia los permisos no solo de los nuevos archivos y directorios creados en el directorio compartido, sino también de los que se copiaron o se trasladaron a él.
ダ ン ボ ー

0

No entiendo, ¿todos linux-linux, linux-windows, linux - ???, ¿usan Samba ?, ¿SSH ?, ¿Palomas ?; de todos modos, debe incluir a los demás en el Grupo con su nombre de usuario (su Grupo), y obtendrán los mismos permisos que usted.


Esto es múltiples usuarios en una PC. Estoy seguro de que debe haber una manera de obtener los permisos predeterminados para algo útil.
steevc

0

Encontré esta pregunta mientras buscaba respuestas para mi problema de PERMISO DE GRUPO. He leído la pregunta y parece que ya estoy implementando lo que la pregunta intenta lograr.

Así que me molesté en responderlo.

Ya he configurado un recurso compartido para todos los usuarios en mi LAN con solo lectura y ejecución, y solo mi cuenta tiene permiso para escribir en las carpetas compartidas.

Tengo un servidor multipropósito en mi lan que usa ubuntu 12.04 LTS Desktop Edition. Tengo una mezcla de máquinas cliente de Linux y Windows.

Aquí está cómo lo configuré:

1.En mi servidor, tengo cuentas de usuario nombradas adminyclientone

La admincuenta es la cuenta creada cuando instalé ubuntu y la clientonecuenta es la cuenta creada usando el menú CUENTAS DE USUARIO en ubuntu. Solo tiene un permiso estándar, no tiene privilegios de administrador y se agrega al usersgrupo. Por supuesto, puede hacer esto usando solo la terminal. Agregue más cuentas de usuario adicionales para sus máquinas cliente.

2. La partición / carpeta compartida se monta automáticamente en fstab utilizando solo la opción predeterminada.

3. Mi red está en un entorno de grupo de trabajo y está en un mylangrupo de trabajo.

Todas las máquinas en mi lan están configuradas para usar el mylangrupo de trabajo.

4. Mi carpeta compartida nombrada sharedya tiene archivos. Así que cambio el propietario y el grupo de forma recursiva con el siguiente comando.

 sudo chown -Rv admin:users /shared

5.También configuro el permiso de carpeta y archivo a la /sharedcarpeta de forma recursiva usando el comando

 sudo chmod -Rv 750 /shared

Las máquinas invitadas en mi mylangrupo de trabajo no tienen acceso al recurso compartido usando chmod 750

puedes utilizar

 sudo chmod -Rv 755 /shared

Todas las cuentas de usuario futuras dentro del usersgrupo solo tienen permiso de lectura y ejecución.

6.En mi máquina cliente uno (Windows XP) configuré una cuenta de usuario llamada clientone. El mismo nombre de usuario y contraseña que con el creado en mi servidor ubuntu. Una segunda cuenta llamada clienttwotambién se crea en el servidor ubuntu y es la misma cuenta de usuario utilizada en mi segunda máquina (linuxmint 15).

7.En mi máquina cliente una al iniciar sesión con la clientonecuenta, voy a ejecutar el comando y luego ingreso

 //192.168.10.254/shared

192.168.10.254es la dirección IP de mi servidor ubuntu, /sharedes la carpeta compartida en mi servidor ubuntu En mi máquina cliente dos (linuxmint 15), voy a Menú> Red y en la ubicación: barra de diálogo que escribí:

 smb://192.168.10.254/shared

Si se le solicitó la contraseña, ingrese la contraseña de su cuenta de usuario. Y también su contraseña de llavero si KEYRING está habilitado en sus máquinas Linux.

Este funciona para mí en mi propia configuración de red. Mi servidor es un servidor multipropósito que sirve como servidor squid, servidor xbmc y mediatomb y servidor amahi.

Todavía estoy buscando formas de mejorar la parte de mi configuración para compartir archivos. Las instrucciones anteriores no son una solución a prueba de balas, compre, puede probarlo. Pruebo y pruebo el ACL "junto con el montaje automático de carpetas compartidas. Como su requisito de compartir carpetas se complica, las instrucciones anteriores no le garantizarán el éxito.

Información agregada:

Tengo el servidor Amahi instalado en mi servidor, también lo utilicé para crear cuentas de usuario a las que quería tener acceso a las carpetas compartidas. También lo usé para crear nuevas carpetas compartidas.

Cuando desee un permiso de usuario más complejo para diferentes usuarios, ACL es el indicado.


0

Tengo archivos de video a mi nombre, pero cuando inicio sesión con el nombre de mi hija, su cuenta no puede ver los archivos de video. Entonces, lo que hice fue ir a cuentas de usuario, desbloqueado (arriba a la derecha), luego cambié su tipo de cuenta de "estándar" a "administrador (que es lo que es mi cuenta), y ahora todos los archivos de video, realmente todo, aparecen cuando inició sesión con su cuenta.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.