Local admin rättighet för att logga ut andra användare i windows

Permalänk
Inaktiv

Local admin rättighet för att logga ut andra användare i windows

Hej jag sitter med ett powershellscript som ska köras av alla användare oavsett vilken typ av användare de är maskinen är windows server 2012. Skriptet ska kunna logga ut andra användare på datorn. Det finns säkerligen flera sätt till detta men jag använder logoff sektionsId. https://anandthearchitect.com/2008/08/01/how-to-logoff-remote...

Nu till problemet och det är att alla användare är domänanvändare och ytterst få är lokala administratörer, för att de ska kunna logga ut en annan användare måste de dock vara lokala administratörer annars får de upp access denied, genom kommandot ovanför.

Om något har ett annat sätt att via cmd/powershell logga ut andra användare så vore det tacksamt, men det jag funderar på är att delegera rättigheterna till användaren på något sätt.
Några alternativ jag kom på.
1: Kommandot Runas, men då måste man ange lösenord, även om den är en binäfil så går denna att läsa ut.
2: Skapa en task i taskmaneger som man anropar och en lokaladmin kör denna, jag får det dock ej att fungera.
3: Windows service som körs som lokal admin och man kan be att utföra tjänster, det känns liten som att gå över ån för att hämta vatten.¨

Nå någon som har någon bättre ide på någon lösning? Scriptet måste köras av sig själv utan användarinput även om UAC popupen skulle vara acceptabel.

*edit*
Användarna kommer ha ett simpelt forminterface, så scriptet måste exekvera i början på rätt användare, bara det att när de väljer att logga ut en annan användare så behöver de ha högre lokal rättigheter än vad de annars ska ha.

//>Johan

Permalänk
Medlem

Förstår inte riktigt önskemålet men jag antar att det är brist på licenser eller en önskan att hålla nere antalet.
Kan ju vara värt att titta på det från andra hållet istället https://technet.microsoft.com/en-us/library/cc754272(v=ws.11)...

Annars kan nog denna vara till hjälp http://stackoverflow.com/questions/12693327/running-a-powersh...

Permalänk
Inaktiv
Skrivet av aluser:

Förstår inte riktigt önskemålet men jag antar att det är brist på licenser eller en önskan att hålla nere antalet.
Kan ju vara värt att titta på det från andra hållet istället https://technet.microsoft.com/en-us/library/cc754272(v=ws.11)...

Annars kan nog denna vara till hjälp http://stackoverflow.com/questions/12693327/running-a-powersh...

Jag tackar så mycket för hjälpen.
Syftet är som du misstänkte att hålla nere antalet licenser för en viss applikation, där användare ska ha möjlighet att stänga ner andra användare så att det blir en licens ledig. Licenserna är bokstavligen svindyra runt 100 000kr per användare. Servern räknar antalet klientinstanser som har kommunikation emot den så det är inget fuffens jag håller på med. (har man igång 10 st klienter igång på samma dator så måste man ha 10st licenser och tillverkaren uppmanar en till att köra flera användare på samma dator exakt som jag gör)

Exemplet du gav mig finns det mängder utav, jag har testat flera utan att få det att fungera, när man läser vidare i dessa exempel ser man att de inte heller löser det på annat sätt än att göra som i länken ovanför och spara lösenordet:
# Capture encrypted password once and store to file
$passwd = Read-Host "Enter password" -AsSecureString
$encpwd = ConvertFrom-SecureString $passwd
$encpwd > $path\password.bin

Förutom att det är en säkerhetsrisk så är det även ett problem om någon byter lösenord.

Efter att ha testat flera lösningar så slog det mig en tanke. Är detta inte en ren säkerhetsgrej och det finns inget sätt att en användare som ej är local administratör kan få dessa rättigheter utan att någon som är local aministartör delegerar denna rättighet? Varvid inga powershell script direkt utan lösenord som ej handlar om att "hacka windows" kommer att fungera?
Och man måste tänka lite utanför boxen hur man kan delegera denna rättighet? Och min fråga är om någon har någon bra ide?

*edit*
Timeout etc gör ej det jag vill att de ska göra. Jag vill att en användare ska kunna slänga ut användare som sitter och jobbar, nu blir detta såklart genom att först fråga i Lync etc och personen kan ha gått ifrån datorn varvid den måste kunna slänga ut någon själv.

//Johan

Permalänk
Medlem

Hittade denna
https://social.technet.microsoft.com/Forums/windowsserver/en-...

Ser vid snabb anblick ut som dom delegerar wmi rättigheter vilket går att använda för att tillåta mycket. Lokal adminaccess är i princip alltid ett sätt att slippa gräva sig nere i windows rättighetssystem.

Permalänk
Inaktiv
Skrivet av aluser:

Hittade denna
https://social.technet.microsoft.com/Forums/windowsserver/en-...

Ser vid snabb anblick ut som dom delegerar wmi rättigheter vilket går att använda för att tillåta mycket. Lokal adminaccess är i princip alltid ett sätt att slippa gräva sig nere i windows rättighetssystem.

Det ser helt rätt ut att vara rätt väg att gå, enda problemet är att jag ej har tillgång til AD och AD där används till så mycket.
Nå det blir att sätta upp ett privat AD och testa och se om det är något jag kan få IT att gå med på.
Att de har en massa RDP gateway etc som är inblandad gör inte saken bättre.

Detta och liknade problem har fått mig att inse att mjukvaror år 2016 ska köras i webbläsaren, att mängder med olika personer loggar in på olika maskiner ställer till med så mycket problem som är på en betydligt högre nivå än vad vanliga programinstallatörer ska syssla med. (även om jag nu också utvecklar)

Nå tackar för hjälpen, det blir som sagt att labba med detta.

Permalänk
Medlem
Skrivet av anon159643:

Hej jag sitter med ett powershellscript som ska köras av alla användare oavsett vilken typ av användare de är maskinen är windows server 2012. Skriptet ska kunna logga ut andra användare på datorn. Det finns säkerligen flera sätt till detta men jag använder logoff sektionsId. https://anandthearchitect.com/2008/08/01/how-to-logoff-remote...

Nu till problemet och det är att alla användare är domänanvändare och ytterst få är lokala administratörer, för att de ska kunna logga ut en annan användare måste de dock vara lokala administratörer annars får de upp access denied, genom kommandot ovanför.

Om något har ett annat sätt att via cmd/powershell logga ut andra användare så vore det tacksamt, men det jag funderar på är att delegera rättigheterna till användaren på något sätt.
Några alternativ jag kom på.
1: Kommandot Runas, men då måste man ange lösenord, även om den är en binäfil så går denna att läsa ut.
2: Skapa en task i taskmaneger som man anropar och en lokaladmin kör denna, jag får det dock ej att fungera.
3: Windows service som körs som lokal admin och man kan be att utföra tjänster, det känns liten som att gå över ån för att hämta vatten.¨

Nå någon som har någon bättre ide på någon lösning? Scriptet måste köras av sig själv utan användarinput även om UAC popupen skulle vara acceptabel.

*edit*
Användarna kommer ha ett simpelt forminterface, så scriptet måste exekvera i början på rätt användare, bara det att när de väljer att logga ut en annan användare så behöver de ha högre lokal rättigheter än vad de annars ska ha.

//>Johan

Hej, när du säger "en task i task manager" så antar jag att du inte menar task manager utan task scheduler.
För att det ska funka i task schedulern så behöver du bocka i run with highest priviliges.

https://social.technet.microsoft.com/Forums/getfile/403528

I vissa situationer kan det också vara så att man behöver fylla i katalogen för scriptet i run in.

http://www.jargonsoft.com/support/taskscheduleredit.jpg

Hoppas det hjälper, lycka till.

Visa signatur

/M

Permalänk
Inaktiv
Skrivet av Marowak:

Hej, när du säger "en task i task manager" så antar jag att du inte menar task manager utan task scheduler.
För att det ska funka i task schedulern så behöver du bocka i run with highest priviliges.

https://social.technet.microsoft.com/Forums/getfile/403528

I vissa situationer kan det också vara så att man behöver fylla i katalogen för scriptet i run in.

http://www.jargonsoft.com/support/taskscheduleredit.jpg

Hoppas det hjälper, lycka till.

Hej jag skrev fel task scheduler menade jag..

Jag hade testat Task scheduler innan och hade då problem med att jag ej kunde starta task skapade av andra. Nu gjorde jag en ny test på min devmaskin och jag kunde genom enbart genom bocken "Run with highest privileges", nu logga ut en användare som jag med samma samma kommando i dos ej kunde logga ut p.g.a. access denied.

Så jag kanske har lösningen nu.
Ifall någon råkar ut för samma sak Marowak samt följde denna guide: http://winaero.com/blog/open-any-program-as-administrator-wit...

Kvar är bara test på skarp miljö och självklart har jag ej tillgång till någon ej administratörsanvändare, nå jag får låna något konto. Att tänka på är att när man nästa gång ber någon IT person att skapa konto så ska man skapa ett testkonto med den minsta behörigheten på..

Så tack så hemsk mycket för hjälpen alla som har deltagit, det brukar finnas så många duktiga it personer här på forumet med alla olika slags kompetenser så det lönar sig att fråga.

/Johan

Permalänk
Medlem

Bara en tanke, har du inte möjlighet app på en server köra ett schemalagt script istället, eller aktivitesstyrt.
Från servern kan du ansluta en powershell-session till datorn som behöver logga ut användare och logga ut dessa.
Scriptet behöver ju inte nödvändigtvis köras lokalt på datorn i de flesta fall.

Ex.

$UserCredential = Get-Credential -UserName 'user.name' -Message 'Login as domain administrator to be able to run commands on remote computer' Enter-PSSession -ComputerName "COMPUTERNAME" -Credential $UserCredential

// WarWolf

Visa signatur

There are 10 types of people in the world: Those who understand binary, and those who don't...

Asus Maximus VIII Hero | i7-6700K | ASUS GeForce GTX1070 Strix 8GB | G.Skill F4-2133C15Q-32GRK |

Permalänk
Inaktiv
Skrivet av WarWolf.667:

Bara en tanke, har du inte möjlighet app på en server köra ett schemalagt script istället, eller aktivitesstyrt.
Från servern kan du ansluta en powershell-session till datorn som behöver logga ut användare och logga ut dessa.
Scriptet behöver ju inte nödvändigtvis köras lokalt på datorn i de flesta fall.

Ex.

$UserCredential = Get-Credential -UserName 'user.name' -Message 'Login as domain administrator to be able to run commands on remote computer' Enter-PSSession -ComputerName "COMPUTERNAME" -Credential $UserCredential

// WarWolf

Bra tanke, det var lite åt detta håll jag tänkte med task scheduler och anropa en funktion från en behörig användare.
I mitt fall så har jag enbart tillgång till en virtuell maskin och den är precis allt, både server, client, opc, sql server you name it. Orsaken är enbart $ och det är skillnad på hur ett system borde se ut och hur det ser ut. Dessutom leder all hårdvaruinvesteringar till mindre $ till mina kollegor och istället till helt andra företag som får mer jobb. (en begränsad budget som alla företag delar på)

Nå jag tror att jag har fått en lösning ovanför, när jag får mer tid ska jag sätta upp ett AD i min utvecklingsmiljö och testa bättre. (Testa skarpt vågar jag ej)

Så tack för rådet, det var ett bra råd om nu systemet var uppbyggt som det borde ha varit.

Permalänk
Medlem

Hmm ja då är det klart det blir lite svårare, å andra sidan är det bara en maskin kan du ju göra en schemaläggning som håller koll på detta på den lokala maskinen. Det är ju bara att se till att själva task:en körs som administratör.

Du skulle kunna köra scriptet vid varje inloggning t.ex.

Visa signatur

There are 10 types of people in the world: Those who understand binary, and those who don't...

Asus Maximus VIII Hero | i7-6700K | ASUS GeForce GTX1070 Strix 8GB | G.Skill F4-2133C15Q-32GRK |

Permalänk
Inaktiv
Skrivet av WarWolf.667:

Hmm ja då är det klart det blir lite svårare, å andra sidan är det bara en maskin kan du ju göra en schemaläggning som håller koll på detta på den lokala maskinen. Det är ju bara att se till att själva task:en körs som administratör.

Du skulle kunna köra scriptet vid varje inloggning t.ex.

Jo det är nog smart, om jag måste flytta ut scriptet så får jag försöka få lov att göra det.

Och mitt script körs redan i uppstarten för att räkna antalet licenser. Grundproblemet är att det är ett stort företag som äger allt, sedan är det runt 5 andra företag som jobbar åt denna. Dessa företag har ett visst antal licenser som de får låna och det antal licenser som de själva har får ej överskridas, för då kan det hända att något företag prioriterat företag användare blir utan en licens. Prioriterad = gör kritiska saker för produktion det finns lite annat som gör att de måste ha en licens direkt utan behöva fråga.
Så väldigt mycket arbete blir det enbart för att hantera licenser.. Nå jag har fått goda råd som jag senare ska testa i en utvecklingsmiljö innan jag lägger in på skarp produktionsserver.