Ese es el problema con los sistemas multiusuario, especialmente si tiene más de uno. ;) No hay una forma realmente agradable de hacer lo que quieres. Los enfoques que vienen a la mente serían
- tener el mismo UID para su cuenta en cada máquina que esté usando su unidad externa (en realidad no es factible, ya que probablemente no todas las máquinas están bajo su control)
- utilizando un sistema de archivos que desconoce el propietario / grupo conecpt (FAT o NTFS viene a la mente, pero ... aaah, no)
El enfoque más efectivo sería volver a las prácticas comunes. En la mayoría de los sistemas Linux (al menos), existen algunos grupos que generalmente tienen GID comunes. Un ejemplo sería users
, que tiene GID 100
en la mayoría de las distribuciones de Linux. Si pudieras tener tu respectiva cuenta de usuario en este grupo, podrías
- haga que todos los archivos y directorios en su unidad sean propiedad de este grupo
- de alguna manera logran tener permisos de grupo apropiados en esos archivos y directorios
- de alguna manera logran crear nuevos archivos con la propiedad de grupo apropiada resp. permisos
El primer y segundo punto son fáciles de lograr ( chown
, chmod
). El tercer punto es un poco más complicado.
La parte de "propiedad de grupo" es relativamente fácil: puede configurar el bit SGID en todos los directorios de la unidad. El bit SGID aplicado a los directorios le dice al núcleo que se comporte de una manera BSDish: BSD hace que cada archivo / directorio creado bajo un grupo de directorios específico pertenezca no al grupo primario del proceso que crea el archivo / directorio (como lo hace Linux), pero por el propietario del directorio padre.
El bit de permiso es un poco difícil. Los permisos de los archivos / directorios recién creados están (entre otros) influenciados por umask
una máscara de bits que indica qué bits no establecer si no se indica explícitamente. Un umask
valor común por ejemplo es 022
, lo que significa que los bits de escritura para »grupo« y »otros« generalmente no deberían establecerse. Puede cambiar umask
a 002
, diciéndole que no desea que se borren los permisos de escritura para el grupo, pero la desventaja es que no puede establecer este valor basado en el directorio y, por lo general, no desea tener permisos de escritura para su grupo primario establecido para cada archivo que cree.
Esto podría resolverse utilizando ACL: en una ACL puede establecer un conjunto de permisos mask
y uno default
, que se aplica a todos los archivos y directorios creados dentro de un directorio con este conjunto de ACL. Entonces, una posible solución a su problema sería
- asegurándose de ser miembro de un grupo común en todos los sistemas en los que desea usar su unidad externa
- cree todos los archivos y directorios en su unidad propiedad de este grupo y configure el bit SGID en todos los directorios
- cambie la ACL de todos los directorios para incluir una máscara y permisos predeterminados que le indiquen al kernel que cree cada nuevo archivo / directorio con permisos de escritura establecidos para el grupo.
Ver setfacl(1)
y acl(5)
para más detalles.