Tutoriel Linux

Controleer de identiteit en de groepen van een Linux-gebruiker met id

Débutant4 min de lecture

Een toegang weigering onder Linux komt niet altijd door een vergeten chmod. De opdracht die faalt kan draaien met een andere UID, of het account behoort niet tot de verwachte groep. Voordat u een eigenaar wijzigt, begint u met het identificeren van het daadwerkelijk gebruikte account.

De opdracht id toont de UID, de primaire groep en de secundaire groepen van het huidige proces. Dit is het vertrekpunt wanneer een script, een service of een SSH-sessie niet hetzelfde bestand ziet als u.

Tux controleert de identiteit, de groepen en de rechten van een Linux-account
UID, groepen en permissies moeten samen worden gecontroleerd voordat enige wijziging wordt aangebracht.

Lees de UID, de GID en de groepen met id

Voer id zonder argument in de sessie die problemen vertoont uit:

id

Een uitvoer zoals uid=1000(alex) gid=1000(alex) groups=1000(alex),27(sudo),999(docker) beschrijft de identiteit van het proces. uid is de gebruikersidentificatie. gid is de primaire groep. groups voegt de secundaire groepen toe, vaak diegene die toegang geven tot Docker, de logs of een gedeeld item.

Om slechts één waarde op te halen, gebruik de volgende opties:

  • id -u toont de effectieve UID.
  • id -g toont de effectieve GID.
  • id -Gn somt de namen van de groepen op.
  • id -un toont de naam van het effectieve account.

Het verschil tussen de daadwerkelijke en effectieve identificatie wordt vooral zichtbaar na sudo, in een SUID-binaire of met bepaalde tools die van gebruiker wisselen. Voor een snelle controle van enkel de naam, raadpleeg ook ons artikel over whoami en de effectieve gebruiker.

Controleer een account zonder het in te loggen

Voeg de naam van het account toe om zijn lokale profiel op te vragen. Deze opdracht leest de gebruikersdatabase en verbindt u niet als dit account:

id www-data
id -Gn www-data

Op Debian en Ubuntu is www-data vaak het account voor webservices. Op een andere distributie kan de service apache, nginx of een applicatie-account gebruiken. Controleer het eenheidsbestand of de configuratie van de service in plaats van dit voorbeeld letterlijk over te nemen.

Na het toevoegen van een gebruiker aan een groep kan een al geopende sessie zijn oude groepslijst behouden. Log uit en log opnieuw in voordat u concludeert dat de wijziging is mislukt. De opdracht id gebruiker leest de database opnieuw, maar id alleen beschrijft nog steeds uw huidige proces.

Vergelijk de identiteit van het account en de rechten van het bestand

Het kennen van de groepen is niet genoeg. U moet vervolgens de eigenaar, de groep en de permissies van het betreffende pad lezen:

id
stat -c '%U %G %A %n' /pad/naar/het/bestand
namei -l /pad/naar/het/bestand

stat geeft aan wie het bestand bezit. namei -l toont ook de rechten van elke directory in het pad. Een leesbaar bestand is nutteloos als het account de bovenliggende map niet kan doorlopen, wat het recht x op deze directory vereist.

Corrigeer een weigering niet met chmod 777. Vergelijk eerst de groep van het bestand met id -Gn, en pas vervolgens de eigenaar, de groep of de benodigde rechten aan. Om de groepen en hun gebruik te herzien, lees het beheer van groepen onder Linux. Als u de permissies moet wijzigen, legt onze gids over chmod recursief uit waarom een te brede opdracht veel meer bestanden kan beïnvloeden dan verwacht.

Test onder het betrokken account voordat u sudo wijzigt

Wanneer u administratierechten hebt, voer dan alleen de controle uit onder het account dat het probleem ondervindt:

sudo -u www-data id
sudo -u www-data test -r /pad/naar/het/bestand && echo leesbaar
sudo -u www-data test -x /pad/naar/het/dossier && echo doorloopbaar

De eerste oproep bevestigt de effectieve identiteit. De twee daaropvolgende beantwoorden een specifieke vraag, het lezen van het bestand of het doorlopen van de map. Vervang www-data en de paden voordat u uitvoert. Gebruik sudo -u niet om een productietoepassing te starten enkel om zijn rechten te testen.

Als de toegang blijft geweigerd terwijl UID, groep en Unix-rechten correct lijken, controleer dan ook de ACL met getfacl, de netwerkmontages en SELinux of AppArmor, afhankelijk van uw distributie. Deze mechanismen kunnen een regel bovenop de klassieke rechten toevoegen.

Met id, stat en een test onder het juiste account, weet u waar u moet zoeken voordat u rechten blindelings wijzigt.

sudo apt update && sudo apt upgrade