2010-10-29 13 views

Odpowiedz

15

Możesz ustawić zmienną środowiskową w swoim pliku crontab. Linia taka jak IS_CRON=1 może zostać umieszczona na początku twojego pliku crontab, następnie sprawdź w swoim programie php dla get_env("IS_CRON") == 1.

Oczywiście, należy również użyć uprawnień do plików, ponieważ nie są one tak łatwo ominięte. Jeśli jest uruchamiany jako część crona root, chown root:root yourscript.php i chown 700 yourscript.php.


Jak ircmaxell mówi, że byłoby lepiej, aby uruchomić jako użytkownik inny niż root przy założeniu, że nie trzeba uprawnień administratora za to, co robisz. Po prostu zgadywałem o twojej konfiguracji.

+0

To wygląda na idealne rozwiązanie ... Jestem trochę nowy w pracy cron ... w jaki sposób ustawić IS_CRON = 1 część? – Starlin

+0

@Starlin, po prostu umieść tę linię na początku pliku crontab. –

+0

Użytkownik może również ustawić zmienne środowiskowe. – geoffspear

2

Proponuję ustawienie zmiennej środowiskowej w Twojej crontab i następnie sprawdzanie tego w skrypcie PHP

+0

za co głosował minus? – robjmills

+0

Nie był mój, ale powiedziałbym "dla bezpieczeństwa przez zaciemnienie". Podczas gdy Twoja sugestia uniemożliwiłaby * przypadkowe * wykonanie, jedno zerknięcie do skryptu powie każdemu, która zmienna środowiskowa musi być ustawiona (podobnie jak w przypadku znaku "proszę nie uruchamiać ręcznie").Odpowiedzi: "skonfiguruj oddzielnego użytkownika dla cronjobs i zezwalaj tylko na dostęp tego użytkownika i wykonanie skryptu" adres root problemu (podobny do blokady, które może zostać odblokowane tylko przez określonego użytkownika). – Piskvor

5

Prawdopodobnie istnieje wiele sposobów, aby to zrobić. Poza tym, powiedziałbym, że umieszczenie go w katalogu będącym własnością root'a i tylko do odczytu przez root może zbliżyć się do osiągnięcia efektu, którego szukasz.

Czy są jakieś procesy, których szukasz, aby je ograniczyć? Jeśli tak, to używając uprawnień, nie można ich odczytać dla żadnego z tych procesów.

1

Utwórz użytkownika dla zadań cron i ustaw uprawnienia skryptu, aby mógł być uruchamiany tylko jako ten użytkownik. Oczywiście musisz umieścić skrypt w tym użytkowniku crontab, który możesz zrobić, logując się jako ten użytkownik i uruchamiając crontab. Po prostu nie podawaj hasła tego użytkownika każdemu innemu użytkownikowi ...

Początkowo myślałem również o ustawieniu zmiennej środowiskowej, która uniemożliwiłaby uruchomienie tego skryptu z sieci ... Ale po prostu nie umieszczanie skryptu w przestrzeń, w której serwer WWW szuka stron dla stron internetowych, zrobiłaby to samo.

Nic nie powstrzymuje przypadkowego użytkownika przed pierwszym ustawieniem zmiennej środowiskowej, a następnie uruchomieniem skryptu.

8

Co powiesz na sprawdzenie skryptu PHP, czy $_SERVER['REMOTE_ADDR'] jest puste, a jeśli nie jest, to wyłącz skrypt, nie robiąc nic więcej.

Powiązane problemy