Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 20:18 25.06.24 
Клубове/ Компютри и Интернет / Системни администратори Пълен преглед*
Информация за клуба
Тема Re: How to... [re: Asen]
Автор Oлer Ивaнoв® (Приятел)
Публикувано28.09.08 04:32  



Задачата не е от най-тривиалните, решението и не е едностъпково- ако трябва да се реши само с инструментите на ОС, без third party tools/applications. Подобен казус имаха и мои колеги наскоро, и след като се пробваха различни варианти да го направят, може да се каже, че откриха поне 10 начина, по които не става работата.

Заданието в крайна сметка се свежда до: непревилигирован потребител (User) да може да изпълни определена команда, в контекста на административен акаунт (Admin), без на User да се разкрива паролата на Admin, и без да му се дават повече права от минимално необходимите.

RunAs в този случай няма да ни свърши работа, защото командата изисква от потребителя в един момент да знае и въведе паролата на „по-старшия” акаунт, нещо, което по условие не се допуска.

Конкретно в твоя случай, TASKKILL има switches (/U и /P), които могат да се използват за да изпълниш „убийството” с credentials на друг потребител, но те работят само когато действието трябва да се извърши от една машина на някаква remote машина, и изискват да се ползва /S опцията. Т.е., ако пуснеш TASKKILL /s РС1 /u admin /p pass /im APP.exe от РС1, ще думне с грешка. Разбира се, можеш да я стартираш от друга машина РС2 например, но не винаги е удачно (двете машини не са в един security domain, включени firewalls между тях и пр.).

Един вариант е чрез скрипт, в кода на който се bind-ваш с credentials на друг потребител с повече права (Administrator) и извършваш действието. Редовия потребител ще има само един shortcut чрез който да пусне скрипта. Самия файл с кода можеш да скриеш чрез манипулация на NTFS permissions на папката и самия файл- т.е. user-a само ще го стартира, но няма да може да го види през Explorer или command prompt.
Разбира се, трябва да се познава съответния скриптов език, обектите, методите и пр. на обкръжението, което ще ползваш за да свършиш работата.

Бих ти предложил следния вариант- използване на Scheduled Tasks и малко пипане на NTFS permissions.

Лог-ваш се на машината с административен акаунт!

Правиш си един прост .bat файл, в който изпълняваш TASKKILL /F /IM <process_name>. Записваш файла в някаква папка, и сет-ваш NTFS permissions такива, че редовите потребители да не могат да записват, изтриват или променят нищо в нея. Няма проблем, че ще могат да видят самото съдържание на .bat файла, тъй като в него няма „чувствителна информация”, важното е както казах да не могат да го подменят с друг или да му променят съдържанието. Ако ти е кеф, можеш така да сет-правата, че users дори да не могат да виждат папката и/или съдържанието в нея, но е излишно престараване в конкретния случай.


Създаваш Scheduled Task, която задаваш да се стартира само веднъж, и то някъде в минало време (за да не потегли когато не трябва), можеш и да я оставиш в disabled state. За задача (полето Run) посочваш пътя и името на .bat файла който направи преди това. Попълваш user name & password на потребителя- в случая административния акаунт. По този начин си постигнал възможността този .bat файл (задачата) да се изпълни в контекста на административния потребител, без да е необходимо да се подава/въвежда информация (например паролата). В действителност, ОС изпълнява Scheduled Task точно като RunAs <Task_Name> (не съм съвсем прав, но механизма е близък до описания), като инкапсулира (скрива частта) въвеждането на потребителските credentials.

Остана само да се сет-нат нужните permissions върху задачата и САМАТА ПАПКА Scheduled Task, за да могат потребителите да стартират тази задача.
Папката Scheduled Task като folder object се намира на: %windir%\tasks. На самата нея не можеш по обичайния начин през Windows Explorer да сет-ваш permissions. Има command line tool с който да го направиш, но аз ти предлагам да не го ползваш, преди да си сигурен, че си си поиграл достатъчно с него и знаеш какво правиш. Има причини папката TASKS да е толкова специална…
Целта е да се разреши на потребителите, които трябва да стартират тази задача, да имат достъп до папката и самата задача. Не си спомням по default дали всички имат право да browse-ват и разглеждат фолдер-а TASKS, по моите сървъри се наложи да го разрешавам.
Отиваш на папката WINDOWS и от properties-->security задаваш на конкретния потребител (и тук, и по-горе можеш да задаваш правата и на някаква security group, вместо на отделни потребители) права: Read & Execute, List Folder Contents, Read, като задаваш да се наследят от всички обекти под нея (в Advanced).

Върху самата задача, редактираш в security tab следните permissions: отиваш на Advanced, и на същата група/потребител там селектираш Full control (за да ти маркира всички Allow), и след това задаваш DENY на Delete, Take ownership и Change Permissions. ОК няколко пъти и си готов.

Това е всичко необходимо за да може потребителя като отиде на задачата да я избере с десен бутон на мишката и да и каже RUN. Тя ще се стартира с credentials на този, който ти си задал в началото.

Какво постигнахме до тук:
(+)
- Потребителя може да изпълни само конкретната задача, точно и само това, което сме задали
- User-a не може да узнае паролата на „по-старшия” акаунт
- Не може да смени какво да се изпълни (в действителност може, но веднага ще му поиска user and password наново, и по този начин ще го възпрепятства от ескалиране на привилегии).
- Не може да я изтрие или променя правата върху нея
- Не въвежда нищо, само цъка с мишката
- Веднъж настроен, механизма/начина може да се използва доста гъвкаво при необходимост
- Решаваме си проблема само чрез наличните в ОС програми и инструменти, без да използваме third party такива
- Използваме поредица от прости действия, не е нужно да се знае някакъв (дори и скриптов) език за програмиране.

(-)
- Потребителя може да промени графика на задачата- както описах в началото, за да не се стартира сама можеш да я сложиш в disabled state, или да и зададеш час за стартиране само веднъж и то някъде в минало време. По необходимост потребителя остава с някои права (Create Files/ Write Data, Create Folder/Append Data, Write Attributes, Write Extended Attributes) и може да промени тези неща. Ако му липсват горните права върху задачата, няма да може да я стартира. Не съм си играл достатъчно, вероятно може още да се ограничи, просто при мен не е проблем това.

От мен толкова, дано съм бил полезен!

Олег Иванов
Аре със здраве!

Редактирано от Oлer Ивaнoв® на 28.09.08 04:37.



Цялата тема
ТемаАвторПубликувано
* How to... Asen   25.09.08 20:01
. * Re: How to... Asen   27.09.08 14:12
. * Re: How to... ms   27.09.08 18:38
. * Re: How to... wqw   27.09.08 21:21
. * Re: How to... Oлer Ивaнoв®   28.09.08 04:32
. * Re: How to... bsb_2   28.09.08 10:47
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.