Na naszych serwerach działa pakiet usług Windows, które wykonują kilka zautomatyzowanych zadań niezależnie od siebie, z wyjątkiem jednej usługi, która dba o inne usługi.
W przypadku, gdy jedna z usług nie powiedzie się lub nie powiedzie się, usługa ta próbuje zrestartować usługę, a jeśli podczas próby zostanie zgłoszony wyjątek, zamiast tego wyśle wiadomość e-mail do zespołu wsparcia, aby mogli oni ponownie uruchomić usługę.
Po przeprowadzeniu drobnych badań natknąłem się na kilka „rozwiązań”, od obejścia wspomnianego w KB907460 po podanie konta, na którym usługa działa z uprawnieniami administratora.
Nie podoba mi się żadna z tych metod - nie rozumiem konsekwencji pierwszej metody opisanych w artykule bazy wiedzy Microsoft, ale zdecydowanie nie chcę dać administratorowi dostępu do konta, na którym działa usługa .
Rzuciłem okiem na Lokalną Politykę Bezpieczeństwa i poza polityką, która określa, czy konto może się zalogować jako usługa, nie widzę nic innego, co mogłoby wyglądać tak, jakby odnosiło się do usług.
Działamy na serwerach Server 2003 i Server 2008, więc wszelkie pomysły i wskazówki zostaną przyjęte łaskawie!
Wyjaśnienie: Nie chcę przyznawać możliwości uruchamiania / zatrzymywania / restartowania WSZYSTKICH usług dla danego użytkownika lub grupy - chcę mieć możliwość udzielania uprawnień tylko na określonych usługach, dla danego użytkownika lub grupy.
Dalsze wyjaśnienia: serwery, na których muszę udzielić tych uprawnień, nie należą do domeny - są to dwa serwery internetowe, które odbierają pliki, przetwarzają je i wysyłają do stron trzecich, a także obsługują kilka stron internetowych, więc Zasady grupy usługi Active Directory nie są możliwe. Przepraszam, że nie wyjaśniłem tego.
Odpowiedzi:
Wydaje się, że nie ma sposobu na zrobienie tego w oparciu o GUI, chyba że jesteś członkiem domeny - przynajmniej takiej, której nigdzie nie mogłem znaleźć - więc zrobiłem trochę więcej kopania i znalazłem odpowiedź, która działa dla nasza ostrożność.
Nie rozumiałem, co oznacza reprezentacja ciągu w artykule bazy wiedzy, ale trochę kopania doprowadziło mnie do odkrycia, że jest to składnia SDDL. Dalsze kopanie doprowadziło mnie do tego artykułu Alun Jones, który wyjaśnia, jak uzyskać deskryptor bezpieczeństwa usługi i co oznacza każdy bit. MS KB914392 ma więcej szczegółów.
Aby dołączyć do istniejącego deskryptora zabezpieczeń usługi, użyj,
sc sdshow "Service Name"
aby uzyskać istniejący deskryptor. Jeśli jest to zwykła stara usługa Windows .NET - tak jak w przypadku naszej - deskryptor zabezpieczeń powinien wyglądać mniej więcej tak:Musieliśmy przyznać uprawnienia
RP
(w celu uruchomienia usługi),WP
(w celu zatrzymania usługi),DT
(w celu wstrzymania / kontynuacji usługi) orazLO
(w celu sprawdzenia aktualnego stanu usługi). Można to zrobić, dodając nasze konto usługi do grupy Użytkownicy zaawansowani, ale chcę tylko przyznać indywidualny dostęp do konta, na którym działa usługa konserwacji.Używając,
runas
aby otworzyć wiersz polecenia w ramach konta usługi, uruchomiłem,whoami /all
który dał mi SID konta usługi, a następnie zbudowałem dodatkowy SDDL poniżej:To następnie dodaje się do sekcji D: ciągu SDDL powyżej:
Jest to następnie stosowane do usługi za pomocą
sc sdset
polecenia:Jeśli wszystko pójdzie zgodnie z planem, usługa może zostać uruchomiona, zatrzymana, wstrzymana i zapytana o status użytkownika zdefiniowanego przez SID powyżej.
źródło
SetACL.exe -on "\\server1\W32Time" -ot srv -actn ace -ace "n:domain1\group1;p:start_stop"
CCLCSW
do uprawnień SDDL (oprócz RPWPDTLO), aby wyświetlić usługę na liście po uruchomieniu Get-Service (która najpierw wymaga zmodyfikowania SDDL dla usługi menedżera sterowania usługami scmanager, aby móc wyświetlić dostępne usługi) . Musiałem takżeSW
móc zrestartować niektóre usługi.Właśnie miałem ten sam problem.
Możesz użyć SubInACL.exe z zestawu zasobów. Pobierz samodzielne narzędzie tutaj: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=23510
Użyj,
msiexec /a PathToMSIFile /qb TARGETDIR=DirectoryToExtractTo
aby wyodrębnić pliki, jeśli nie chcesz instalować .msisubinacl /service SERVICE_NAME /grant=COMPUTER_NAME\USERNAME=TOP
T = Uruchom usługę
O = Zatrzymaj usługę
P = Wstrzymaj / kontynuuj usługę
Pełny wykaz: Jak przyznać użytkownikom prawa do zarządzania usługami w systemie Windows 2000
lub typ
subinacl /help
Uwaga: nie próbuj,
subinacl /service SERVICE_NAME /perm
ponieważ może to spowodować kłopoty (wyciągnięta lekcja: P). Nazwa może wprowadzać w błąd (perm! = Pozwolenie), ponieważ usuwa wszystkie uprawnienia dla wszystkich użytkowników (nawet administratora!).źródło
Szukasz Konfiguracja komputera - Zasady - Ustawienia systemu Windows - Ustawienia zabezpieczeń - Usługi systemowe
Tam możesz nie tylko zdefiniować typ uruchomienia usługi, ale możesz także skonfigurować listy kontroli bezpieczeństwa dla każdej usługi. Domyślnie interfejs wyświetla tylko te usługi, które są zainstalowane na komputerze, na którym działa edytor GP.
Aby dodać usługi, które istnieją tylko na innym komputerze:
źródło
gpedit.msc
, ponieważ okno „Zarządzaj serwerem” nie wyświetla węzła zasad. Jeśli tak, nie widzę elementu pod węzłem Ustawienia zabezpieczeń, który odwołuje się do „Usług systemowych”, jak sugerujesz powyżej, na serwerze 2008 lub Server 2003.Użyłem SubinAcl (jak sugeruje patrx), aby móc uruchomić MySQL jako zwykły użytkownik domeny (nie administrator) i działa idealnie! (polecenie należy jednak wykonać jako przynajmniej -lokalne-Administrator)
Polecenie to:
Pamiętaj, że wprowadziłem użytkownika bez poprzedzania go domeną ... w przeciwnym razie polecenie nie powiedzie się podczas analizy!
źródło