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 Bezpieczeństwo

Użytkownicy, grupy i uprawnienia Linux: Jeden praktyczny przepływ pracy wdrażania

Żądanie dostępu w poniedziałek rano

Poniedziałek rano, nowy członek zespołu dołącza do Twojego projektu i potrzebuje dostępu do wspólnego obszaru roboczego development na Twoim Ubuntu VPS dzisiaj. Powinien być w stanie się zalogować, otworzyć katalog zespołu i wykonywać normalną pracę bez czekania na kogoś innego przy każdym małym zadaniu. Nie powinien otrzymać dostępu root. Powinien również trzymać się z dala od ograniczonego obszaru release-secret.

Administrator managing a secure server environment

To jest miejsce, gdzie użytkownicy Linux, grupy i uprawnienia przestają być trzema oddzielnymi tematami podręcznika i zaczynają działać jak jeden praktyczny system. Może serwer znajduje się na VPS AlexHost, może gdzieś indziej, ale pytanie o dostęp jest wszędzie takie samo: jak dać użyteczny dostęp bez dawania pełnej kontroli?

Ten przewodnik podąża za tym jednym żądaniem onboardingu od początku do końca, więc każda komenda ma jasne zadanie i miejsce w historii. Jeśli terminy takie jak user, group i permission kiedykolwiek wydawały się niejasne na własną rękę, to jest najłatwiejszy sposób, aby je zrozumieć.

Workflow:
user account → group membership → ownership alignment → permissions → verification

Jeden model mentalny przed jakimikolwiek poleceniami

Przed jakimikolwiek poleceniami, trzymaj w głowie jedną analogię: myśl o serwerze jak o budynku biurowym. Użytkownik to identyfikator dla jednej osoby. Grupa to dział, do którego należą. Uprawnienia to reguły dostępu do pomieszczeń i szafek. Dostęp do Linux staje się znacznie łatwiejszy, gdy czytasz go w ten sposób zamiast zapamiętywać izolowane polecenia.

Trzy podstawowe pytania są proste:

  • Użytkownik odpowiada: “Kim jest ta osoba?”
  • Grupa odpowiada: “Do którego wspólnego zespołu należą?”
  • Uprawnienia odpowiadają: “Co mogą tutaj robić?”

To jest również serce zasady najmniejszych uprawnień: daj komuś dokładnie tyle dostępu, ile potrzebuje do wykonania pracy, i nic więcej. Same uprawnienia nigdy nie rozwiążą całego problemu, ponieważ prawidłowa reguła na złej tożsamości lub złym zespole nadal daje błędny wynik.

Person looking up definitions in an illustrated reference book

Ta sama logika pojawia się na każdym pliku i katalogu. Linux najpierw sprawdza, czy jesteś właścicielem, czy pasujeszdo grupy ścieżki, czy też należysz do others — czyli wszystkich pozostałych na maszynie. Dopiero wtedy stosuje odpowiednią regułę. Dlatego ta sama ścieżka może zachowywać się inaczej dla różnych użytkowników.

Poniższa kompaktowa tabela tłumaczeń wystarczy do reszty tego artykułu:

Termin LinuxZnaczenie w prostym językuPytanie, na które odpowiada
👤 userNazwane konto dla jednej osobyKim jest ta osoba?
👥 groupWspólne członkostwo w zespoleW jakim zespole są?
🔑 ownerUżytkownik przypisany do pliku lub kataloguDo kogo ta ścieżka jest przypisana w pierwszej kolejności?
📁 group (na ścieżce)Zespół przypisany do tej ścieżkiKtóry zespół otrzymuje wspólną regułę?
🌐 othersWszyscy pozostali na maszynieCo mogą robić wszyscy pozostali?

📝 Uwaga: Poniższe polecenia używają przykładów przyjaznych dla Ubuntu, ale sam model mentalny stosuje się ogólnie do Linux.

Od tego momentu pierwszy krok staje się oczywisty: zanim Maya będzie mogła coś udostępnić zespołowi, system musi wiedzieć, że istnieje jako odrębna osoba.

Krok 1: Utwórz osobę w systemie

Konto użytkownika Linux to nie tylko etykieta na liście. Daje Maya tożsamość logowania, katalog domowy i oddzielny kontekst pracy od wszystkich innych na serwerze. To rozdzielenie umożliwia odpowiedzialność. Jeśli coś się zmieni, możesz stwierdzić, kto to zmienił. Jeśli dostęp musi pozostać ograniczony, możesz go ograniczyć do jednego rzeczywistego konta zamiast współdzielonego tajemniczego logowania.

Na Ubuntu, przyjazny dla człowieka sposób na utworzenie tego konta to:

sudo adduser maya

Ubuntu przeprowadzi Cię przez normalną konfigurację i zwykle jednocześnie utworzy /home/maya. Możesz również zobaczyć useradd w skryptach lub dokumentacji niskiego poziomu. W systemach Debian/Ubuntu adduser jest zwykle bardziej przyjaznym wyborem dla normalnego konta użytkownika.

Creating Maya's user account with adduser

Dlatego też konta współdzielone to taki zły nawyk. Jeśli wiele osób loguje się jako ten sam użytkownik — lub gorzej, „po prostu używa root” — tracisz możliwość śledzenia natychmiast, a każda późniejsza decyzja dotycząca uprawnień staje się bardziej niedbała. Konto użytkownika odpowiada na pytanie, kim jest Maya. Nie odpowiada jeszcze na pytanie, jaką współdzieloną przestrzeń projektu może używać.

Krok 2: Umieść ich w odpowiednim zespole

Teraz Maya istnieje, ale nadal nie ma żadnego związku z udostępnianą przestrzenią roboczą. To jest miejsce, gdzie grupy stają się przydatne. Grupa podstawowa domyślnie podąża za kontem. Grupy uzupełniające to dodatkowe zespoły, które przypisujesz użytkownikowi, aby dostęp udostępniony skalował się czyszczej na wielu osobach i wielu projektach.

Jeśli grupa projektu jeszcze nie istnieje, utwórz ją najpierw. Następnie dołącz Maya do tej grupy zamiast zastępować jej istniejące członkostwa uzupełniające.

⚠️ Ostrzeżenie: usermod -G devteam maya bez -a może zastąpić istniejące grupy uzupełniające Maya. Flaga -a oznacza „dołącz” i to jest część, która utrzymuje to bezpiecznie.

Użyj następujących poleceń, aby utworzyć grupę i sprawdzić, czy Maya jest jej częścią:

sudo groupadd devteam
sudo usermod -aG devteam maya
id maya

Jeśli devteam już istnieje, pomiń linię groupadd. W danych wyjściowych id chcesz zobaczyć devteam wymieniony wśród grup Maya:

Adding Maya to devteam and verifying her group membership

Te dane wyjściowe dowodzą, że członkostwo w zespole istnieje. Nie dowodzi to jeszcze, że Maya może korzystać z przestrzeni roboczej. Bycie w devteam nadal nic nie robi, jeśli sam katalog jest własnością i zgrupowany w sposób, który ignoruje ten zespół.

Krok 3: Dopasuj własność do obszaru roboczego

To jest brakujące ogniwo stojące za dużą frustracją początkujących. Następne pytanie dotyczy samego obszaru roboczego: kto go posiada i która grupa jest do niego przypisana? Dopóki to nie będzie wyrównane, prawidłowe członkostwo zespołu Mayi nie będzie miało gdzie się przydać.

W tym przewodniku użyj jednej ścieżki udostępnionej i jednej ścieżki ograniczonej. Udostępniony obszar zespołu będzie /srv/devworkspace. Obszar prywatny będzie /srv/release-secrets, z jednym przykładowym plikiem wewnątrz. Utwórz obie ścieżki najpierw:

sudo mkdir -p /srv/devworkspace /srv/release-secrets
sudo touch /srv/release-secrets/deploy-key.txt

Creating the shared workspace and restricted directory

Następnie sprawdź, jak te ścieżki wyglądają obecnie:

ls -ld /srv/devworkspace /srv/release-secrets
ls -l /srv/release-secrets/deploy-key.txt

Inspecting the initial ownership and permissions of both paths

-d ma tutaj znaczenie, ponieważ mówi ls aby opisał sam katalog zamiast wymieniać jego zawartość. W długim wykazie zacznij od trzech elementów. Najpierw spójrz na ciąg uprawnień po lewej stronie. Następnie sprawdź właściciela i grupę. Jeśli obie ścieżki nadal pokazują root root, członkostwo Mayi w nowej grupie devteam nie ma jeszcze nic przydatnego do połączenia.

Jeśli trzeba było tylko zmienić grupę, chgrp devteam /srv/devworkspace by to zrobiło. Tutaj chown owner:group jest jaśniejsze, ponieważ ustawia pełny cel w jednej linii. Udostępniony obszar roboczy powinien należeć do root:devteam, podczas gdy ścieżka ograniczona powinna pozostać root:root:

sudo chown root:devteam /srv/devworkspace
sudo chown root:root /srv/release-secrets /srv/release-secrets/deploy-key.txt

Po tym wyrównaniu własności ważne części wykazu powinny wyglądać tak:

drwxr-xr-x  root devteam  /srv/devworkspace
drwxr-xr-x  root root     /srv/release-secrets
-rw-r--r--  root root     /srv/release-secrets/deploy-key.txt

permissions  owner  group

💡 Wskazówka: Trzymaj ograniczone sekrety poza obszarem roboczym z możliwością zapisu dla grupy. To utrzymuje konfigurację łatwą do zrozumienia i unika bałaganu w przypadkach zapisu do katalogów, które nie są pomocne w przepływie onboardingu dla początkujących.

W tym momencie własność mówi Linuksowi, którego obszaru każda ścieżka jest przypisana. Ostatnim krokiem jest zdefiniowanie tego, co właściciel, ta grupa i wszyscy inni mogą tam faktycznie robić.

Krok 4: Ustaw uprawnienia zgodne z zadaniem

Po wyrównaniu własności możesz teraz ustawić rzeczywistą regułę dla każdej ścieżki: kto może ją czytać, zmieniać lub wchodzić do niej. Pomyśl o zadaniu w pierwszej kolejności, liczby w drugiej. Nie próbujesz zapamiętać całego wszechświata uprawnień; wyrażasz jedną praktyczną regułę dla jednej wspólnej przestrzeni roboczej i jednego ograniczonego obszaru tajnego.

Person presenting a rules document with a warning symbol

Poniższa mała matryca to jedyna, której potrzebuje większość początkujących:

UprawnienieNa plikuW katalogu
rCzytaj zawartość plikuWyświetl nazwy wewnątrz
wZmień zawartość plikuUtwórz, zmień nazwę lub usuń wpisy wewnątrz
xUruchom plik jako program lub skryptWejdź/przejdź przez katalog

Wiersz katalogu to pułapka. W katalogu x nie oznacza „uruchom folder”. Oznacza to, że możesz wejść na tę ścieżkę lub przejść przez nią w drodze do czegoś głębszego. Dlatego plik może wyglądać na czytelny teoretycznie i nadal zawieść w praktyce, jeśli nie możesz przejść przez ścieżkę katalogu, która do niego prowadzi.

Teraz zastosuj reguły, które pasują do tej historii onboardingu. Wspólna przestrzeń robocza zespołu powinna być użyteczna dla root i devteam, ale zamknięta dla wszystkich innych. Tajny katalog powinien pozostać tylko dla root, a tajny plik wewnątrz niego powinien pozostać czytelny tylko dla root:

sudo chmod 770 /srv/devworkspace
sudo chmod 700 /srv/release-secrets
sudo chmod 600 /srv/release-secrets/deploy-key.txt

Te liczby są łatwiejsze niż się na początku wydają, gdy trzymasz je przywiązane do zadania. 770 na /srv/devworkspace oznacza, że root ma pełny dostęp, a devteam ma taki sam dostęp wspólny. Wszyscy inni tam nic nie mają. 700 na /srv/release-secrets oznacza, że tylko root może nawet wejść do tego katalogu. 600 na deploy-key.txt oznacza, że tylko root może czytać lub zmieniać plik. Ważna część to nie arytmetyka. To, że każdy tryb odzwierciedla decyzję, którą już podjąłeś dotyczącą tej ścieżki.

drwxrwx---  root devteam  /srv/devworkspace
drwx------  root root     /srv/release-secrets
-rw-------  root root     /srv/release-secrets/deploy-key.txt

⚠️ Ostrzeżenie: chmod 777 nie jest rzeczywistą naprawą. Zwykle oznacza to, że własność lub projekt ścieżki jest błędny, więc ktoś rozpyla szerokie otwarte uprawnienia na wierzchu błędu zamiast naprawiać rzeczywisty projekt dostępu.

Jedna zaawansowana notatka, celowo krótka: w bardziej ruchliwych katalogach wspólnych administratorzy czasami używają zachowania setgid katalogu, aby nowo utworzone pliki automatycznie dziedziczyły grupę zespołu. To jest przydatne później, ale należy do artykułu uzupełniającego. Dla tego przepływu pracy zwykli użytkownicy, grupy, własność i podstawowe reguły rwx są wystarczające.

Krok 5: Weryfikacja dostępu i granic

Konfiguracja to tylko połowa pracy. Dobre wdrażanie Linux również testuje granicę. Warunek sukcesu to nie tylko „Maya może coś zrobić”. To „Maya może wykonać zamierzoną pracę i nadal nie może wejść na ścieżkę z ograniczeniami”.

Uruchom świeży kontekst logowania dla Maya, a następnie przetestuj jedną dozwoloną akcję i jedną odrzuconą akcję:

su - maya
cd /srv/devworkspace
touch first-day-check.txt
ls -l /srv/devworkspace

Maya entering the shared workspace and creating a test file

Następnie przetestuj granicę:

cd /srv/release-secrets
cat /srv/release-secrets/deploy-key.txt

Test workspace powinien się powieść. Maya powinna być w stanie wejść do /srv/devworkspace i utworzyć tam prosty plik. Test graniczny powinien się nie powieść z błędem uprawnień, a ta porażka to sygnał sukcesu. Najmniejsze uprawnienia powinny mieć krawędzie.

💡 Wskazówka: Jeśli Maya nadal nie może używać /srv/devworkspace mimo że polecenia wyglądają prawidłowo, otwórz świeżą sesję logowania i przetestuj ponownie. Nowe członkostwo w grupach uzupełniających nie zawsze pojawia się konsekwentnie w starszych powłokach.

To jest spokojny sposób na weryfikację wdrażania: potwierdź ścieżkę sukcesu, a następnie potwierdź limit. Gdy zrobisz oba, przepływ pracy przestaje być teorią i staje się czymś, czemu możesz zaufać na następnym serwerze.

Częste błędy, które psują model

Większość zamieszania związanego z uprawnieniami Linux nie wynika z tajemniczości Linux. Zwykle pochodzi z tego samego małego zestawu błędów kategorii. Czasami użytkownik jest w złej drużynie. Czasami własność ścieżki jest zła. Czasami prawdziwym problemem jest złe założenie o tym, co oznacza x, lub skrót uprawnień używany zamiast właściwego projektu.

Facts and myths shown side by side with check and rejection symbols

Poniższa tabela to praktyczny sposób na debugowanie tej mgły:

MitKorekta
“Maya jest w devteam, więc dostęp powinien już działać.”Członkostwo w grupie ma znaczenie tylko wtedy, gdy właściciel/grupa ścieżki i uprawnienia pasują do tego modelu zespołu.
“usermod -G jest w porządku samo w sobie.”Bez -a, może zastąpić istniejące grupy dodatkowe zamiast dołączać jeszcze jedną.
“Nowe członkostwo w grupie stosuje się natychmiast wszędzie.”Istniejące sesje mogą wymagać świeżego logowania, zanim zmiana pojawi się konsekwentnie.
“Katalog x to to samo co plik x.”W katalogu x oznacza wejście/przejście ścieżki, a nie wykonanie programu.
“chmod 777 rozwiązuje problemy z uprawnieniami.”Ukrywa rzeczywisty problem z własnością lub projektem ścieżki, dając szeroki dostęp dla wszystkich.
“Jeśli to jest irytujące, po prostu daj prawa administratora.”sudo lub root omija model zamiast go naprawiać, co podważa zasadę najmniejszych uprawnień.

Większość problemów z uprawnieniami wynika z pominięcia warstwy i zbyt wczesnego sięgnięcia po chmod. Gdy już wiesz, czy problem dotyczy tożsamości, członkostwa w zespole, własności czy reguły ścieżki, rozwiązanie staje się znacznie bardziej oczywiste.

Praktyczne podsumowanie

Kontrola dostępu Linux staje się znacznie łatwiejsza, gdy pracujesz systematycznie zamiast traktować użytkowników, grupy i uprawnienia jak oddzielne zagadnienia. W tym przykładzie Maya otrzymała dokładnie to, czego potrzebowała. Ma rzeczywisty login i dostęp zespołowy do wspólnego obszaru roboczego. Nie ma dostępu do ścieżki release-secret.

Person standing beside a completed practical checklist

Użyj tej listy kontrolnej na dowolnym VPS Ubuntu lub małym hostowanym serwerze Linux:

  1. Utwórz tożsamość.
  2. Przypisz wspólny zespół.
  3. Wyrównaj własność ścieżki i grupę.
  4. Ustaw regułę uprawnień dla tego zadania.
  5. Przetestuj zarówno dostęp, jak i granice.

To jest wielokrotnie używana lista kontrolna: tożsamość → zespół → reguła, z wyrównaniem ścieżki pośrodku, aby reguła miała właściwe miejsce do zastosowania. Jeśli chcesz pójść głębiej, naturalne następne kroki obejmują dostęp SSH i sudo. Wzorce katalogów wspólnych i szersze zarządzanie użytkownikami/grupami Linux opierają się na tej samej podstawie. Logika podstawowa się nie zmienia; po prostu stosujesz ją do bardziej konkretnych sytuacji.