Czy możesz wyjaśnić, dlaczego skompilowany plik binarny (na przykład /usr/sbin
) ma uprawnienia do zapisu dla root
użytkownika?
Dla mnie to jest skompilowane. Oznacza to, że bezpośredni zapis nie ma zastosowania i może w jakiś sposób narazić plik na pewne problemy z bezpieczeństwem.
Skrypt (np. bash
Plik) może być zapisywalny, ponieważ jest to w zasadzie plik tekstowy, ale dlaczego jest taki sam dla skompilowanego pliku, w którym, o ile wiem, nie jest konieczne żadne zapisywanie?
Z góry dziękuję za opinię.
linux
files
permissions
root
t1m0th33
źródło
źródło
root
ma uprawnienia do zapisu do pliku binarnego? Jeśli nic innego nie pomogłoby to podczas aktualizacji tego pakietu.memmove()
aby przesunąć ostatnią część na koniec i otworzyć otwór, a następnie wstawić nowy tekst do otworu. Lub możesz użyć seriipread()
/,pwrite()
aby zrobić to samo.ETXTBSY
). Zamiast tego stary plik binarny jest usuwany , a nowy plik binarny jest zapisywany w nowym pliku o tej samej nazwie. Usuwanie plików nie wymaga do nich uprawnień do zapisu, a jedynie do katalogu zawierającego (tj/usr/sbin/
.).Odpowiedzi:
Tak naprawdę nie ma znaczenia, czy pliki w
/bin
(lub w innym standardowym katalogu, w którym przechowywane są pliki wykonywalne) są zapisywane przez root, czy nie. Na serwerze Linux, którego używam, są one zapisywane przez root, ale na moim komputerze OpenBSD nie.Tak długo, jak nie są zapisywalne przez grupę lub przez „inne”!
Nie ma problemu z bezpieczeństwem, np
Jeśli ktoś chciałby go zastąpić, musiałby być rootem, a jeśli tak,
root
i to, to alboInną rzeczą do rozważenia jest to, że root może zapisywać do pliku bez względu na to, czy jest chroniony przed zapisem, czy nie, ponieważ ... root.
Zauważ też, że „skrypt” jest tak samo wykonywalny jak plik binarny. Skrypt nie musi być zapisywalny „ponieważ jest to plik tekstowy”. Jeśli już, to prawdopodobnie powinno mieć takie same uprawnienia jak inne pliki wykonywalne w tym samym katalogu.
Nie zmieniaj teraz uprawnień do wszystkiego! Może to powodować wszelkiego rodzaju spustoszenie i potencjalnie dezorientować menedżerów pakietów, którzy mogą sprawdzić, czy uprawnienia są ustawione poprawnie. Może również narazić system na niebezpieczeństwo, jeśli przypadkowo zmienisz uprawnienia w niewłaściwy sposób w aplikacji o kluczowym znaczeniu dla bezpieczeństwa.
Po prostu załóż, że uprawnienia do plików wykonywalnych są ustawione poprawnie, chyba że znajdziesz coś, co wygląda naprawdę dziwnie, w takim przypadku prawdopodobnie powinieneś skontaktować się z odpowiednim opiekunem pakietu, aby zweryfikować, a nie zacząć zmieniać rzeczy.
Z komentarzy i na czacie było wezwanie do historii.
Historia uprawnień do plików binarnych w systemie Linux nie jest niczym, o czym wiem. Można spekulować, że po prostu odziedziczyli uprawnienia z katalogu lub po prostu z domyślnego
umask
systemu Linux, ale tak naprawdę nie wiem.Wiem tylko, że OpenBSD instaluje pliki binarne w systemie podstawowym 1 z domyślnym trybem uprawnień 555 (
-r-xr-xr-x
). Jest to określone we fragmencie Makefile, w/usr/share/mk/bsd.own.mk
którym ustawia sięBINMODE
na 555 (chyba że jest już ustawione). Jest to później używane podczas instalowania plików wykonywalnych podczasmake build
in/usr/src
.Spojrzałem na opatrzony adnotacjami dziennik CVS tego pliku i stwierdziłem, że ta linia w pliku pozostaje niezmieniona, ponieważ została zaimportowana z NetBSD w 1995 roku.
Na NetBSD plik został po raz pierwszy umieszczony w CVS w 1993 roku, z
BINMODE
ustawieniem 555.Projekt FreeBSD wydaje się być używany dokładnie ten sam plik jako NetBSD co najmniej od 1994 roku , a z później popełnić dodaje podpowiedź w commit wiadomość, że stare pliki zostały z wydaniem 4.4BSD z Berkeley Software Distribution.
Poza tym CSRG w Berkeley zachowało źródła w SCCS, ale ich repozytorium jest dostępne w formie Git na GitHub 2 . Wydaje się, że akta, które tutaj zajmujemy się badaniem kryminalistycznym, zostały popełnione przez Keitha Bostica (lub kogoś bliskiego) w 1990 roku.
To jest ta historia. Jeśli chcesz dlaczego , to chyba będziemy musieli zapytać Keitha. Miałem nadzieję, że zobaczę komunikat zatwierdzenia zmiany, który mówi „ to musi być 555, ponieważ ... ”, ale nie.
1 Systemy BSD mają bardziej rygorystyczny podział na „system podstawowy” i „pakiety innych firm” (porty / pakiety) niż Linux. System podstawowy jest spójną jednostką, która zapewnia pełny zestaw funkcji do uruchamiania systemu operacyjnego, podczas gdy porty lub pakiety są postrzegane jako „oprogramowanie lokalne” i są instalowane pod nimi
/usr/local
.2 Bardziej kompleksowe repozytorium GitHub uwolnień Unix od 70. roku dostępna jest zbyt .
źródło
root
.chmod -R
na/usr
lub/var
i zaskoczenia - ichsudo
nie działa lub coś innego nie działa.