usunięcie uprawnienia do zapisu nie uniemożliwia rootowi zapisywania do pliku

31

Właśnie zauważyłem na moim komputerze Ubuntu (system plików ext3), że usunięcie uprawnień do zapisu z pliku nie powstrzymuje roota przed zapisaniem do niego.

Czy to ogólna zasada uprawnień do plików UNIX? A może specyficzny dla Ubuntu? Czy błędna konfiguracja na moim komputerze?

# touch abc
# chmod ugo-w abc
# python
Python 2.6.4 (r264: 75706, 7 grudnia 2009, 18:45:15) 
[GCC 4.4.1] na linux2
Aby uzyskać więcej informacji, wpisz „pomoc”, „prawa autorskie”, „kredyty” lub „licencja”.
>>> otwórz („abc”, „w”). napisz („AAA \ n”)
>>> 
# cat abc
AAA

Zapis do pliku nie powiedzie się (zgodnie z oczekiwaniami), jeśli zrobię to z mojego zwykłego konta użytkownika.

  1. Czy to jest normalne zachowanie?

  2. Czy istnieje sposób, aby zapobiec przypadkowemu zapisaniu pliku root do pliku? (Najlepiej przy użyciu normalnych mechanizmów systemu plików, a nie AppArmor itp.)

Naucz mnie czegoś o czymś, czego zdecydowanie nie rozumiem.

UWAGA: Rozumiem, że root ma całkowitą kontrolę nad systemem i może np. Zmieniać uprawnienia do dowolnego pliku. Moje pytanie brzmi, czy obecnie ustawione uprawnienia są wymuszane na kodzie działającym jako root . Pomysł polega na tym, że użytkownik root zapobiega przypadkowemu zapisaniu do pliku.

UWAGA: Rozumiem również, że nie należy się logować jako root do normalnych operacji. Właśnie zauważyłem to zachowanie i pytam o to.

Laramichaels
źródło

Odpowiedzi:

46

1) Jest to normalne zachowanie. root ma dostęp rw do wszystkich plików przez cały czas.

2) Możesz chronić plik nawet przed rootem (nie jest to celowe działanie, ale i tak przypadkowe) za pomocą

chattr +i filename.ext

To znaczy „zmień atrybuty dodaj niezmienny”. Aby usunąć ochronę:

chattr -i filename.ext

zobacz man chattrwięcej informacji

brice
źródło
@brice: wielkie dzięki. bezpośrednio odpowiada na moje pytanie. nie wiedziałem o chattr.
laramichaels,
wydaje się, że mój system potrzebuje dostępu do roota, aby uruchomić chattr. czy istnieje sposób ustawiania takich atrybutów w trybie użytkownika?
quack quixote
1
... chociaż jest to świetna odpowiedź na pytanie: „może roottak dobrze chronić plik, nawet on nie może go usunąć”!
quack quixote
4
Dokładniej (w każdym razie w przypadku Linuksa) root ma CAP_DAC_OVERRIDEzdolność pozwalającą mu ignorować listy ACL i uprawnienia.
grawitacja
1
FYI, odpowiednikiem tego w systemie OS X jest sudo chflags <s|u>chg <file>uczynienie go niezmiennym odpowiednio dla systemu lub użytkownika, oraz sudo chflags no<s|u>chg <file>rozbrojenie niezmiennej flagi odpowiednio dla systemu lub użytkownika.
GDP2
3
  1. Tak, to normalne. Korzeń jest bogiem.

  2. Tak, istnieją sposoby, aby zapobiec zastępowaniu plików przez root.

    • Ustaw niezmienny bit za pomocą chattr( +izestawów, -irozbrojenia). Wymaga dostępu do roota, działa tylko na ext2 / ext3 (prawdopodobnie też ext4), ale poza tym jest praktyczny.
    • Nie uruchamiaj aplikacji jako root. Bez uprawnień administratora, bez nadpisywania plików. Służy sudodo uzyskiwania dostępu do funkcji systemu.
    • Odmontuj system plików. Bez zamontowanego fs, bez nadpisywania plików. [*]
    • Wyłącz komputer. Bez prądu, bez nadpisywania plików.

Te metody są logicznie zgodne z numerem 1. Jak widać, dwie ostatnie metody są na ogół nieprzydatne, podobnie jak ochrona systemu Windows przed wirusami przez odłączenie sieci nie jest ogólnie przydatna. Właśnie dlatego root jest niebezpieczny. [+]

[*] Oczywiście pomijając możliwość „przypadkowego” zapisu bezpośrednio na urządzeniu blokowym. Tak, root może to zrobić. Tak, możesz temu zapobiec: odłącz urządzenie.

[+] Stąd też pochodzą te mity BOfH. Nie wszystkie są mitami.

quack quixote
źródło
@ ~ quack: metoda brice'a jest znacznie bardziej praktyczna niż trzy wymienione na liście. :)
laramichaels
@ ~ quack: moje pytanie wyjaśniło, że rozumiem problemy z uruchamianiem poleceń jako root.
laramichaels
3

Możesz także ograniczyć dostęp do pliku dla użytkownika root, używając jądra Linuxa „Możliwości”: http://www.securityfocus.com/infocus/1400

Istnieje również możliwość użycia SE-Linux lub innej łaty do jądra, aby niektóre pliki były niezmienne nawet do rootowania.


źródło
0

Myślę, że dopóki root jest superużytkownikiem, a on może zrobić wszystko, nie możesz mu usunąć żadnego pozwolenia, także jeśli jesteś rootem. Powinna to być wola roota, aby uniemożliwić sobie wykonanie lub nie wykonanie operacji (takiej jak zapis do pliku lub otwarcie aplikacji).

Więc nie, możliwe, że dezaktywujesz tylko konto root, aby zapobiec złemu korzystaniu z niego.

pozdrowienia

[uwaga dla siebie: będziecie pokorni ... może się mylicie]

dag729
źródło