Si bien el almacenamiento en la nube ofrece muchas ventajas, no hay nada como tener sus datos en un disco duro físico. Cuando guarda datos en una unidad, sabe exactamente dónde están sus datos y siempre están disponibles cuando los necesita. Cuando guarda datos en una unidad portátil externa como una memoria USB, es aún mejor:no solo sabe dónde están sus datos, sino que puede llevarlos a donde quiera que vaya. Si es nuevo en Linux, o está tratando de usar un sistema de archivos de Linux en una unidad externa, es posible que las unidades externas le resulten confusas, propensas a errores o conflictos de permisos, o incluso a la pérdida de metadatos.
Hay dos respuestas "correctas" a esto:
ExFAT
Anteriormente, ExFAT era un sistema de archivos plagado de amenazas legales de Microsoft porque eran los propietarios del código. Han demandado a empresas y organizaciones antes para defender su propiedad de FAT, por lo que comúnmente se temía que pudieran hacer lo mismo con ExFAT. Sin embargo, recientemente. Microsoft hizo las especificaciones para ExFAT de código abierto. Desafortunadamente, no proporcionaron un controlador, pero hay una unidad existente para que funcione en Linux y, ahora que los desarrolladores tienen acceso a las especificaciones completas, las mejoras son inevitables.
La ventaja de ExFAT es que es multiplataforma (Windows, Mac y muchos dispositivos portátiles lo usan) y está diseñado sin la sobrecarga de permisos de archivos. Puede adjuntar una unidad formateada como ExFAT a cualquier computadora, y todos los archivos están disponibles para cualquier persona. Si eso es bueno o malo depende de su caso de uso, pero para los medios portátiles, a menudo esa es exactamente la intención.
Listas de control de acceso (ACL)
Si prefiere usar un sistema de archivos de Linux en su unidad portátil, puede hacerlo, pero para que el uso compartido de archivos sea fluido, debe usar listas de control de acceso (ACL).
Cuando crea un archivo o directorio en una unidad, hay valores predeterminados en su sistema que determinan qué permisos de archivo obtiene. En la mayoría de los casos, esos valores predeterminados tienen sentido:cuando crea un archivo en su directorio de inicio, probablemente no desee que otros usuarios tengan acceso a ese archivo. Sin embargo, cuando crea un archivo en una unidad externa, es muy probable que se deba a que necesita compartir ese archivo con otra persona (incluso si esa persona es usted en otra computadora).
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
Puede anular los permisos predeterminados para la visualización de archivos con una ACL y puede controlar el modo de creación de archivos predeterminado configurando un sticky bit. Una ACL es una capa de políticas de seguridad en los atributos extendidos de directorios y archivos. Le permite especificar excepciones a lo que indican los permisos del sistema de archivos. En particular, esto le permite trascender el modelo de propietario único y grupo único de los permisos UNIX tradicionales.
Por ejemplo, mientras que seth (ID 1000) la cuenta puede tener un directorio creado en mi escritorio, seth (ID 500) en mi computadora portátil no, porque las ID de usuario son diferentes.
Lo mismo podría ser cierto para un grupo. Si un directorio con ID de grupo 1000 se asigna a un directorio en una computadora, entonces un grupo con ID 500 o 10922 no tiene acceso a él en otra computadora. Pero una ACL puede agregar propietarios y grupos secundarios a directorios y archivos.
Ver la ACL actual
Cualquier directorio y archivo en cualquier sistema de archivos común de Linux tiene reglas de ACL de forma predeterminada. Se almacenan en atributos extendidos, un tipo de metadatos que normalmente no ves.
Puedes verlos en la terminal:
$ getfacl ./example
# file: /run/media/drive/example
# owner: seth
# group: users
user::rwx
group::rwx
other::r--
Las líneas comentadas son solo para su referencia; le indican la ruta, el propietario y el grupo del archivo o directorio sobre el que está viendo información. Las siguientes líneas muestran las reglas aplicadas al archivo o directorio. En este ejemplo, los permisos de usuario se establecen en rwx , el grupo a r-x , y otro a r-x . Estos permisos se reflejan en una lista normal de sistemas de archivos:
$ ls -lA /run/media/drive
drwxrwxr-- 26 seth users 4096 Jan 16 21:04 example
$ id
uid=1000(seth) gid=100(users) groups=100(users)...
Siempre que el usuario seth (UID 1000) o miembro de un grupo (GID 100) interactúa con el ejemplo directorio, se otorga acceso completo. Sin embargo, cualquier otra cuenta solo ha leído (r ) permiso.
Configuración de una LCA
Para modificar una ACL, utiliza el setfacl comando o use un administrador de archivos con soporte ACL. Puede ser muy específico o muy genérico al configurar su ACL.
Para modificar la configuración de permisos del sistema de archivos, puede usar chmod o setfacl . Esta es una configuración de ACL muy genérica porque no está agregando nada a los permisos ya disponibles para UNIX desde la especificación del sistema de archivos.
$ setfacl --modify g::r example
$ getfacl ./example | grep "group::"
group::r--
$ ls -l . | grep example
drwxr--r-- 26 seth users 4096 Jan 16 21:04 example
El mismo efecto está disponible a través de chmod :
$ chmod g+x example
$ getfacl ./example | grep "group::"
group::r-x
$ ls -l . | grep example
drwxr-xr-- 26 seth users 4096 Jan 16 21:04 example
Agregar usuarios y grupos
Beneficiarse realmente de una ACL es usarla para permisos fuera del alcance de los permisos nativos de UNIX. Si estoy conectado a mi escritorio como seth con ID de usuario 1000, y sé que seth debe poder utilizar un directorio en mi disco portátil con ID 500 en mi computadora portátil, luego solo declaro seth como propietario no es suficiente porque los ID de usuario no son los mismos.
Puede agregar un usuario o ID de usuario a una lista de control de acceso:
$ setfacl --modify u:500:rwx example
$ getfacl example
# file: /run/media/drive/example
# owner: seth
# group: users
user::rwx
user:500:rwx
[...]
Se ha agregado a la lista una nueva entrada, específica para el ID de usuario 500. Conectar la unidad a otra computadora Linux o UNIX ahora permite que el usuario con ID 500 acceda al ejemplo carpeta.
También puede agregar usuarios por nombre de cuenta o grupos por nombre de grupo o ID de grupo. Sin embargo, las ID son lo que realmente cuenta con los permisos, por lo que si se encuentra en un entorno mixto (servidores RHEL y clientes elementales, por ejemplo), debe verificar las ID de usuario y las ID de grupo que se esconden detrás de las cuentas que parecen, en la superficie, idéntico.
Configuración de reglas ACL predeterminadas
Si trata el control de acceso como una configuración única, pronto tendrá problemas una vez que sus diferentes cuentas de usuario comiencen a crear archivos y directorios. Cualquier archivo o directorio nuevo creado por cada usuario hereda los permisos predeterminados del sistema (y ACL). Esto significa que una vez que el usuario de la computadora portátil seth con ID 500 crea un archivo en un directorio, podría estar fuera del alcance del usuario de escritorio seth con ID 1000 porque el propietario del archivo se establece en UID 500.
Se puede aplicar una ACL predeterminada a los directorios para que los archivos y subdirectorios creados dentro de ellos hereden la ACL principal. Puede establecer la ACL predeterminada de un directorio con –default opción:
$ setfacl --default --modify u:500:rwx example
$ setfacl --default --modify u:1000:rwx example
$ getfacl --omit-header example
user::rwx
user:500:rwx
group::rw-
mask::rwx
other::r-x
default:user::rwx
default:group::rw-
default:group:500:rwx
default:group:1000:rwx
default:mask::rwx
default:other::r-x
Cuando un usuario crea un nuevo directorio dentro del ejemplo directorio, la ACL heredada es la misma que su padre:
$ cd example
$ mkdir penguins
$ getfacl --omit-header penguins
user::rwx
group::rw-
group:500:rwx
group:1000:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rw-
default:group:500:rwx
default:group:1000:rwx
default:mask::rwx
default:other::r-x
Esto significa que cualquier directorio o archivo creado hereda la misma ACL, por lo que ni el usuario 500 ni el 1000 quedan excluidos del acceso.
ACL pragmática para unidades externas
Cuando se utiliza un sistema de archivos de Linux para unidades externas, el método sencillo para garantizar que funcione con todos los usuarios que esperan utilizar la unidad portátil es establecer una ACL en un único directorio de nivel superior.
Por ejemplo, suponga que ha formateado una unidad USB llamada mydrive como un sistema de archivos ext4. Desea que su cuenta en su computadora portátil y su computadora de escritorio, así como su colega Alice, puedan acceder a los archivos.
Primero, cree un directorio en el nivel superior de la unidad:
$ mkdir /mnt/mydrive/umbrella
Luego aplique una ACL al directorio de nivel superior para otorgar acceso a todos los usuarios importantes:
$ setfacl --modify \
u:500:rwx,u:1000:rwx,u:alice:rwx \
/mnt/mydrive/umbrella
Finalmente, aplique una ACL predeterminada para que todos los directorios y archivos creados dentro del directorio de nivel superior paraguas heredar la misma ACL predeterminada (tenga en cuenta que este comando usa la versión abreviada de –modify ):
$ setfacl --default -m u:500:rwx,u:1000:rwx,u:alice:rwx \
/mnt/mydrive/umbrella
Aplicar valores predeterminados a un sistema existente
Si necesita aplicar la configuración de ACL a muchos archivos que ya existen, puede hacerlo con buscar comando.
Primero, busque todos los directorios y aplique las reglas de ACL:
$ find /mnt/mydrive/umbrella -type d | \
parallel --max-args=6 setfacl \
--default -m u:500:rwx,u:1000:rwx,u:alice:rwx
No es aconsejable establecer indiscriminadamente todos los permisos de archivos en ejecutables, así que a continuación, busque todos los archivos y establezca los permisos en re . Los archivos que requieren un bit ejecutable se pueden configurar manualmente o por extensión de archivo:
$ find /mnt/mydrive/umbrella -type f | \
parallel --max-args=6 setfacl \
--default -m u:500:rw,u:1000:rw,u:alice:rw
Ajuste la lógica de estos comandos para satisfacer sus necesidades individuales (no ejecute un comando que elimine el bit ejecutable en /usr , por ejemplo, o en un directorio que no contenga más que programas ejecutables).
Unidades externas
No deje que la confusión acerca de las unidades externas en Linux saque lo mejor de usted y no se limite a los permisos tradicionales de UNIX. Ponga las listas de control de acceso a trabajar para usted y siéntase libre de usar sistemas de archivos nativos de Linux registrados en sus unidades portátiles.