Zaoszczędź 15% na wszystkich usługach hostingowych

Sprawdź swoje umiejętności i zdobądź Rabat na dowolny plan hostingowy

Użyj kodu: Skills Rozpocznij
Sekcja
Administracja Linux

Jak sprawdzić uprawnienia plików w Linux: Kompletny przewodnik

Linux napędza większość serwerów na świecie — od środowisk VPS Hosting po klasy enterprise Serwery Dedykowane — i nie bez powodu. Jest szybki, stabilny i zbudowany z bezpieczeństwem w rdzeniu. Jednym z najbardziej fundamentalnych filarów tego bezpieczeństwa jest system uprawnień do plików: precyzyjny, elegancki mechanizm, który kontroluje dokładnie, kto może czytać, modyfikować lub wykonywać dowolny plik lub katalog w systemie.

Niezależnie od tego, czy jesteś deweloperem wdrażającym aplikację internetową, administratorem systemu wzmacniającym serwer, czy początkującym uczącym się linii poleceń, zrozumienie, jak sprawdzać i interpretować uprawnienia do plików w Linux, jest umiejętnością niezbędną. Ten przewodnik obejmuje wszystko, co musisz wiedzieć — od podstaw modelu uprawnień po zaawansowane bity specjalne — z praktycznymi poleceniami i przykładami z rzeczywistego świata.

Czym są uprawnienia plików Linux?

Każdy plik i katalog w Linux ma przypisany zestaw uprawnień. Te uprawnienia definiują, jakie działania są dozwolone i przez kogo. Istnieją trzy podstawowe typy uprawnień:

UprawnienieSymbolCo robi na plikuCo robi w katalogu
OdczytrWyświetl zawartość plikuWyświetl listę plików wewnątrz
ZapiswModyfikuj lub usuń plikTwórz lub usuwaj pliki wewnątrz
WykonaniexUruchom plik jako programWejdź (nawiguj do) katalogu

Te trzy uprawnienia są stosowane niezależnie do trzech odrębnych kategorii użytkowników:

  • Właściciel (użytkownik) — Użytkownik, który jest właścicielem pliku, zwykle jego twórca.
  • Grupa — Każdy użytkownik należący do przypisanej grupy pliku.
  • Inni — Wszyscy pozostali użytkownicy w systemie.

Ta macierz uprawnień trzy na trzy daje administratorom Linux szczegółową, potężną kontrolę nad dostępem do każdego zasobu w systemie.

Jak sprawdzić uprawnienia do plików: Polecenie ls -l

Najszybszą i najczęściej używaną metodą sprawdzenia uprawnień do plików jest polecenie ls -l (format długiej listy).

ls -l file.txt

Przykładowe wyjście:

-rw-r--r-- 1 alice developers 1024 Aug 16 12:30 file.txt

Rozłóżmy każdy komponent tego wyjścia:

-  rw-  r--  r--   1   alice   developers   1024   Aug 16 12:30   file.txt
│   │    │    │    │     │          │          │         │             │
│   │    │    │    │     │          │          │         │             └─ Filename
│   │    │    │    │     │          │          │         └─ Last modified
│   │    │    │    │     │          │          └─ File size (bytes)
│   │    │    │    │     │          └─ Group name
│   │    │    │    │     └─ Owner name
│   │    │    │    └─ Number of hard links
│   │    │    └─ Others' permissions
│   │    └─ Group's permissions
│   └─ Owner's permissions
└─ File type (- = regular file, d = directory, l = symlink)

Tak więc -rw-r--r-- mówi nam:

  • Właściciel (alice): Odczyt + Zapis (rw-)
  • Grupa (developers): Tylko odczyt (r--)
  • Inni: Tylko odczyt (r--)

Sprawdzanie uprawnień dla wielu plików

Aby zobaczyć uprawnienia dla wszystkich plików w katalogu na raz:

ls -la /var/www/html

Flaga -a obejmuje ukryte pliki (te zaczynające się od kropki). Jest to szczególnie przydatne podczas audytu katalogów serwera internetowego w środowisku Shared Web Hosting lub VPS.

Uzyskiwanie szczegółowych informacji o uprawnieniach za pomocą stat

Aby uzyskać bardziej szczegółowy przegląd — obejmujący zarówno reprezentacje symboliczne, jak i numeryczne — użyj polecenia stat:

stat file.txt

Przykładowe wyjście:

  File: file.txt
  Size: 1024            Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d    Inode: 131073      Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/   alice)   Gid: ( 1000/developers)
Access: 2024-08-16 12:30:00.000000000 +0000
Modify: 2024-08-16 12:30:00.000000000 +0000
Change: 2024-08-16 12:30:00.000000000 +0000

Kluczowa linia to:

Access: (0644/-rw-r--r--)  Uid: ( 1000/   alice)   Gid: ( 1000/developers)

To daje Ci:

  • Notacja numeryczna (ósemkowa): 0644
  • Notacja symboliczna: -rw-r--r--
  • Identyfikator użytkownika (UID) i Identyfikator grupy (GID) z ich czytelną dla człowieka nazwami

Polecenie stat jest nieocenione podczas rozwiązywania problemów z uprawnieniami na serwerach produkcyjnych, ponieważ zapewnia cały potrzebny kontekst w jednym wyjściu.

Zrozumienie notacji uprawnień numerycznych (ósemkowych)

Uprawnienia Linux można wyrazić jako liczby, co jest formatem używanym przez polecenia takie jak chmod. Każdemu typowi uprawnień przypisana jest wartość:

UprawnienieWartość numeryczna
Odczyt (r)4
Zapis (w)2
Wykonanie (x)1
Brak uprawnień (-)0

Wartość uprawnień dla każdej kategorii użytkownika obliczasz dodając wartości:

KombinacjaObliczenieWartość numeryczna
rwx4 + 2 + 17
rw-4 + 2 + 06
r-x4 + 0 + 15
r--4 + 0 + 04
---0 + 0 + 00

Trzycyfrowa liczba ósemkowa reprezentuje pełny zestaw uprawnień:

0644  →  Owner: 6 (rw-)  |  Group: 4 (r--)  |  Others: 4 (r--)
0755  →  Owner: 7 (rwx)  |  Group: 5 (r-x)  |  Others: 5 (r-x)
0700  →  Owner: 7 (rwx)  |  Group: 0 (---)  |  Others: 0 (---)

Sprawdzanie uprawnień do katalogów

Katalogi używają tego samego modelu uprawnień, ale znaczenie każdego bitu jest nieco inne. Użyj ls -ld (zwróć uwagę na flagę -d) aby sprawdzić sam katalog, a nie jego zawartość:

ls -ld myfolder

Przykładowe wyjście:

drwxr-x--- 2 alice developers 4096 Aug 16 12:30 myfolder

Wiodący d potwierdza, że to jest katalog. Uprawnienia rozkładają się na:

  • Właściciel (alice): rwx — Może wyświetlać listę, tworzyć/usuwać pliki i wchodzić do katalog
  • Grupa (developers): r-x — Może wyświetlać listę plików i wchodzić, ale nie może tworzyć ani usuwać
  • Inni: --- — Brak dostępu

> Ważne: Bit wykonania (x) w katalogu oznacza możliwość wejścia do niego (tzn. użycia cd). Bez x użytkownik nie może nawigować do katalog nawet jeśli ma uprawnienie do odczytu. To jest częste źródło zamieszania dla początkujących.

Specjalne bity uprawnień: setuid, setgid i sticky bit

Poza standardowymi dziewięcioma bitami uprawnień, Linux obsługuje trzy specjalne bity uprawnień, które zapewniają zaawansowaną kontrolę dostępu:

1. setuid (s na bicie wykonania właściciela)

Gdy jest ustawiony na pliku wykonywalnym, program uruchamia się z uprawnieniami właściciela pliku, a nie użytkownika wywołującego. W ten sposób polecenia takie jak passwd pozwalają zwykłym użytkownikom modyfikować /etc/shadow (który jest własnością roota).

ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 Mar 27 2023 /usr/bin/passwd

s na pozycji wykonania właściciela wskazuje setuid.

2. setgid (s na bicie wykonania grupy)

Na pliku program uruchamia się z uprawnieniami grupy. Na katalogu nowe pliki utworzone wewnątrz automatycznie dziedziczą grupę katalogu — przydatne dla współdzielonych folderów projektów.

ls -ld /shared/project
drwxrwsr-x 2 alice developers 4096 Aug 16 12:30 /shared/project

3. Sticky bit (t na bicie wykonania innych)

Gdy jest ustawiony na katalogu, tylko właściciel pliku (lub root) może usuwać lub zmieniać nazwy plików wewnątrz niego, nawet jeśli inni mają uprawnienia do zapisu. To jest standardowa konfiguracja dla /tmp:

ls -ld /tmp
drwxrwxrwt 12 root root 4096 Aug 16 12:30 /tmp

t na końcu sygnalizuje, że sticky bit jest aktywny.

Reprezentacja numeryczna specjalnych bitów:

Specjalny bitWartość numeryczna
setuid4000
setgid2000
Sticky bit1000

Zatem drwxrwxrwt = 1777 (1000 + 777).

Tabela Pełnych Uprawnień

SymbolicznyNumerycznyZnaczenie dla plikuZnaczenie dla katalogu
---0Brak dostępuBrak dostępu
--x1Tylko wykonanieTylko wejście
-w-2Tylko zapisModyfikacja zawartości (z x)
-wx3Zapis + WykonanieWejście i modyfikacja
r--4Tylko odczytLista nazw (wymaga x aby być przydatnym)
r-x5Odczyt + WykonanieLista i wejście
rw-6Odczyt + ZapisLista i modyfikacja (bez wejścia)
rwx7Pełny dostępPełna kontrola

Przykłady uprawnień w praktyce

Oto najczęstsze wzorce uprawnień, które napotkasz w praktyce:

-rw-r--r-- (0644) — Standardowy plik

-rw-r--r-- 1 alice developers 1024 Aug 16 12:30 config.txt

Właściciel może czytać i pisać. Grupa i inni mogą tylko czytać. Typowe dla plików konfiguracyjnych i zawartości internetowej.

-rwxr-xr-x (0755) — Skrypt wykonywalny lub plik binarny

-rwxr-xr-x 1 alice developers 4096 Aug 16 12:30 deploy.sh

Właściciel ma pełny dostęp. Wszyscy inni mogą czytać i wykonywać, ale nie mogą modyfikować. Standard dla skryptów powłoki, plików binarnych serwera internetowego i publicznych plików wykonywalnych.

-rw------- (0600) — Plik prywatny

-rw------- 1 alice alice 1679 Aug 16 12:30 id_rsa

Tylko właściciel może czytać lub pisać. Brak dostępu dla nikogo innego. Wymagane dla prywatnych kluczy SSH — SSH odmówi użycia pliku klucza z szerszymi uprawnieniami.

drwxr-xr-x (0755) — Standardowy katalog publiczny

drwxr-xr-x 5 alice developers 4096 Aug 16 12:30 public_html

Powszechnie używane dla katalogów głównych serwera internetowego. Właściciel ma pełną kontrolę; inni mogą przeglądać i wchodzić.

drwx------ (0700) — Katalog prywatny

drwx------ 3 alice alice 4096 Aug 16 12:30 .ssh

Całkowicie prywatny. Tylko właściciel może uzyskać dostęp. Wymagane dla katalogu ~/.ssh.

drwxrwxrwt (1777) — Zapisywalny dla wszystkich z lepkim bitem

drwxrwxrwt 12 root root 4096 Aug 16 12:30 /tmp

Wszyscy mogą tworzyć pliki, ale tylko właściciel każdego pliku może usunąć swoje własne pliki.

Praktyczne porady dotyczące środowisk serwerowych

Jeśli zarządzasz serwerem Linux — niezależnie od tego, czy jest to VPS uruchamiający aplikację internetową, serwer poczty zabezpieczony za pomocą SSL Certificate, czy maszyna hostująca wiele domen zarejestrowanych za pośrednictwem Domain Registration — oto kilka podstawowych najlepszych praktyk dotyczących uprawnień:

  1. Nigdy nie ustawiaj 777 na plikach lub katalogach chyba że masz bardzo konkretny, tymczasowy powód. Pliki dostępne do zapisu dla wszystkich stanowią poważne zagrożenie bezpieczeństwa.
  2. Pliki serwera internetowego (np. w /var/www/) powinny zazwyczaj mieć 644 dla plików i 755 dla katalogów, będące własnością użytkownika aplikacji.
  3. Klucze SSH muszą mieć 600 dla kluczy prywatnych i 644 dla kluczy publicznych. SSH wymusza to ściśle.
  4. Pliki konfiguracyjne zawierające hasła lub klucze API powinny mieć 600 lub 640 maksymalnie.
  5. Użyj find do audytu uprawnień w całym drzewie katalogów:
   # Find all world-writable files (potential security risk)
   find /var/www -type f -perm -o+w

   # Find all SUID files (for security auditing)
   find / -type f -perm -4000 2>/dev/null

Szybki Przewodnik Poleceń

ZadaniePolecenie
Wyświetl uprawnienia plikuls -l filename
Wyświetl uprawnienia wszystkich plików w kataloguls -la /path/to/dir
Sprawdź uprawnienia samego kataloguls -ld /path/to/dir
Uzyskaj pełne szczegóły wraz z uprawnieniami numerycznymistat filename
Zmień uprawnienia (symboliczne)chmod u+x filename
Zmień uprawnienia (numeryczne)chmod 755 filename
Zmień właściciela plikuchown user:group filename
Rekurencyjnie zmień uprawnieniachmod -R 755 /path/to/dir
Znajdź pliki dostępne do zapisu dla wszystkichfind . -perm -o+w -type f

Podsumowanie

Zrozumienie uprawnień plików Linux to nie tylko ćwiczenie akademickie — to praktyczna, codzienna umiejętność dla każdego, kto zarządza serwerami, wdraża aplikacje lub pracuje w środowisku Linux. Oto podsumowanie kluczowych wniosków:

  • Użyj ls -l aby szybko uzyskać czytelny dla człowieka przegląd uprawnień do plików i katalogów.
  • Użyj stat gdy potrzebujesz zarówno reprezentacji symbolicznej, jak i numerycznej, wraz ze szczegółami właściciela.
  • Opanuj obie notacje — symboliczną (rwx) i numeryczną (755, 644) — ponieważ różne narzędzia i dokumentacja używają ich zamiennie.
  • Pamiętaj o różnicy katalogów: bit wykonywania (x) w katalogu oznacza możliwość wejścia do niego, a nie jego uruchomienia.
  • Bądź świadomy bitów specjalnych — setuid, setgid i sticky bit — ponieważ pojawiają się często w systemach produkcyjnych i mają znaczące implikacje bezpieczeństwa.

Prawidłowe zarządzanie uprawnieniami to kamień węgielny bezpieczeństwa Linux. Niezależnie od tego, czy uruchamiasz projekt osobisty na VPS Hosting czy administrujesz flotą Dedicated Servers, prawidłowe ustawienie uprawnień od początku uchroni Cię przed lukami bezpieczeństwa, uszkodzonymi aplikacjami i niezliczonymi godzinami rozwiązywania problemów w przyszłości.