¿Es necesario reiniciar para actualizar los permisos después de agregar un usuario a un nuevo grupo?

26

En el servidor ubuntu, he notado más de una vez que después de agregar un usuario a un grupo, ese usuario no tiene permisos de grupo hasta que reinicie el sistema. Por ejemplo:

El usuario 'hudson' necesita permiso para leer el directorio 'root: shadow / etc / shadow'. Entonces agrego hudson al grupo shadow. Hudson todavía no puede leer. Entonces, 'sudo shutdown -h -r now' y cuando el sistema vuelve a aparecer, el usuario Hudson puede leer.

¿Es necesario reiniciar o hay una mejor manera de aplicar los permisos después de agregar al usuario al grupo?

Michael Prescott
fuente
para referencia futura, he agregado una solución real a continuación. Me sorprendió que esto fuera un problema. Espero que ayude.
Try TryAgain

Respuestas:

25

Estaba buscando una solución, encontré esta publicación y luego encontré una.

Pensé que en realidad ofrecería una solución para que otros puedan beneficiarse. Iniciar y cerrar sesión es tan 1995.

Tomado de:

https://arkaitzj.wordpress.com/2010/03/08/linux-add-user-to-a-group-without-logout/

Entonces, si necesita obtener permisos para el cdromgrupo, acaba de agregar su usuario a:

newgrp cdrom 

por ejemplo

Entonces los pasos serían:

#adduser my_user cdrom

y entonces

$newgrp cdrom

He confirmado que funciona.

Una simple $groupscomprobación de la CLI muestra que el usuario está en el grupo. Y una ejecución rápida con los privilegios necesarios de ese grupo funciona.

¡No es necesario matar sus ventanas e iniciar sesión y cerrar sesión! Espero que ayude a los demás!

Información adicional (basada en el útil comentario de jytou): "[Esta] solución funcionará solo para el shell abierto actual. Si tiene otro shell abierto, deberá usar el mismo comando para tener en cuenta los cambios".

Try TryAgain
fuente
1
¡Eso es genial, realmente funciona! : D
dadexix86
3
Tenga en cuenta que la solución Try TryAgain solo funcionará para el shell abierto actual. Si tiene otro shell abierto, deberá usar el mismo comando para tener en cuenta los cambios.
jytou
De todos modos para hacer eso para la sesión de X corriendo?
artfulrobot
@artfulrobot lo siento, no estoy exactamente seguro de lo que quieres decir. Es posible que desee abrir una nueva pregunta y hacer referencia a esta publicación y la solución para obtener la mejor ayuda.
Try TryAgain
19

Al agregar un usuario a un nuevo grupo, el usuario debe cerrar sesión y volver a iniciarla para que surta efecto. Si bien un reinicio logrará eso, no debería ser necesario.

Scott Pack
fuente
¿Cómo cierro la sesión de un usuario creado por aptitude al instalar un paquete?
Michael Prescott
¿Qué paquete crea el hudsonusuario?
womble
Cuando Justin respondió, intente parar e iniciar el servicio.
Scott Pack
Esto es lo que hago. Simplemente cierre la sesión y vuelva a iniciarla.
Trent Scott
En realidad, no necesita cerrar sesión y volver a iniciarla, afortunadamente. Ofrecí una solución de trabajo a continuación. Probado, y FELIZ!
Try TryAgain
8

Agregar un usuario a un grupo no afecta a los usuarios actualmente conectados.

En el caso de un demonio, debe reiniciarlo para que se apliquen nuevos grupos.

Además, reiniciar el demonio utilizando una opción en el demonio en sí mismo no funcionará, ya que heredará el entorno actual.

La forma más fácil de hacerlo funcionar es detener completamente el demonio y volver a iniciarlo, como en ...

/etc/init.d/foo stop ; /etc/init.d/foo start
Justin
fuente
4

eso es mucho más fácil, puede verificar su nivel de acceso actual escribiendo:

id

para recargar tus grupos solo necesitas:

su - $USER

después de eso, verifique nuevamente el nivel de acceso:

id

y verá que el nuevo grupo ahora está activo.

wikrie
fuente
1

Hay un modo de falla diferente que también debería abordarse aquí.

Si el administrador actualizó /etc/grouppero no pudo actualizar /etc/gshadow(en sistemas que tienen esta configuración), cerrar sesión y volver a iniciarla no lo asignará al nuevo grupo.

Confusamente, groupsle mostrará la situación real y actual, mientras idque imprimirá incorrectamente la salida que indica que usted es un miembro del grupo.

tripleee@vbvntv$ groups
tripleee

tripleee@vbvntv$ id
uid=1234(tripleee) gid=1234(tripleee) groups=1234(tripleee),4(adm)

tripleee@vbvntv$ ls -l /var/log/mail.log
-rw-r----- 1 root adm 15728 May 26 14:26 /var/log/mail.log

tripleee@vbvntv$ tail /var/log/mail.log
tail: cannot open `/var/log/mail.log' for reading: Permission denied

No puedo usar newgrpporque me pide una contraseña, y no tengo una contraseña, solo autenticación de clave pública SSH.

La solución sería que el administrador revierta la edición manual de /etc/groupsy luego lo vuelva a hacer con sudo gpasswd -a tripleee adm; o, alternativamente, usar grpconvpara fusionar los cambios (que recogí de /server//a/389719/98333 )

tripleee
fuente
En realidad, resulta que el verdadero problema era que estaba reutilizando una sesión maestra SSH . Desconectar eso al quitar el socket ControlPath e iniciar sesión nuevamente resolvió el problema.
tripleee