Jakie są poprawne uprawnienia dla / tmp? Nieumyślnie ustawiłem to wszystko jako rekurencyjne


78

Nadużyłem sudo.

Stworzyłem naprawdę bardzo krótki katalog tymczasowy, który chciałem udostępniać niektórym użytkownikom przez kilka godzin ... i nazwałem ten katalog /some/path/tmp

Niestety sudo chown 777 -R /tmpzamiast tego uruchomiłem sudo chown 777 -R tmp, więc mój /tmpplik jest teraz całkowicie publiczny.

/tmpCzęsto używam tego wspólnego (codziennie, prawie co godzinę) osobiście do krótkich plików, skryptów, wielu skryptów.

Czy jest to kwestia bezpieczeństwa teraz, gdy jest ona całkowicie publiczna? Czy powinienem zmienić to z powrotem na bezpieczniejsze ustawienia, czy polubić wspólne ustawienia domyślne dla dystrybucji Debian lub Ubuntu - (nie wiem, które to były)? Do czego są odpowiednie uprawnienia /tmp?


Uwaga: w początkowej odpowiedzi zapomniałem czegoś ważnego: gniazdo X11 musi być publicznie dostępne, w przeciwnym razie nie będzie można uruchomić nowych aplikacji GUI. Zaktualizowałem swoją odpowiedź.
Gilles

To było chownalbo chmod?
Melebius

@ Melebius Jestem trochę zaskoczony twoim pytaniem: nie wspomniałem chmod. chown (podobnie jak ch - own), dotyczy własności plików, których użytkownik jest właścicielem pliku. chmod (jak ch - modifify) to więcej o tym, kto może wykonywać, pisać w środku lub czytać zawartość pliku.
Stephane Rolland

2
@StephaneRolland Tak, to mnie pomyliło. Możesz użyć, chown 777który ustawia własność pliku dla użytkownika o identyfikatorze 777. Jednak wszystkie odpowiedzi, w tym zaakceptowana, działają chmod. Ponieważ wszyscy ustawili uprawnienia na tę samą wartość dla wszystkich użytkowników (właściciela, grupy, innych), większość efektów własności pliku staje się nieistotna. Jednak poprawnym poleceniem do skorygowania wyniku sudo chown 777 -R /tmppowinno być sudo chown root -R /tmp.
Melebius

Odpowiedzi:


117

Normalne ustawienia /tmpto 1777, co lspokazuje jako drwxrwxrwt. To znaczy: szeroko otwarte, z tym wyjątkiem, że tylko właściciel pliku może go usunąć (to właśnie toznacza ten dodatkowy bit dla katalogu).

Problem z /tmptrybem 777 polega na tym, że inny użytkownik może usunąć utworzony plik i zastąpić wybraną przez niego zawartość.

Jeśli posiadasz /tmpsystem plików tmpfs, ponowne uruchomienie przywróci wszystko. W przeciwnym razie uruchom chmod 1777 /tmp.

Ponadto wiele plików /tmpmusi być prywatnych. Jednak co najmniej jeden katalog musi być czytelny dla całego świata: /tmp/.X11-unixi ewentualnie inne podobne katalogi ( /tmp/.XIM-unixitp.). Następujące polecenie powinno przede wszystkim poprawiać sytuację:

chmod 1777 /tmp
find /tmp -mindepth 1 -name '.*-unix' -exec chmod 1777 {} + -prune -o -exec chmod go-rwx {} +

Oznacza to, że wszystkie pliki i katalogi są prywatne (usuń wszystkie uprawnienia dla grupy i innych), ale spraw, aby gniazda X11 były dostępne dla wszystkich. Kontrola dostępu do tych gniazd jest wymuszana przez serwer, a nie przez uprawnienia do plików. Mogą istnieć inne gniazda, które muszą być publicznie dostępne. Uruchom, find /tmp -type s -user 0aby odkryć gniazda należące do roota, które mogą być potrzebne, aby świat stał się dostępny. Mogą istnieć również gniazda należące do innych użytkowników systemu (np. Do komunikacji z magistralą systemową); przeglądaj za pomocą find /tmp -type s ! -user $UID(gdzie $UIDjest twój identyfikator użytkownika).


1
czy mógłbyś wyjaśnić drugi chmod więcej?
Bartłomiej Lewandowski

@BartlomiejLewandowski go-rwx: brak uprawnień dla grupy i innych. Ustawia to uprawnienia na rwx------(z tym wyjątkiem, że pliki utworzone od tego czasu chmodmogą mieć mniej uprawnień, np rw-------.). Innymi słowy, pliki będą dostępne tylko dla ich właściciela. /tmp/.[!.]*jest dołączenie plików kropek, które zwykle istnieją /tmp.
Gilles

@BartlomiejLewandowski: chmod -go-rwx: ustaw prawa „rwx” na właściciela i grupę. r = odczyt, w = zapis, x = wykonanie (dla pliku) lub enter / traverse (dla katalogu). 777 = rwxrwxrwx (prawa część może być postrzegana jako: „set” r ”set„ w ”set„ x ”, set„ r ”set” w ”set” x ”, set„ r ”set„ w ”set” x „”, który w systemie binarnym jest reprezentowany jako „111111111” (1 do ustawienia, 0 do rozbrojenia). A „111111111” w systemie binarnym jest reprezentowany ósemkowo jako „777” (liczba ósemkowa = grupy 3 bitów, każda grupa ma wartość 0 do 7). Jeżeli „rwxr-xr--” to „111101100”, który ósemkowo to „754”
Olivier Dulac

2
+ T jest nazywany lepkim bitem. Dzięki temu nikt inny niż właściciel nie może usuwać plików, mimo że w innym przypadku uprawnienia to 777. Lepszym rozwiązaniem było pierwotne pozostawienie jądra do pozostawienia często używanych programów w pamięci po ich wyjściu, aby nie musiały być pobierane z dysku przy następnym uruchomieniu. Mówimy o PDP11 dni ....
kurtm

1
@GabrielFair Zastąpiłem polecenie za pomocą symboli wieloznacznych jednym za pomocą funkcji find, która nie napotka na ten problem.
Gilles

10

/tmpi /var/tmppowinien mieć prawo do odczytu, zapisu i wykonywania dla wszystkich; ale zwykle dodawalibyśmy także sticky-bit ( o+t), aby uniemożliwić użytkownikom usuwanie plików / katalogów należących do innych użytkowników. Tak chmod a=rwx,o+t /tmppowinno działać.

Jeśli chodzi o rekurencyjną zmianę uprawnień ... Tak długo, jak właściciel / grupa pozostaje tak samo, jak w przypadku plików i katalogów, nie powinno to stanowić większego problemu. Ale być może możesz zmienić uprawnienia do wszystkiego pod /tmp(nie / tmp sam), aby zapewnić prywatność użytkowników, usuwając rxprawa innych i być może grupy.

Znajdź to dobry sposób na zrobienie tego. Jako root wykonaj:

cd /tmp
find . -type f -exec chmod u=rw,go= {} \;   # (or u=rw,g=r,o= {})
find . -type d -exec chmod u=rwx,go= {} \;  # (or u=rwx,g=rx,o= {})

W typowym systemie stacjonarnym lepiej też uczyń /tmp/.X11-unix/*świat czytelnym, inaczej nie będziesz już mógł uruchamiać aplikacji X.
Gilles

chmod a=rwX,o+t /tmp -Rpowinien zrobić findmagię.
dhill

3
[root@Niflheim tmp]# ls -alF .
total 1632
drwxrwxrwt 15 root root    4096 Apr  7 04:24 ./
drwxr-xr-x 28 root root    4096 Apr  2 21:02 ../
[root@Niflheim tmp]# stat -c '%A %a %n' .
drwxrwxrwt 1777 .

Z komputera CentOS 5.9.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.