Quiero darles a los usuarios la capacidad de crear archivos de escritura y lectura en otro directorio de usuarios, pero no tener la opción de eliminar el archivo después de creado (un bit no funcionará aquí ...) por ejemplo:
Tengo un usuario manager con un directorio en el repository
que tengo un usuario worker1que necesita escribir archivos /manager/repositorypero no puedo eliminar los archivos.
Tengo un usuario en el worker2que necesito escribir archivos /manager/repository pero no puedo eliminar los archivos en los
que tengo un usuario worker3que necesita escribir archivos /manager/repository pero no puedo eliminar los archivos
pero worker 1-2-3no puede eliminar los archivos solo después de crearlos managery rootpuede eliminar los archivos worker 1-2-3creados.
Intenté algunos chowny chmodtrucos con la aplicación de la parte adhesiva sin éxito.
fuente

worker*usuarios escriben en el directorio de cierta manera? Usted mencionó en un comentario que los archivos de registro van aquí, entonces, ¿eso significa que se inicia un determinado ejecutable para crear archivos aquí? Si es así, puede dar permiso alworkergruposudopara ejecutar el ejecutable comomanager. Luego, el ejecutable crearía registros como elmanagerusuario que los trabajadores podrían leer.Respuestas:
A diferencia de Windows, no hay un permiso de eliminación distinto en Unix / Linux. El derecho a eliminar (o crear o renombrar) un archivo está vinculado al directorio que lo contiene. Elimine el permiso de escritura para los trabajadores
/manager/repository/para negarles a los trabajadores la creación, eliminación y cambio de nombre de archivos.Tenga en cuenta que no es posible permitir la creación de archivos sino negar su eliminación.
fuente
En primer lugar, asegúrese de que ACL esté habilitado en su sistema, luego ejecute este comando
Cómo funciona
Este comando le dará permisos de lectura, escritura y ejecución para el propietario en el directorio
/manager/repository. Revocará todos los permisos paraworker1,worker2yworker3.Esto le dará a otros usuarios acceso de lectura y escritura, pero negará el acceso de eliminación.
De
man setfacl:fuente
echo " " > $filegolpearía el contenido del archivo con "", que técnicamente es una escritura, pero elimina efectivamente el contenido. Parece que un repositorio real como svn sería la mejor apuesta aquí.Para hacer eso con permisos, necesitaría un sistema con soporte para ACL similares a las ACL de NFSv4. Por ejemplo, en FreeBSD, si el sistema de archivos está montado con la
nfsv4aclsbandera, puede hacer lo siguiente:Para explícitamente negar el
delete_childpermiso a los miembros delworker-groupgrupo.Sin embargo, tenga en cuenta que, dado que los trabajadores serían propietarios de los archivos que crean, aún podrían modificar las ACL en ellos, y al concederse el
deletepermiso, eso prevalecería sobre eldelete_childpermiso del directorio principal y no estoy Seguro que hay una forma de evitarlo (al menos en los sistemas de archivos UFS en FreeBSD). Por ejemplo, podrían hacer:fuente
Para tomar permisos de escritura de la
/manager/repositorycarpeta. Por lo tanto, todos los usuarios que no sean root podrán escribir o eliminar de los archivos internos/manager/repository, pero no eliminar ningún archivo de este directorio.fuente
podemos modificar los archivos y carpetas pero no podemos eliminarlos.
Para eliminar los atributos, ejecute los siguientes comandos:
Para archivos:
Para directorios:
fuente
aatributo significa solo anexar. ¿Pueden los usuarios editar estos archivos? (2) ¿Cuál es el efecto de establecer elaatributo en un directorio?