Mam aplikację, która działa jako demon i jest kontrolowana przez skrypt w /etc/init.d
Czasami musimy zmienić niektóre parametry uruchamiania / kontroli tych skryptów, a następnie ponownie uruchomić demona. Te skrypty mają tylko uprawnienia do zapisu dla użytkownika root, więc podczas edycji tych skryptów potrzebuję uprawnień roota.
Myślałem, że powinienem uczynić użytkownika innego niż root właścicielem tych skryptów. W ten sposób tylko root i specjalny użytkownik mogą edytować te skrypty.
Czy dopuszczalne jest przechowywanie niektórych plików innych niż root w katalogach /etc/init.d?
Czy to absurdalne, zakłócające naturalny porządek systemu?
Odpowiedzi:
To, co natychmiast przychodzi mi na myśl, to nieuprzywilejowany użytkownik, który może uruchamiać rzeczy podczas rozruchu jako root , co jest pożądane dla crackerów, którzy:
Jest to możliwe, jeśli twój upośledzony użytkownik jest w jakiś sposób narażony na szwank, być może za pośrednictwem innej usługi (http / etc). Większość atakujących szybko uruchomi
ls
lub uruchomifind
wszystko,/etc
aby sprawdzić, czy takie możliwości istnieją, istnieją powłoki napisane w różnych językach, których używają, co czyni to prostym.Jeśli zarządzasz serwerem zdalnie, głównie za pośrednictwem SSH, istnieje bardzo duża szansa, że nawet go nie zobaczysz, dopóki nie przejrzysz skryptu inicjującego, ponieważ nie zobaczysz danych wyjściowych podczas rozruchu (powinieneś jednak użyć czegoś, co porównuje skróty tych skryptów ze znanymi skrótami, aby sprawdzić, czy coś się zmieniło, czy oprogramowanie do kontroli wersji itp.)
Zdecydowanie nie chcesz, aby tak się stało, root naprawdę musi posiadać ten skrypt inicjujący. Możesz dodać użytkownika programistycznego do listy sudoerów, aby wygodnie było zaktualizować skrypt, ale radzę nie zezwalać na nieuprzywilejowany dostęp do zapisu do czegokolwiek w init.d
źródło
Oprócz bardzo dobrych uwag Tima Posta, dodałbym, że w przypadku konfiguracji, w której wiele osób musi mieć możliwość wypychania zmian na serwer, należy rozważyć użycie jakiegoś systemu zarządzania konfiguracją.
Jeśli np. Używasz marionetki, szefa kuchni lub cfengine, możesz poprosić odpowiednich użytkowników o lokalną edycję plików, a następnie wypchnięcie zmian za pomocą zarządzania konfiguracją. Dokładnie sposób skonfigurowania tego będzie oczywiście różny w zależności od używanego systemu, ale jego poprawne skonfigurowanie będzie obejmować oprogramowanie do wersjonowania, które ułatwi powrót do wcześniejszej wersji pliku konfiguracyjnego, kiedy (uwaga: kiedy , nie jeśli !) ktoś popełnił błąd. Ułatwi również skopiowanie konfiguracji do osobnego systemu testowego itp.
źródło