Press "Enter" to skip to content

NFS UID MISMATCH

Chciałabym opisać wczorajszą sytuację z irc. A mianowicie, byłam króliczkiem doświadczalnym pewnego znajomego, zawodowego admina. Eksperyment związany był z udostępnieniem folderów po nfs. Podobną sytuację mamy w przypadku dysków windowsowych, więc tutaj nie powiedziałabym o słabości jakiejś tego rozwiązania.

A mianowicie, warto zapamiętać jedną zasadę, o którą milczą manuale. ZABEZPIECZENIA NA POZIOMIE SYSTEMU PLIKÓW DZIAŁAJĄ TAK, JAK BYŚMY CHCIELI TYLKO NA SYSTEMIE NA KTÓRYM JE NAŁOŻYMY!!!.

Dla zobrazowania sytuacji, pokażę pewnien ocenzurowany log (nick został podmieniony na cenzura )

01:45 <cenzura> root@host:/home/cenzura# ls -la /media/storage/
01:45 <cenzura> razem 8
01:45 <cenzura> drwxrwxrwt 2 root   root    4096 05-02 01:41 .
01:45 <cenzura> drwxr-xr-x 4 root   root    4096 05-02 00:54 ..
01:45 <cenzura> -rw-r--r-- 1 cenzura     sudo       0 05-02 01:42 dupacenzura
01:45 <cenzura> -rw-r--r-- 1 nobody nogroup    0 05-02 01:41 duparoot
01:45 <cenzura> root@host:/home/cenzura# 
01:46 <piatkosia> wszystkich poza tobą widzę jako nobody nogroup
01:46 <piatkosia> a ciebie widzę jako siebie:p
01:46 <cenzura> ?
01:46 <piatkosia> uid mismatch
01:46 <piatkosia> drwxrwxrwt 2 root      root    4096 05-02 01:45 .
01:46 <piatkosia> drwxr-xr-x 9 root      root    4096 05-02 00:48 ..
01:46 <piatkosia> -rw-r--r-- 1 piatkosia sudo       0 05-02 01:42 dupacenzura
01:46 <piatkosia> -rw-r--r-- 1 nobody    nogroup    0 05-02 01:41 duparoot

Dla wyjaśnienia. Zarówno ja jak i osobnik o nicku cenzura listujemy ten sam katalog, podmontowany pod 2 inne systemy operacyjne (byliśmy w sieci lokalnej (konkretnie, po vpn, podono mogło mieć to wpływ, nie testowałam), do mountowania dysku użyto komendy mount.nfs 10.3.2.26:/jakas/sciezka /jeszcze/inna/sciezka ) gdzie ip i ścieżki wzięłam z dupy zupełnie;)

Co tutaj się stało? Polecenie ls w polu usera wstawia nazwę, taką, jaka pasuje do uid w naszym systemie lokalnym. Dlatego widzę, jakbym była właścicielem pliku owego znajomego. Oboje na swoich lokalnych maszynach mamy UID 1000 (zwykle pierwszy „zwykły” tzn niesystemowy użytkownik, tworzony w trakcie lub zaraz po instalacji). Roota pokazuje zawsze, ponieważ jest w każdym systemie i ma zerowy UID. Podobnie z grupami, tylko podaje GID. Pytanie co z nobody nogroup? Ano prawdopodobnie jest to zdalna robota i nie mamy danego UID w systemie. Bo jak jest nieznany, to właśnie tak pokaże. Inna sytuacja, to jeśli faktycznie napisał nobody:ppp
Tak, i to właśnie drogi cenzura jest powodem, dlaczego ci sticky bit nie działał. Po prostu byłam wg mojego systemu użytkownikiem, na który ów bit został ustawiony i właśnie dlatego skasowałam ci e-booki, choć twoim zdaniem nie powinnam:)
Kiedy zaobserwowany UID mismatch jest groźny? A no załóżmy że są tam pliki roota i root odbierze prawa zapisu, etc. Ale zapomina, że przecież jako root ktoś ten udział podmountował, więc ma roota na lokalnej maszynie, a skoro tak, system nie będzie wiedział, że to wprowadził INNY root, bo z głównych prawd wiary systemu wynika:
1. jest jeden root
2. root jest sędzią sprawie… co? Dobra, dalej przestaje pasować:)

więc system nie wie o innym roocie. Ma jednego roota w /etc/passwd i jeżeli jesteś na niego zalogowany, wszystko co ma etykietkę root (i każdą inną) jest twoje.

Kiedy jeszcze możemy zauważyć podobne coś? Ano wystarczy wypiąć dysk i wpiąć go pod inny system operacyjny, może być tego samego typu, ale nie ten fizycznie na którym to robiliśmy (np drugi windows czy drugi linux, zależy jaki był ten pierwszy). Tak padają zabezpieczenia na poziomie ext3, ext4 czy ntfs. Jest to związane z tym, jak owe systemy plików zapisują informacje o uprawnieniach. Poprawnie rozumie je tylko system, na którym zostały ustawione.

Jak się przed tym uchronić, w przypadku nfs? Folder do odczytu dać w trybie ro na poziomie nfsa, zaś folder do zapisu dać rw. Do tego dołączyć skrypt odpalany okresowo (np co minutę), który przeniesie wszystkie pliki do ro. I teraz możemy znajomym po lanie udostępniać materiały bez obawy o ich przypadkowe usunięcie;)

No dobra, chyba namieszałam, lecę na irc:)

One Comment

Comments are closed.