Tutoriel Linux

Zkontrolujte identitu a skupiny uživatele Linux pomocí id

Débutant4 min de lecture

Odmítnutí přístupu v systému Linux ne vždy vyplývá z opomenutého chmod. Příkaz, který selže, může být spuštěn s jiným UID, nebo jeho účet nepatří do očekávané skupiny. Před změnou vlastníka začněte identifikací skutečně používaného účtu.

Příkaz id zobrazuje UID, primární skupinu a sekundární skupiny aktuálního procesu. To je výchozí bod, když skript, služba nebo SSH relace nevidí stejný soubor jako vy.

Tux kontroluje identitu, skupiny a práva Linuxového účtu
UID, skupiny a oprávnění by měly být kontrolovány společně před jakoukoliv změnou.

Čtení UID, GID a skupin pomocí id

Spusťte id bez argumentů v relaci, která činí problémy:

id

Výstup jako uid=1000(alex) gid=1000(alex) groups=1000(alex),27(sudo),999(docker) popisuje identitu procesu. uid je identifikátor uživatele. gid je primární skupina. groups přidává sekundární skupiny, často ty, které otevírají přístup k Dockeru, logům nebo sdílení.

Abychom získali pouze jednu hodnotu, použijte následující možnosti:

  • id -u zobrazuje efektivní UID.
  • id -g zobrazuje efektivní GID.
  • id -Gn zobrazuje názvy skupin.
  • id -un zobrazuje název efektivního účtu.

Rozdíl mezi skutečným a efektivním identifikátorem se objevuje hlavně po sudo, v SUID binárním souboru nebo s některými nástroji, které mění uživatele. Pro rychlé ověření pouze názvu se podívejte také na náš článek o whoami a efektivním uživateli.

Prozkoumat účet bez otevření jeho relace

Přidejte název účtu pro dotaz na jeho místní kartu. Tento příkaz čte uživatelskou databázi a nepřihlašuje vás pod tímto účtem:

id www-data
id -Gn www-data

Na Debianu a Ubuntu je www-data často účet webových služeb. Na jiné distribuci může služba používat apache, nginx nebo aplikační účet. Zkontrolujte jednotkový soubor nebo konfiguraci služby, místo abyste převzali tento příklad tak, jak je.

Po přidání uživatele do skupiny může být již otevřená relace schopna udržet svůj starý seznam skupin. Odhlaste se a poté se znovu přihlaste, než usoudíte, že změna selhala. Příkaz id uživatel znovu čte databázi, ale id sám popisuje vždy váš aktuální proces.

Porovnat identitu účtu a práva souboru

Znalost skupin nestačí. Je také důležité přečíst vlastníka, skupinu a oprávnění dané cesty:

id
stat -c '%U %G %A %n' /cesta/k/souboru
namei -l /cesta/k/souboru

stat uvádí, komu soubor patří. namei -l také zobrazuje oprávnění každého adresáře na cestě. Čitelný soubor nemá smysl, pokud účet nemůže projít nadřazeným adresářem, což vyžaduje právo x na tento adresář.

Neopravujte odmítnutí přístupu pomocí chmod 777. Nejprve porovnejte skupinu souboru se id -Gn, a pak upravte vlastnictví, skupinu nebo potřebná práva. Chcete-li zkontrolovat skupiny a jejich použití, přečtěte si správu skupin v Linuxu. Pokud musíte měnit oprávnění, náš průvodce o chmod rekurzivně vysvětluje, proč může příliš široký příkaz ovlivnit mnohem více souborů, než jste očekávali.

Otestovat přímo pod dotčeným účtem před úpravou sudo

Pokud máte administrační práva, proveďte kontrolu pouze pod účtem, kterému problém nastává:

sudo -u www-data id
sudo -u www-data test -r /cesta/k/souboru && echo čitelný
sudo -u www-data test -x /cesta/k/adresáři && echo průchodný

První volání potvrzuje efektivní identitu. Dvě následující odpovídají na konkrétní otázku, zda je soubor čitelný nebo zda lze projít adresářem. Před spuštěním nahraďte www-data a cesty. Nepoužívejte sudo -u k zahájení aplikace v produkci pouze proto, abyste otestovali její práva.

Pokud přístup zůstává odmítnut, přestože se UID, skupina a oprávnění Unixu zdají být správné, zkontrolujte také ACL pomocí getfacl, síťová připojení a SELinux nebo AppArmor v závislosti na vaší distribuci. Tyto mechanismy mohou přidat pravidlo nad běžná práva.

S pomocí id, stat a testu pod správným účtem víte, kde hledat, než začnete slepě měnit práva.

sudo apt update && sudo apt upgrade