Forum Linux.pl

System => Konfiguracja => Wątek zaczęty przez: martin1978 w 2018-10-16, 08:56:09

Tytuł: skrypty wykonywane w crontab-ie [SElinux]
Wiadomość wysłana przez: martin1978 w 2018-10-16, 08:56:09
Witam
Czy jest możliwość wykonania takiej operacji przy użyci SELinux:?
Piszę własny skrypt np. test.sh
skrypt ten tworzy plik result.
Oba pliki są zapisywane w /home/user/scirpt/
Do Crontab-a wpisuje zadanie test.sh które wykonuje się cyklicznie co dwa dni.
Pytanie:
Czy jest możliwość przypisania typu SELinux dla pliku test.sh, żeby ten skrypt test.sh tylko wykonywał crond?
Żeby nie było możliwości uruchomienia skryptu np. ./test.sh poprzez jakiegokolwiek użytkownika systemu.
Chodzi o to, aby ten skrypt test.sh mógł wykonywać/uruchamiać tylko crond.
Z góry dziękuję za odpowiedzi
Pozdrawiam
Tytuł: Odp: skrypty wykonywane w crontab-ie [SElinux]
Wiadomość wysłana przez: Paweł Kraszewski w 2018-10-16, 14:03:43
Podstawy SELinuksa są tu (http://www.linuxexpert.pl/posts/1509/selinux-podstawy/). Nie wiem, dla jakiego systemu to chcesz - w Gentoo na przykład interakcja cron-a z SE wygląda tak (https://wiki.gentoo.org/wiki/SELinux/cron):
* Systemowe crony robione są z domeny system_cronjob_t
* Crony użytkowników robione są z domeny cronjob_t


Dodatkowo:
* Daemon cron jako taki działa praktycznie zawsze z UID/GID 0 (jako root), zrzucając uprawnienia do obsługi rekordów nieuprzywilejowanych.
* Skrypt zawsze możesz odpalić jako "/bin/interpreter /ścieżka/skrypt", nie jest wtedy egzekwowana obecność flagi "x", wystarczy goły "r".

Czyli docelowym modelem jest taki, żeby ograniczyć dostęp do skryptu na pełny dla właściciela, rx dla cronjob_t i figa dla pozostałych. Sam nie korzystam z SE, ale dalej powinno pójść z góry.
Tytuł: Odp: skrypty wykonywane w crontab-ie [SElinux]
Wiadomość wysłana przez: martin1978 w 2018-10-17, 10:33:12
Działam w systemie Centos 7.4.
Dzięki, ale czytałem ten opis https://wiki.gentoo.org/wiki/SELinux/cron#cronjob_t
 (https://wiki.gentoo.org/wiki/SELinux/cron#cronjob_t) . I widocznie w Centos-ie jest inne nazewnictwo (SEL), bo cronjob_t nie znajduje mi go.
semanage fcontext -a -t cronjob_t /user/user/file.sh

Po wykonaniu tej komendy mówi mi że ValueError: Typ cronjob_t  jest nieprawidłowy, musi być typem pliku lub urządzenia.

Ale dzięki za pozostałem rady. Będę dalej szukał.