sobota, 8 sierpnia 2015

Cygwin cron w środowisku Windows 10 Pro

Wstęp


O zaletach oprogramowania Cygwin pisałem już w artykułach Linux w windzie? Cygwin! i Cygwin + rsync - bezpieczna i szybka archiwizacja danych. Nie będę więc rozpisywał się tutaj o tym czym Cygwin jest, bądź jak to oprogramowanie zainstalować w systemie Windows.

Skupię się tutaj na kilku ważnych wskazówkach, niezbędnych do uruchomienia usługi Cygwin cron w środowisku Windows 10 Pro. Skuteczna konfiguracja tej usługi może okazać się niekiedy uciążliwa i pracochłonna. Pomocne w rozwiązywaniu ewentualnych problemów z usługą Cygwin cron mogą okazać się: narzędzie cronevents, dziennik błędów w pliku /var/log/cron, a w ostateczności, narzędzie cronbug.

Cronevents


Narzędzie cronevents służy do wyświetlania zawartości dziennika systemu Windows, dotyczącej wydarzeń związanych z usługą Cygwin cron. W przypadku pojawienia się niejasności z usługą cron warto wywołać cronevents i sprawdzić zawartość dziennika.

XNOTE@sphinx ~ $ cronevents 2015/08/08 00:34:01 [cygrunsrv] /usr/sbin/cron: PID 3280: (XNOTE) CMD (/usr/bin/date > /home/XNOTE/data.txt)
2015/08/08 00:34:01 [cygrunsrv] /usr/sbin/cron: PID 3280: (CRON) error (can't switch user context)
2015/08/08 01:13:55 [cygrunsrv] cron: PID 6004: `cron' service stopped, exit status: 0
2015/08/08 01:14:00 [cygrunsrv] /usr/sbin/cron: PID 816: (CRON) STARTUP (V5.0)

Cronbug


Cronbug jest jedyną nadzieją w przypadku, gdy wszelkie inne strategie zawodzą. Wywołanie narzędzia cronbug umożliwia wygenerowanie dokładnego raportu o składnikach systemowych, ustawieniach i błędach, związanych z usługą Cygwin cron. Raport, wraz z opisem problemu, można wysłać do twórców oprogramowania Cygwin, w celu uzyskania pomocy.

Błąd: [cygrunsrv] /usr/sbin/cron: PID 3280: (CRON) error (can't switch user context)


Załóżmy, że udało nam się pozornie-prawidłowo zainstalować usługę Cygwin cron za pomocą narzędzia cron-config, przygotowaliśmy nasz pierwszy zaplanowany harmonogram, ale niestety nic się nie dzieje gdy nadchodzi czas zaplanowanych działań! Próbujemy kilka razy, podmieniamy czasy w harmonogramie, lecz nadal cisza. Zaglądamy do dziennika błędów w /var/log/cron, ale okazuje się, że plik jest całkiem pusty. Kolejnym krokiem jest cronevents, w którym zauważamy błąd "...(can't switch user context)". Co oznacza taka sytuacja i gdzie szukać pomocy w takim przypadku?

Powyższy błąd spowodowany jest rozbudowanym systemem zabezpieczeń Windows, w świetle którego usługa Cygwin cron standardowo nie posiada odpowiednich uprawnień by prawidłowo działać. Aby umożliwić usłudze prawidłową pracę należy podjąć kroki opisane poniżej.

 

Prawidłowa konfiguracja Cygwin cron


1. Za pomocą usługi cron-config standardowo konfigurujemy cron jako usługę (service);

2. W przypadku pojawienia się informacji o nieprawidłowych uprawnieniach do katalogów przerywamy pracę narzędzia cron-config i poprawiamy ręcznie uprawnienia wedle zaleceń programu;

3. Jako Administrator, bądź użytkownik z odpowiednimi uprawnieniami, z poziomu systemu Windows tworzymy konto użytkownika Windows dla usługi cron, o przykładowej nazwie cygrunsrv_user i dodajemy to konto do grupy Administratorów;

4. Jako Administrator, bądź użytkownik z odpowiednimi uprawnieniami, z wiersza poleceń systemu Windows 10 uruchamiamy Edytor Zasad Zabezpieczeń Lokalnych, wydając polecenie secpol.msc;

Edytor Zasad Zabezpieceń Lokalnych Windows
Edytor Zasad Zabezpieczeń Lokalnych w Windows 10 Pro

5. W Edytorze Zasad Zabezpieczeń Lokalnych przechodzimy do Zasady Lokalne->Przypisywanie praw Użytkownika;

6. Utworzonemu uprzednio użytkownikowi nadajemy następujące uprawnienia:

a. Logowanie w trybie usługi
b. Zamień token na poziomie procesu
c. Utwórz objekt tokenu

7. Przechodzimy do zarządzania komputerem, wybieramy Aplikacje i Usługi, a następnie klikamy w Usługi, w których odnajdujemy usługę Cron;

8. Klikając dwukrotnie w widniejącą na liście usługę Cron pojawiają się właściwości usługi, a wtedy przechodzimy do zakładki Logowanie. Zmieniamy sposób logowania się usługi na logowanie jako uprzednio utworzone przez nas konto:


Usługa cygwin cron Windows 10
Logowanie usługi cron jako utworzone przez nas konto

9. Z poziomu listy usług zatrzymujemy i ponownie uruchamiamy usługę cron, tak aby mogła się zalogować jako wybrany użytkownik;

10. Z poziomu Cygwin warto teraz wywołać narzędzie cronevents, aby sprawdzić czy wszystko poszło jak powinno:

2015/08/08 12:51:59 [cygrunsrv] cron: PID 3252: `cron' service stopped, exit status: 0
2015/08/08 12:52:03 [cygrunsrv] /usr/sbin/cron: PID 2924: (CRON) STARTUP (V5.0)
2015/08/08 12:52:04 [cygrunsrv] cron: PID 9504: `cron' service started

Brak komentarzy:

Prześlij komentarz