¿Hay alguna manera en Linux para actualizar las propiedades del usuario / grupo sin tener que iniciar sesión nuevamente?

24

Después de editar / etc / group y agregar un usuario a grupos a los que no pertenecía, el usuario no podrá usar sus privilegios recién adquiridos a menos que comience una nueva sesión.

¿Hay un comando para actualizar las propiedades de usuario / grupo en una sesión en curso?

wonea
fuente
1
¿Hay alguna razón por la que está editando el archivo a mano en lugar de usarlo useradd -G groupname username?
Bobby
44
@Bobby: esto no haría ninguna diferencia.
niXar
Puedes mirar esta respuesta .
Pablo A

Respuestas:

16

En el nivel del núcleo, la pertenencia a grupos es una propiedad de cada proceso. A menos que tenga la capacidad adecuada (CAP_SETGID si no me equivoco), es decir, privilegios de root para todos los intentos y propósitos, un proceso no puede pertenecer a un nuevo grupo.

Un usuario no existe como objeto a nivel del núcleo; solo los procesos (y archivos) lo hacen. Un proceso tiene un uid (efectivo y demás) y una lista de identificadores de grupo.

Cuando agrega un usuario a un grupo, el núcleo no tiene idea de lo que significa. Solo sabe, indirectamente, que la próxima vez que / bin / login o / usr / bin / newgrp se ejecute un proceso con esa identificación de usuario tendrá una nueva identificación de grupo en su lista.

Entonces, para responder a su pregunta, si está hablando de una sesión de Gnome o KDE, debe reiniciarla de hecho. O si solo le importa el resultado de un comando en lo que respecta a ese nuevo grupo, puede usar newgrp que acabo de mencionar. Comenzará un nuevo shell con el grupo recién agregado.

niXar
fuente
5

He leído antes que el comando newgrp hace esto, pero solo para el shell actual. No parece haber una mejor alternativa que cerrar sesión y volver a iniciarla.

Andy Shellam
fuente
3
Lo que hace newgrp es comenzar un nuevo shell. Entonces, si te alejas de él, volverás a tu antiguo caparazón. Por lo general, simplemente hago 'exec newgrp'
niXar