Permisos para nuevos archivos en el directorio compartido

Acabamos de recibir un nuevo iMac que utiliza el /Users/Shareddirectorio para almacenar activos multimedia (imágenes, audio, video) que queremos que todos los usuarios puedan acceder a la máquina. Después de copiar todos los archivos inicialmente, configuramos los permisos deseados y luego aplicamos los mismos permisos a todos los contenidos del directorio de forma recursiva. Esto funciona bien, excepto que cada vez que alguien crea un nuevo archivo o directorio, no tiene los mismos permisos y tenemos que repetir todo el proceso de permisos antes de que todos puedan acceder a él.

¿Hay alguna manera de que podamos establecer permisos para todos los archivos/directorios nuevos creados dentro de ese directorio?

Los atributos extendidos le permitirán establecer algunos permisos de acceso muy liberales y decirles que se propaguen dentro del directorio y continúen haciéndolo en nuevas creaciones, pero por mi vida no puedo encontrar instrucciones. Solo puedo hacerlo en servidores OSX usando las herramientas de administración del servidor, lo que supongo que no es una opción viable aquí.
No. Solo tenemos acceso a los discos del sistema operativo que vienen con el iMac.
Si está contento de trabajar en la Terminal , esta puede ser la respuesta que está buscando.

Respuestas (2)

No puede hacer esto con los permisos de estilo POSIX tradicionales, pero puede hacerlo con las entradas de control de acceso heredables. Para permitir el acceso de lectura y escritura para todo el grupo de "personal" a todo en /Users/Shared/relyshared, usaría:

sudo chmod -R +a "staff allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" /Users/Shared/reallyshared

La file_inherit,directory_inheritparte significa que esta entrada de control de acceso se agregará automáticamente a los nuevos archivos y carpetas creados dentro de esta carpeta, pero no se aplica automáticamente a los elementos que ya están allí (es por eso que agregué la -Rbandera chmod, que se aplica a todo lo que se encuentra actualmente dentro la carpeta), y no se aplicará a los elementos creados en otro lugar y luego movidos a esta carpeta (no sé cómo evitar esto, lo siento).

Realmente me encantaría encontrar una manera de que esto funcione incluso para los archivos que se mueven a un directorio compartido. Es frustrante tener archivos en un directorio compartido que finalmente no se comparten por completo.
Esto aún no permite que se escriba en una carpeta si los permisos posix no lo permiten. Es decir, creo esta carpeta en Finder: drwxr-xr-x+ 2 User staff 68 Dec 15 14:10 untitled folderel + al final significa que tiene la ACL extendida aplicada usando su comando anterior, pero Windows aún dice permiso denegado si intento escribir un archivo en esta carpeta. Sólo chmod g+w untitled\ folderme deja escribirle. Podría deberse a que instalé Samba para evitar la horrible nueva implementación de SMB de OSX.
@ChrisDragon: eso suena como que samba no está respetando correctamente el ACL. Encontré una sugerencia aquí para agregar nt acl support = noa la [Global]sección de /etc/smb.conf, pero no estoy seguro de que siga siendo relevante en las versiones actuales de samba.

Otro enfoque es usar Terminal (también conocido como shell o símbolo del sistema) para crear/editar (debe realizarse como superusuario, consulte sudo) el archivo:
/etc/launchd-user.conf
agregando la línea:
umask 000
guardar y reiniciar. Los nuevos archivos/carpetas (incluidos los archivos modificados al guardar como) permitirán que todos lean/escriban.

Esto funciona cambiando los permisos de creación de archivos predeterminados para los programas, mientras que el enfoque de ACL funciona en términos de reglas de acceso vinculadas a archivos y carpetas particulares.

Sin este ajuste, los archivos se crean permitiendo al usuario: lectura-escritura, grupo y otros: solo lectura.

Si está compartiendo entre varias computadoras, debe hacer esto para todas las computadoras que usarán el recurso compartido.

Si tiene archivos y carpetas existentes en el área compartida, debe hacer que todos puedan leerlos/escribirlos usando:
sudo chmod -R og+w <shared-folder-name>

El comando se lee en inglés como modo de cambio, recursivo a través de todas las subcarpetas y archivos, otros permisos y grupos agregan acceso de escritura, comenzando en la carpeta con .

Este enfoque se menciona en los foros para trabajar con al menos desde 10.6 y todavía funciona en 10.7.

Otros factores aún afectan el acceso al contenido. Por ejemplo, los permisos establecidos en el panel de control Compartir, los permisos/ACL de la carpeta de inicio y, al usar Terminal, cualquier umask en vigor para el shell.

Busque los permisos de archivos umask y Posixpara obtener detalles sobre estos conceptos de Unix. En los escritos, la palabra directorio es sinónimo de carpeta en el lenguaje Unix. También encontrará los términos UID y GID: ID de usuario y grupo, que definen la propiedad de Posix de los programas en ejecución (procesos). Tenga en cuenta que los UID y GID son números que pueden ser iguales o diferentes para un nombre de usuario dado en diferentes computadoras. Estos números se asignan a los nombres en el orden en que se crean las cuentas en una computadora determinada, generalmente comenzando con ID 501. Las redes domésticas carecen de un mecanismo para armonizar estas asignaciones entre computadoras. Por lo tanto, en los recursos compartidos de red, puede parecer que un archivo pertenece a diferentes usuarios porque la vinculación de la ID de usuario con el nombre de usuario se determina desde la perspectiva de la computadora que accede al archivo. Entonces, compartir realmente siempre permite que todos accedan a los archivos en varios grados de todos. En otras palabras, el permiso "otro" de Posix es un límite indefinido de acceso que va desde permitir un grado de acceso bastante predecible pero aparentemente incierto según las ID de usuario asignadas en diferentes computadoras. Esto conduce a variaciones aparentemente absurdas en las experiencias, donde en algunas redes, por ejemplo, una configuración con solo una cuenta de usuario creada en cada Mac, podrá compartir sin ningún ajuste de permisos porque todas las cuentas tendrán el mismo UID (501, no no importa el nombre de las cuentas), mientras que otra red que use varias cuentas de usuario por Mac verá problemas de inmediato. Entonces, algunos grupos nunca lucharán con esto, mientras que otros pueden ver problemas que se desarrollan con el tiempo, o problemas que aparecen o desaparecen espontáneamente.

Es un misterio por qué Apple ha dejado un defecto de usabilidad tan enconado en la configuración de una capacidad para compartir archivos que, de otro modo, sería tan fácil de habilitar.

En discos externos, este problema se soluciona con la opción "Ignorar permisos en este volumen". Puede haber una función similar para compartir archivos de Apple, pero ¿dónde está?

Si implementa su propia configuración del servicio Samba, existen otros mecanismos para manejar estos problemas, pero Samba no es nada fácil de usar.

/etc/launchd-user.conf está en desuso a favor de usar launchctl. Consulte support.apple.com/en-us/HT201684
@JessBowers gracias, así que supongo que sudo launchctl config user umask 000es lo que se necesita ahora.