Czy pliki użytkowników są nadal prywatne, gdy w Ubuntu istnieje dwóch użytkowników sudo?

31

Dzielę się moim osobistym komputerem Ubuntu z jednym z moich kolegów.

Stworzyłem innego użytkownika z innym hasłem (on oczywiście wie) i dodałem go do sudoerlisty.

Biorąc pod uwagę, że sudow jednym systemie Ubuntu jest dwóch użytkowników:

  • Czy prywatne pliki (określone przez właścicieli i uprawnienia) któregokolwiek z tych użytkowników są nadal prywatne?

  • Czy mogę modyfikować pliki mojego kolegi za pomocą sudopolecenia, a nawet sudo suodwrotnie?

Jizhou Huang
źródło
6
Ubuntu pozwala na szyfrowanie folderu domowego podczas tworzenia użytkownika. To może być dokładnie funkcja potrzebna tutaj.
Thorbjørn Ravn Andersen
@ ThorbjørnRavnAndersen Czy po zaszyfrowaniu folderu domowego mogę nadal uzyskiwać dostęp do plików tak wygodny, jak wcześniej?
Jizhou Huang,
3
Dlaczego nie usuniesz dostępu sudo od drugiego użytkownika i zostaniesz jedynym administratorem? Bez względu na powody, dla których drugi użytkownik potrzebuje sudo, możesz to naprawić, aby nie potrzebowało sudo (montowanie, drukowanie, automatyczne aktualizacje itp.)
Xen2050

Odpowiedzi:

51

Jeśli twój kolega znajduje się na liście sudoers, jest tak samo rootowany jak Ty, jeśli tego chce (i może cię też podszyć), a wtedy wszystko zobaczy.

To najgorsza konfiguracja, jaką możesz mieć, jeśli chcesz prywatności użytkownika. Ostatecznie powinieneś przeczytać, jak działa zarządzanie użytkownikami w systemie Linux. Oto kilka artykułów, od których możesz zacząć:

I nawet wtedy, gdy ktoś ma fizyczny dostęp do danej maszyny, nie ma prywatności, mógłby wpaść przy uruchamianiu do powłoki roota i zobaczyć wszystko bez względu na wszystko, a gdyby był chroniony hasłem, mógłby nadal używać pamięci USB i wejdź tą drogą.

Tak więc najlepszą rzeczą w tym przypadku jest prawidłowe zarządzanie użytkownikami, hasło do roota i szyfrowany dysk i / lub szyfrowane katalogi domowe.

Videonauth
źródło
2
Ale upewnij się, sudo -iże nie działa :)
Wilf
3
Podczas gdy najprostszą i najczęstszą konfiguracją sudoers jest tymczasowe zezwolenie liście użytkowników na rootowanie, sudoers pozwala na dokładną kontrolę dostępu. Na przykład możesz określić, że użytkownik może wykonywać tylko określone polecenia jako root. Jeśli zadbasz o to, aby zezwolić użytkownikowi tylko na wykonywanie poleceń, które nie pozwalają na tworzenie powłoki root lub w inny sposób tworzenie trwałego dostępu do roota poza zakresem poleceń, na które chcesz zezwolić, możesz uniknąć przyznania mu dostępu do roota ogólnie.
bgvaughan,
19

Prostą alternatywą jest przechowywanie prywatnych danych w zaszyfrowanym pliku (może to być plik archiwum tar, który szyfrujesz, na przykład za pomocą gpg). Musisz pamiętać o zastąpieniu i usunięciu czystych plików tekstowych po ich obejrzeniu.

Inną alternatywą dla wszystkich, którzy korzystają z komputera i dostępu sudo (root), jest korzystanie z zaszyfrowanego domu i zaszyfrowanej wymiany.

Ale to nie pomoże, jeśli jesteś zalogowany w tym samym czasie. W rzeczywistości musisz ponownie uruchomić komputer, aby pozbyć się plików w formacie czystego tekstu, nawet w przypadku zaszyfrowanego domu.


Ogólnie bezpieczeństwo jest bardzo trudne, a system dla jednego użytkownika z zaszyfrowanym dyskiem (LVM z szyfrowaniem) byłby najprostszym sposobem na zapewnienie bezpieczeństwa.

  • Nie przechowuj poufnych danych prywatnych na współużytkowanym komputerze
  • Nie przechowuj prywatnych danych na komputerze należącym do twojego pracodawcy
sudodus
źródło
3
Kontener dm-crypt / LUKS nie musiałby się martwić o nadpisanie plików czystego tekstu (z wyjątkiem plików tymczasowych i wymiany dowolnych aplikacji) lub pojedynczego zaszyfrowanego katalogu ~ / ecryptfs-mount-private
.Private
6
To nawet nie chroni cię przed atakami złych pokojówek: drugi użytkownik sudo może zmienić system, aby oszukać cię, podając hasło. Takie pytanie należy rozumieć jako „Podejrzewam, że mój kolega jest rosyjskim szpiegiem. Czy powinienem przyznać mu prawo sudo na moim komputerze?”
sleblanc
Co z maszyną wirtualną z zaszyfrowanym obrazem dysku? blogs.oracle.com/scoter/…
leftaroundabout
1
Jeśli potrzebujesz prywatności, potrzebujesz systemu jednego użytkownika, innymi słowy żaden inny użytkownik, zdecydowanie żaden inny użytkownik sudo. Ubuntu LVM z systemem szyfrowania jest podatny na ataki złej pokojówki. Nadal uważam, że jest to lepsze niż inne łatwe alternatywy, w tym zaszyfrowany dom. Oczywiście, jeśli chcesz, możesz mieć zaszyfrowany dysk i zaszyfrowany dom i system jednego użytkownika, aby utrudnić intruzowi, na przykład zgodnie z tym linkiem, iso.qa.ubuntu.com/qatracker/milestones / 363 / builds / 126342 /…
sudodus
Wszystko, co nowy użytkownik root musi zrobić, to zainstalować rootkit przestrzeni jądra, taki jak diamorfina. Nie trzeba nawet męczyć się z hackami w przestrzeni użytkownika LD_PRELOAD: po prostu zrób prosty rejestrator naciśnięć klawiszy i rzuć go na niektóre skrypty pythonowe, aby wykonać rozmytą segmentację K-średnich na podstawie czasu / grupowania pisania, a także parsowania tekstu i gotowy. Teraz masz hasło dla użytkownika i prawdopodobnie możesz uzyskać jego dane osobowe.
Chmura
8

Gdy jesteś w stanie uzyskać rootuprawnienia (np użyciu sudo, suitp).
Masz pełny dostęp do każdego pliku w systemie.

Tak więc obaj użytkownicy, którzy mają sudouprawnienia i mogą rootkorzystać, sudo bashbędą mieli pełny dostęp do każdego pliku w systemie

Zgodnie z pytaniami i odpowiedziami w SE-Security: Być może będziesz mógł zmodyfikować SELinux(co nie jest Ubuntu) w celu ograniczenia rootdostępu:

Jeśli twoje pytanie brzmi „czy mogę to teraz łatwo i bezpiecznie zrobić?” odpowiedź brzmi nie. Jeśli twoja odpowiedź brzmi: „Jestem gotów dowiedzieć się o SELinux, zejdź na dół z moją dystrybucją i pogódź się z tym, że wiele rzeczy nie działa”, odpowiedź jest taka, że ​​można ograniczyć rootowanie znacznie bardziej niż przeciętna instalacja. To powiedziawszy, w żaden sposób nie czyni cię odpornym na exploity - nie uniemożliwia użytkownikowi obejścia tej dodatkowej kontroli dostępu w oprogramowaniu lub fizycznie.

Yaron
źródło
2
Możesz ograniczyć rootowanie za pomocą apparmor i selinux, jednak osoba z pełnym dostępem do roota lub dostępem za pośrednictwem powłoki odzyskiwania lub płyty CD na żywo z systemem (apparmor lub selinux) może go zmienić z powrotem.
Panther
1
Nawet jeśli użyjesz SELinuksa lub czegoś takiego, aby ograniczyć to, co root może zrobić bezpośrednio, mogą nadal być w stanie modyfikować narzędzia uruchamiane przez użytkowników. A jeśli mają być w stanie uruchomić jakieś aktualizacje, będą potrzebować dostępu do modyfikacji plików binarnych w systemie ...
ilkkachu
5

Aby wyjaśnić to, co inne odpowiedzi już stwierdziły, całkowicie jasne: że inny użytkownik jest nie tylko „zrootowany tak bardzo jak ty” (odpowiedź Videonauth), może on także stać się tobą (przejdź do konta użytkownika) .

Wynika to z faktu, że dzięki uprawnieniom administratora można przełączyć się na dowolne konto.

Prawdopodobnie wiesz

sudo su

która jest jedną z opcji otwierania powłoki roota, jeśli root nie ma ustawionego hasła (więc nie możesz zalogować się bezpośrednio jako root).

sujest skrótem od „zmień użytkownika”. Do jakiego użytkownika się przełącza? Nic nie jest określone, prawda? Ale ze strony podręcznika możemy dowiedzieć się, że:

Wywołany bez nazwy użytkownika, su domyślnie staje się superużytkownikiem.

Tak to jest skutecznie

sudo su root

jeśli nie zmieniłeś nazwy rootna coś innego.

Jeśli po prostu uruchomisz su <someuser>, pojawi się monit o podanie hasła. Więc jeśli uruchomisz su root, pojawi się monit o hasło roota (które domyślnie nie istnieje w Ubuntu, więc nie możesz się zalogować (pamiętaj, że brak ustawionego hasła oznacza, że ​​nie ma możliwości zalogowania się za pomocą hasła, które jest inny niż hasło będące pustym ciągiem)). Ale jeśli uruchomisz sudo su root, pojawi się monit o podanie własnego hasła. I jesteś o to poproszony tylko przez sudo. Po sudootrzymaniu hasła uruchamia polecenie otrzymane jako parametry z uprawnieniami administratora. Ponieważ można przełączyć się na dowolne konto z uprawnieniami administratora, monit o hasło nie jest konieczny.

Więc wykonując

sudo su <yourusername>

, drugi sudoer może się zalogować jako Ty.

UTF-8
źródło
+1; Tak, nie wspomniałem o tym, aby nie powodować zamieszania, pole odpowiedniej ochrony maszyny jest szerokie i wypełnione kamieniami, z którymi można walczyć. Nadal dobry dodatek do tego, co już podano jako odpowiedzi.
Videonauth,
Nie jestem pewien, ale czy nie sudo suzawsze domyślnie jest to UID 0 i GUID 0? Jeśli tak, nie powinno mieć znaczenia, jak nazwałeś „root”.
Videonauth,
@Videonauth Masz rację z drugim zdaniem w drugim komentarzu. Jest to jednak powód, dla którego zawarłem zdanie, które krytykujesz. Jeśli zmienisz nazwę rootna john, sudo sujest teraz równoważne sudo su johni już nie sudo su root.
UTF-8,
3

Można ograniczyć programy, które można uruchamiać przy użyciu eskalacji uprawnień sudo, edytując plik sudoers ( /etc/sudoers).

Zobacz zaakceptowaną odpowiedź na to pytanie na Super User, aby uzyskać więcej informacji, a także tutaj na Unix i Linux . Zobacz odpowiedź slm, aby uzyskać sugestię dotyczącą ograniczenia uprawnień w /etc/sudoers.

Sprawdź także manstronę sudoers , pisząc man sudoersi nie zapomnij przetestować. Pamiętaj, że dzięki nieskrępowanemu dostępowi do sudo użytkownik może w pełni podszyć się pod innego użytkownika. np. jeśli użytkownik foouruchomi polecenie

sudo exec su - bar

mogliby wtedy działać jako użytkownik bar, ze wszystkimi uprawnieniami tego użytkownika.

czarodziej
źródło
6
Należy pamiętać, że poszczególne sudoerslinie pokazane w SLM za and mtak w odpowiedziach nie pracują , aby dać możliwość wykonywania pewnych działań, a inne nie, jak to jest trywialnie proste do korzystania z nich, aby wykonać dowolną komendę. (Zobacz komentarze do każdej z tych odpowiedzi, aby uzyskać szczegółowe wyjaśnienie dlaczego.) Ta odpowiedź może nie być całkowicie błędna, ponieważ czasami można zezwolić użytkownikom sudona uruchamianie określonych poleceń jako root bez skutecznego administrowania nimi. Ale bardzo trudno jest to naprawić.
Eliah Kagan
@EliahKagan Right. Konieczne byłoby uważne upewnienie się, że nie pozwalasz im dotrzeć do mechanizmu, który pozwoliłby im wykonać dowolne polecenie. Oczywiście zależy to od poziomu zaufania do drugiej osoby.
1
@EliahKagan Stąd wezwanie do przeczytania strony podręcznika i przetestowania dowolnej implementacji. Możliwe jest ograniczenie użytkownika z uprawnieniami sudo. Jednak, jak zauważasz, nie jest to w pełni bezpieczne rozwiązanie i użytkownicy, którym przyznano uprawnienia sudo, muszą mieć pewien poziom zaufania. Interesujące jest, aby zobaczyć opinie negatywne dla odpowiedzi, która zaleca użycie mechanizmu (wpisy pliku sudoers), który został specjalnie zaprojektowany w celu ograniczenia zakresu polecenia sudo.
zaklinacz
Myślę, że nie chodzi o zalecenie użycia mechanizmu wbudowanego, więc przejdźmy do tego, jaką konstruktywną krytykę mógłbym dać za twoją odpowiedź. 1) Zawiera kilka literówek i jest źle sformatowany, a po przeczytaniu wygląda dziwnie, co samo w sobie można bardzo łatwo naprawić. 2) wskazujesz na inne odpowiedzi podane poza Ask Ubuntu , tutaj powinieneś wziąć istotne części jako cytaty blokowe i opublikować je tutaj, czyniąc swoje linki częścią cytatów, aby wskazać źródła, z których je pobrałeś. Mam nadzieję, że pomoże to poprawić odpowiedź.
Videonauth,
A ponieważ w poprzednim komentarzu zabrakło mi postaci: 3) Możesz wyjaśnić nieco głębiej, zwróć uwagę na wspomniane zastrzeżenia @EliahKagan.
Videonauth,
0

Poprzednie odpowiedzi nie mają pełnego zastosowania, jeśli zaznaczyłeś to encrypt home folderpodczas instalacji Ubuntu. Gwarantuje to zaszyfrowane foldery domowe dla każdego użytkownika, nawet jeśli root nie może odczytać danych bez odpowiedniego hasła użytkownika / właściciela tego folderu domowego. Twój kolega musiałby zmienić hasło, aby odczytać pliki, co zostanie zauważone.

I oczywiście ludzie mają rację, że dzielenie się maszynami z cennymi lub wrażliwymi danymi na nich, a ponadto dostęp do konta root z kolegami, nie jest dobrym pomysłem.

W zależności od wartości tych danych sugeruję poprosić o własną maszynę.

s1mmel
źródło
1
Może to nie wykluczać, aby użytkownik root wykonał manewr „su -” lub podobny, gdy tylko „ofiara” zostanie zalogowana i ma zainstalowany zaszyfrowany dysk .... może również na to czekać skrypt cron lub inny wyzwalacz wydarzyć się. Ponadto użytkownik root może łatwo zastąpić plik binarny obsługujący wprowadzane hasło, aby odblokować zaszyfrowany katalog domowy wersją, która przechowuje hasło w postaci czystego tekstu, i poczekaj. Wszelkie mechanizmy bezpieczeństwa powstrzymujące takie ataki można nadal wyeliminować, zmieniając niektóre pliki binarne, których ofiara użyje, na coś, co robi tak, jak chcesz.
rackandboneman
5
Głosuję za odrzuceniem tej odpowiedzi, ponieważ zaszyfrowany katalog domowy pomaga tylko wtedy, gdy użytkownik nie jest aktualnie zalogowany. Zaraz po zalogowaniu dane są odszyfrowywane i dostępne dla drugiego użytkownika z dostępem sudo.
Panther
2
Ale dlaczego mieliby być? Nawet jeśli jednoczesne logowanie nigdy nie jest wykonywane zdalnie (np. SSH) lub za pomocą wirtualnych konsol, czy dwóch użytkowników nie może być zalogowanych graficznie jednocześnie i przełączać się między nimi? Korzystam z Lubuntu (który ma LXDE) i nigdy nie loguję się graficznie z wieloma użytkownikami jednocześnie, ale mam wrażenie, że bardziej bogate w funkcje środowiska pulpitu obsługują to od kilku lat i domyślnie włączają. Czy się mylę? Alternatywnie, czy pliki nie są odszyfrowywane i odczytywane przez root, gdy ekran jest zablokowany?
Eliah Kagan
2
IRRC klucze szyfrowania użytkownika są przechowywane na komputerze w sposób jawny, aby zapewnić szyfrowanie i deszyfrowanie, więc taki, sudo su - <username>który nie potrzebuje hasła innych użytkowników, normalnie z powodzeniem odszyfruje katalog innych użytkowników. Ale mogę się tutaj mylić, muszę przetestować to na maszynie wirtualnej i zrobię to później. W każdym razie sprowadza się to w 99% do wszystkich przypadków: „Jeśli mam fizyczny dostęp do twojej maszyny, to jesteś chory!”
Videonauth,
1
Superużytkownik może zmienić procedurę logowania, aby rejestrować nazwy użytkowników i hasła, które widzi. Poczekaj, aż inny użytkownik się zaloguje i problem zostanie rozwiązany.
Stig Hemmer,