
Estoy creando varias carpetas para usuarios (usuarioA/, usuarioB/, etc.) donde cualquiera puede crear/leer un archivo/carpeta en cualquier directorio (usuarioC puede crear fileX dentro de usuarioA/). Sin embargo, solo el propietario del directorio puede modificar o eliminar los archivos dentro de esa carpeta (usuarioC solo puede modificar/eliminar archivos dentro de usuarioC/).
Intenté cambiar los permisos del directorio a 7777, sin embargo, el SUID no se aplica a los directorios.
¿Cómo puedo permitir que los archivos cargados hereden el propietario del directorio?
Editar:UserZ posee el directorio dirZ/. UserZ puede crear (cargar), modificar, eliminar y leer todo dentro de dirZ/.
Asimismo, UsuarioY posee el directorio dirY/. El usuario Y puede crear, modificar, eliminar y leer todo lo que hay dentro de dirY/.
El usuarioY puede acceder a dirZ/. UserY puede crear o leer cualquier cosa dentro de dirZ/. UsuarioYno puedomodificar o eliminar cualquier cosa dentro de dirZ/.
Asimismo, UserZ puede acceder a dirY/. UserZ puede crear o leer cualquier cosa dentro de dirY/. UsuarioZno puedomodificar o eliminar cualquier cosa dentro de dirY/.
Respuesta1
Es bastante extraño que necesites eso. Si desea que el usuario C pueda crear y eliminar archivos dentro de userA
/, otorgue permiso de escritura al usuario C en el directorio. Con su configuración, la forma más sencilla sería colocar a todos estos usuarios en un grupo común mygroup
y hacer que ese grupo pueda escribir en todos los directorios de usuarios.
chgrp mygroup userA userB userC
chmod g+w userA userB userC
Usarlistas de control de acceso (ACL)si necesita más flexibilidad (por ejemplo, se permite que varios grupos accedan a estos directorios). VerHacer que todos los archivos nuevos en un directorio sean accesibles para un gruposi necesita ayuda para activar las ACL en su sistema.
Si desea que los usuarios puedan modificar archivos en un directorio distinto al suyo, haga arreglos para que los archivos se puedan escribir en grupo o coloque una ACL predeterminada en el directorio.
setfacl -d -m group:mygroup:rwx userA userB userC
Si realmente necesita cambiar el propietario del archivo (pero ¿por qué importa si todos los archivos son accesibles para el mismo conjunto de usuarios de todos modos?), puede hacerlo a través de un trabajo que se ejecuta como root cuando se carga un archivo. En Linuxpuedes usar una herramienta basada en inotifysi realmente lo necesita, pero sería mejor cambiar la herramienta que realiza la carga (por un lado, con una solución basada en inotify, hay una pequeña ventana de tiempo en la que el archivo tiene la propiedad incorrecta).
Respuesta2
Los sistemas de archivos Unix no tienen controles de acceso similares a los de Windows, lo que le permitiría hacer distinción entre crear y modificar un archivo: una vez que le da permiso a un usuario para crear archivos en un directorio (chmod +w), él/ella va a poder modificarlos también. Por lo tanto, necesita que el lado del servidor proporcione esta funcionalidad adicional.
Por ejemplo, vsftpd
¿pueden chown
los archivos paraanónimoConexiones: esperaría que fuera (más o menos fácilmente) extensible a otras cuentas de usuario y es probable que otros demonios FTP ya tengan esta característica.
Si no necesariamente tienes que usar FTP,Samba
parece poder hacer lo que necesita: eche un vistazo a la inherit owner
opción (por acción).