How to prevent simultaneous login with same user on Active Directory?
Thank to: https://abhishek.nagar.me/
Restrict Multiple Logins in Domain (AD)
I have always asked this question to my colleagues as to "How do i restrict Multiple Logins in an Active Directory Setup"
So here is the answer
Create a file when a user login and check for such file each time the login request is received if file exists logoff, if file is not present Login and create the file. Its that simple
Below is the step by step process to achieve this using Group Policy
Assumptions:
- Windows 2003 AD is being used
- //<server>/logon is shared and write access is given to everyone
The Steps
Step 1) Create 2 batch files in C:\WINDOWS\SYSVOL\sysvol\domain.name\scripts\logon
File 1: login.bat
:: BEGIN CALLOUT A
If Exist \\server\logons\%username%.txt Goto notlogon
Echo %username% logged in from %computername% > \\server\logons\%username%.txt
Echo %username% logged in from %computername% > \\server\logons\%computername%.txt
:: END CALLOUT A
Goto end
:notlogon
Logoff
:end
:: BEGIN CALLOUT A
: Esta línea indica el comienzo de un comentario. En algunos scripts, los comentarios se utilizan para etiquetar secciones o partes del código para una mejor comprensión o documentación.If Exist \\server\logons\%username%.txt Goto notlogon
: Esta línea verifica si existe un archivo de registro para el usuario actual en la ubicación especificada en el servidor. Si existe un archivo de registro, el script saltará a la etiquetanotlogon
. Esto implica que si el usuario ya ha iniciado sesión previamente, no se realizarán acciones adicionales y el script terminará.Echo %username% logged in from %computername% > \\server\logons\%username%.txt
: Esta línea escribe un mensaje en un archivo de registro en el servidor. El mensaje indica el nombre de usuario que inició sesión y el nombre de la computadora desde la que se realizó el inicio de sesión. El archivo de registro se crea en la carpetalogons
en el servidor y lleva el nombre del usuario seguido de.txt
.Echo %username% logged in from %computername% > \\server\logons\%computername%.txt
: Similar al paso anterior, esta línea también escribe un mensaje en un archivo de registro en el servidor. Sin embargo, esta vez el archivo de registro se crea con el nombre de la computadora desde la que se realizó el inicio de sesión, en lugar del nombre de usuario.:: END CALLOUT A
: Esta línea indica el final del comentario iniciado en la línea 1.Goto end
: Esta línea redirige la ejecución del script a la etiquetaend
, lo que significa que el script continuará ejecutándose desde ese punto.:notlogon
: Esta línea es una etiqueta que marca el comienzo de una sección del script. Se utiliza en combinación con el comandoGoto
para saltar a esta sección si se cumple una condición específica (en este caso, si no existe un archivo de registro para el usuario).Logoff
: Esta línea ejecuta el comandologoff
, que termina la sesión actual del usuario.:end
: Esta línea es otra etiqueta que marca el final de una sección del script. En este caso, es el punto final del script, después del cual no se realizarán más acciones.
File 2: logout.bat
:: BEGIN CALLOUT A
If Not Exist \\server\logons\%computername%.txt goto notlogon
Del \\server\logons\%username%.txt
Del \\server\logons\%computername%.txt
:: END CALLOUT A
Goto end
:notlogon
Logoff
:end
:: BEGIN CALLOUT A
: Esta línea indica el inicio de un comentario. Los comentarios se utilizan para describir partes del código y no se ejecutan como instrucciones.If Not Exist \\server\logons\%computername%.txt goto notlogon
: Esta línea verifica si no existe un archivo de registro específico para la computadora actual en la ubicación especificada en el servidor. Si el archivo no existe, el script salta a la etiquetanotlogon
.Del \\server\logons\%username%.txt
: Esta línea elimina el archivo de registro asociado al nombre de usuario en la ubicación especificada en el servidor.Del \\server\logons\%computername%.txt
: Similar al paso anterior, esta línea elimina el archivo de registro asociado al nombre de la computadora en la ubicación especificada en el servidor.:: END CALLOUT A
: Esta línea indica el final de un comentario.Goto end
: Esta línea redirige la ejecución del script a la etiquetaend
, lo que significa que el script continuará ejecutándose desde ese punto.:notlogon
: Esta línea es una etiqueta que marca el inicio de una sección del script. Se utiliza en combinación con el comandoGoto
para saltar a esta sección si no se cumple una condición específica (en este caso, si no existe un archivo de registro para la computadora).Logoff
: Esta línea ejecuta el comandologoff
, que termina la sesión actual del usuario.:end
: Esta línea es otra etiqueta que marca el final de una sección del script. En este caso, es el punto final del script, después del cual no se realizarán más acciones.
Step 2) Modify Group Policy
Edit the Group Policy related to the OU where you want to disable multiple logins, In Group Policy Object Editor locate to
User Configuration > Windows Settings > Scripts (Logon/Logoff)
Add the login.bat created earlier in Logon and logout.bat in Logoff
Adding Login Script on Group Policy
thats it now when you login a file would be created in //<server>/logon with the username and computername of the loggedin user and he/she will not be able to login to other computer and once he logoff these would be automatically deleted and the user will be allowed to login on any Client.
Comentarios
Publicar un comentario
Dime si la información de este blog te sirvio.