Włącz przestrzenie nazw użytkowników w jądrze Debiana

28

Próbuję wymyślić, jak włączyć funkcję przestrzeni nazw użytkownika w moim jądrze (myślę, że CAP_SYS_USER_NS). Używam Debian Stretch, jądro 4.6.0-1-amd64.

Zakładam, że istnieje sposób na włączenie przestrzeni nazw użytkowników i rekompilację jądra. Po kilku godzinach poszukiwań mogę znaleźć post z robieniem tego w Ubuntu ( https://blog.tutum.co/2013/12/14/enabling-the-user-namespace-in-ubuntu-13-10-saucy/ ), ale nie Debian (problem może być taki, że jestem na złym torze, więc moje wyszukiwania są poza bazą).

Moja końcowa gra polega na włączeniu ich, aby nadążać za Dockerem i piaskownicą Google, które najwyraźniej wymagają włączania przestrzeni nazw użytkownika w jądrze (np. Moje kontenery Chrome już nie działają).

Senrabdet
źródło
1
Zobacz także to samo pytanie: unix.stackexchange.com/q/303213/4319
imz - Ivan Zakharyaschev

Odpowiedzi:

38

Na Debianie userns jest wkompilowany, ale domyślnie wyłączony. W jądrze znajduje się łatka specyficzna dla Debiana, która dodaje następujące pokrętło sysctl: kernel.unprivileged_userns_clone

Musisz więc dodać nowy wpis /etc/sysctl.di ustawić go na 1

Ręcznie byłoby to: echo 1 > /proc/sys/kernel/unprivileged_userns_clone(aby włączyć go do ponownego uruchomienia)

dla stałego rozwiązania:

echo 'kernel.unprivileged_userns_clone=1' > /etc/sysctl.d/00-local-userns.conf
service procps restart

Możliwe, że istnieje równoważny parametr opcji rozruchu, po prostu nie wiem

AB
źródło
1
To wciąż działa na Stretch, jądro 4.9.0-1-amd64 #1 SMP Debian 4.9.6-3 (2017-01-28) x86_64 GNU/Linux.
Reid
1
Czy istnieje powód, dla którego jest domyślnie wyłączony w Debianie?
Melroy
2
Historycznie bezpieczeństwo przestrzeni nazw użytkowników było niepewne. np .: lwn.net/Articles/673597 . Jeśli użytkownik, jako root w swoim własnym obszarze nazw, może oszukać jądro w celu umożliwienia operacji na prawdziwym hoście, nastąpi eskalacja uprawnień. Zwykłe przestrzenie nazw niebędące użytkownikami wymagają jawnego uprawnienia administratora (a więc administratora), więc uruchom to, co wybrał administrator: to znane ryzyko. W jądrze wanilii dodano późniejszy mechanizm: user.max_user_namespaces. Po ustawieniu na 0 przestrzenie nazw użytkowników są wyłączone. Łatka Debiana (właściwie z Ubuntu) jest nadal dostępna, nawet jeśli prawdopodobnie jest przestarzała. Może ze względu na kompatybilność
AB
1
Jądro 4.18.3 nie zostało jeszcze wydane na Debianie, więc twoje jądro nie jest jądrem testującym Debiana. Możesz całkowicie zignorować ten parametr (dopóki nie zainstalujesz rzeczywistego jądra z Debiana). Zobacz także mój poprzedni komentarz na temat user.max_user_namespaces
AB
3
Albo po prostu: sudo sysctl -w kernel.unprivileged_userns_clone=1.
Skippy le Grand Gourou