
He notado que en varias distribuciones de Linux, cada vez que se crea un nuevo usuario, se le asigna a un grupo principal con su propio nombre.
p.ej. Si creo un usuario llamado "testuser", de forma predeterminada se asigna al grupo principal "testuser".
Esto hace que todos los usuarios tengan sus propios grupos primarios únicos. Todos estos grupos también tendrían solo 1 usuario, ya que realmente no tendría sentido agregar otros usuarios a estos grupos. Esto es algo contrario a la intuición, ya que "grupo" generalmente significa "más de 1".
Estos grupos primarios de usuarios también son generalmente inútiles cuando se intenta asignar permisos a archivos/carpetas.
¿Hay alguna razón por la que este sea el comportamiento predeterminado en las distribuciones? ¿Y algún caso de uso en el que este comportamiento sea realmente útil? ¿Por qué no asignar todos los usuarios nuevos a un grupo principal de "usuarios"?
Respuesta1
La razón (la única razón, hasta donde yo sé) para colocar a los usuarios en su propio grupo es establecer umask 002
un umask 007
valor predeterminado sensato.
Elmáscaraes una máscara para los permisos predeterminados de los archivos recién creados. El significado de los dígitos es el mismo que en chmod
; el primer dígito es para el usuario, el segundo para el grupo y el tercero para los demás. Si un bit es 1 en la máscara de usuario, se elimina (enmascara) de los permisos del archivo recién creado. Por ejemplo, si una aplicación crea un archivo no ejecutable sin ningún requisito de privacidad particular¹, pasará 666 como permisos de archivo, y la aplicación de umask 002 dará como resultado un archivo con permisos 664 ( 0666 & ~002
en notación tipo C). es decir, un archivo que todos pueden leer y que solo el usuario y el grupo pueden escribir ( rw-rw-r--
).
Con umask 022, los archivos son legibles en todo el mundo de forma predeterminada, pero solo su autor puede escribirlos. Con umask 002, el grupo propietario también puede escribir en los archivos. Si el grupo principal de usuarios es uno en el que ellos son el único usuario y la máscara única es 002, entonces:
- De forma predeterminada, solo su autor puede escribir en los archivos, porque aunque los permisos son
rw-rw-r--
, no hay ningún otro usuario en el grupo que tenga permisos de escritura. - Para permitir que los miembros de un grupo modifiquen un archivo, el autor solo necesita hacerlo propiedad de ese grupo con
chgrp
. Esto puede suceder incluso automáticamente si el archivo se crea en undirectorio con el bit setgido un equivalenteLCA.
La ventaja sobre la umask 022 es que en esa configuración, para que los usuarios puedan editar un archivo, el autor debe hacer dos cosas: configurar el grupo y ampliar los permisos ( chmod g+w
). La gente tiende a olvidar este segundo paso (o único paso, en un directorio setgid).
¹ Ejemplos de archivos con requisitos de privacidad particulares: claves de cifrado; correos electrónicos; cualquier archivo en un directorio público como /tmp
.
Respuesta2
Era costumbre agregar todos los usuarios al grupo users
, pero eso hace que compartir archivos de forma controlada sea incómodo (abra los permisos del grupo, todos tienen acceso). Como hoy en día un proceso puede pertenecer a muchos grupos a la vez, simplemente cierre el acceso dándole a cada usuario su propio grupo y comparta archivos agregando grupos explícitos para esto. O (si está disponible) usarACL.