Tutoriel Linux

Sprawdź tożsamość i grupy użytkownika Linux za pomocą id

Débutant4 min de lecture

Odmowa dostępu w systemie Linux nie zawsze wynika z zapomnianego chmod. Polecenie, które zawodzi, może być uruchamiane pod innym UID lub jego konto nie należy do oczekiwanej grupy. Zanim zmodyfikujesz właściciela, zacznij od zidentyfikowania rzeczywiście używanego konta.

Polecenie id wyświetla UID, główną grupę oraz grupy pomocnicze bieżącego procesu. To punkt wyjścia, gdy skrypt, usługa lub sesja SSH nie widzi tego samego pliku, co ty.

Tux sprawdza tożsamość, grupy i uprawnienia konta Linux
UID, grupy i uprawnienia powinny być sprawdzane razem przed dokonaniem jakichkolwiek zmian.

Odczytywanie UID, GID i grup za pomocą id

Uruchom id bez argumentów w sesji, która sprawia problemy:

id

Wyjście takie jak uid=1000(alex) gid=1000(alex) groups=1000(alex),27(sudo),999(docker) opisuje tożsamość procesu. uid to identyfikator użytkownika. gid to grupa główna. groups dodaje grupy pomocnicze, często te, które dają dostęp do Dockera, do dzienników lub do udostępniania.

Aby uzyskać tylko jedną wartość, użyj następujących opcji:

  • id -u wyświetla efektywny UID.
  • id -g wyświetla efektywny GID.
  • id -Gn wyświetla nazwy grup.
  • id -un wyświetla nazwę efektywnego konta.

Różnica między identyfikatorem rzeczywistym a efektywnym pojawia się zwłaszcza po sudo, w binarnym pliku SUID lub z niektórymi narzędziami, które zmieniają użytkownika. Aby szybko sprawdzić tylko nazwę, zapoznaj się również z naszym artykułem na temat whoami i użytkownika efektywnego.

Inspekcja konta bez logowania się

Dodaj nazwę konta, aby zapytać o jego lokalny profil. To polecenie odczytuje bazę użytkowników i nie loguje cię na to konto:

id www-data
id -Gn www-data

Na Debianie i Ubuntu, www-data to często konto dla usług internetowych. W innej dystrybucji usługa może używać apache, nginx lub konta aplikacyjnego. Sprawdź plik jednostki lub konfigurację usługi zamiast przyjmować ten przykład bez zmian.

Po dodaniu użytkownika do grupy, już otwarta sesja może zachować swoją starą listę grup. Wyloguj się, a następnie zaloguj ponownie, zanim stwierdzisz, że zmiana się nie powiodła. Polecenie id użytkownik ponownie odczytuje bazę, ale id samo w sobie zawsze opisuje twój bieżący proces.

Porównanie tożsamości konta i uprawnień pliku

Znajomość grup to za mało. Należy następnie odczytać właściciela, grupę i uprawnienia dotyczące danego ścieżki:

id
stat -c '%U %G %A %n' /ścieżka/do/pliku
namei -l /ścieżka/do/pliku

stat wskazuje, do kogo należy plik. namei -l również wyświetla prawa każdego katalogu na ścieżce. Plik, do którego można uzyskać dostęp, nie ma znaczenia, jeśli konto nie może przejść folderu nadrzędnego, co wymaga prawa x na tym katalogu.

Nie koryguj odmowy przy użyciu chmod 777. Najpierw porównaj grupę pliku z id -Gn, a następnie dostosuj właściciela, grupę lub potrzebne uprawnienia. Aby przejrzeć grupy i ich zastosowania, przeczytaj zarządzanie grupami w systemie Linux. Jeśli musisz zmodyfikować uprawnienia, nasz przewodnik po chmod rekurencyjny wyjaśnia, dlaczego zbyt szerokie polecenie może wpłynąć na znacznie więcej plików, niż się spodziewasz.

Testuj pod odpowiednim kontem przed modyfikacją sudo

Gdy masz prawa administracyjne, wykonuj kontrolę tylko pod kontem, które napotyka problem:

sudo -u www-data id
sudo -u www-data test -r /ścieżka/do/pliku && echo czytelny
sudo -u www-data test -x /ścieżka/do/katalogu && echo przejezdny

Pierwsze wywołanie potwierdza tożsamość efektywną. Dwa następne odpowiadają na konkretne pytanie, czytanie pliku lub przechodzenie przez katalog. Zamień www-data oraz ścieżki przed wykonaniem. Nie używaj sudo -u do uruchomienia aplikacji produkcyjnej tylko w celu testowania jej uprawnień.

Jeśli dostęp nadal jest odmawiany, mimo że UID, grupa i uprawnienia Unix wydają się poprawne, sprawdź również ACL za pomocą getfacl, montowanie sieciowe oraz SELinux lub AppArmor w zależności od twojej dystrybucji. Te mechanizmy mogą dodać zasady ponad klasycznymi uprawnieniami.

Dzięki id, stat i testowi w odpowiednim koncie wiesz, gdzie szukać przed dokonaniem ślepych zmian w uprawnieniach.

sudo apt update && sudo apt upgrade