Where is dmesg in Ubuntu?

dmesg: 'Operation not permitted' fejl i Ubuntu

05/09/2025

Rating: 4.12 (7492 votes)

Mange brugere af Ubuntu og andre moderne Linux-distributioner har oplevet en forvirrende fejlmeddelelse, når de forsøger at bruge et af de mest fundamentale diagnostiske værktøjer: dmesg. Fejlen, "Operation not permitted" (dansk: Handling ikke tilladt), kan virke som en systemfejl, især for dem, der har brugt ældre systemer, hvor kommandoen fungerede uden problemer for alle brugere. Sandheden er dog, at dette ikke er en fejl, men en bevidst sikkerhedsforanstaltning. I denne dybdegående artikel vil vi udforske, hvad dmesg er, hvorfor denne begrænsning eksisterer, og hvordan du korrekt og sikkert kan få adgang til de oplysninger, du har brug for, for at diagnosticere dit system.

Where is dmesg in Ubuntu?
Indholdsfortegnelse

Hvad er dmesg og hvorfor er det vigtigt?

dmesg (en forkortelse for "display message" eller "driver message") er et kommandolinjeværktøj, der udskriver kernens ringbuffer. Tænk på kernens ringbuffer som en løbende logbog, der føres af selve hjertet i dit operativsystem – Linux-kernen. Lige fra det øjeblik systemet starter, begynder kernen at registrere vigtige hændelser.

Disse hændelser omfatter:

  • Hardwaregenkendelse: Når din computer starter op, registrerer kernen alle tilsluttede hardwareenheder, såsom CPU, RAM, harddiske, USB-porte, netværkskort og grafikkort. dmesg viser detaljerede oplysninger om denne proces.
  • Enhedsdrivere: Når en driver indlæses (eller fejler i at blive indlæst) for en bestemt hardwareenhed, logges det. Dette er yderst nyttigt til fejlfinding af enheder, der ikke fungerer korrekt.
  • Fejl og advarsler: Hvis en hardwareenhed opfører sig unormalt, eller hvis der opstår en softwarefejl på kernel-niveau, vil en meddelelse sandsynligvis blive vist i dmesg. Det kan være alt fra I/O-fejl på en harddisk til problemer med strømstyring.
  • Tilslutning af enheder: Når du tilslutter en USB-enhed, som f.eks. en mus eller en ekstern harddisk, kan du se i realtid, hvordan kernen registrerer enheden og tildeler den en driver.

Kort sagt er dmesg et uvurderligt værktøj for systemadministratorer og avancerede brugere til at få et dybt indblik i systemets helbred og opførsel på det laveste niveau.

Forståelsen bag fejlen: "Operation not permitted"

Den centrale årsag til, at du som en almindelig bruger ser denne fejl, er en bevidst sikkerhedsforbedring i moderne Linux-kerner. Denne ændring styres af en kernel-parameter kaldet kernel.dmesg_restrict.

På de fleste nyere systemer er værdien af dmesg_restrict som standard sat til '1'. Når den er sat til '1', betyder det, at kun brugere med særlige rettigheder (typisk root-brugeren) har lov til at læse kernens logbuffer direkte. Hvis den blev sat til '0', ville enhver bruger på systemet kunne køre dmesg uden problemer.

Men hvorfor denne ændring? Kernens logbuffer kan indeholde følsomme oplysninger, som kan udnyttes af ondsindede brugere eller software. Disse oplysninger kan omfatte:

  • Hukommelsesadresser: Specifikke adresser i systemets hukommelse kan afsløres, hvilket potentielt kan hjælpe med at omgå sikkerhedsforanstaltninger som ASLR (Address Space Layout Randomization).
  • Detaljerede hardwareoplysninger: Præcise oplysninger om hardware kan bruges til at identificere specifikke sårbarheder i en enheds firmware eller driver.
  • Informationslækager: Selvom det er sjældent, kan fejlmeddelelser fra drivere utilsigtet lække små stykker data, der behandles.

Ved at begrænse adgangen til dmesg hærder systemet sig mod potentielle sikkerhedsrisici. Selvom det kan virke som en ulempe, er det en del af en bredere indsats for at gøre Linux-systemer mere sikre som standard.

De korrekte metoder til at få adgang til Kernel-logfiler

Heldigvis er der flere sikre og anbefalede måder at få adgang til disse vigtige oplysninger på, selv med dmesg_restrict aktiveret.

Metode 1: Brug af `sudo` (Den enkle metode)

Den mest direkte måde at omgå restriktionen på er at køre kommandoen med administrative rettigheder ved hjælp af `sudo`. `sudo` (superuser do) lader dig midlertidigt udføre en kommando som root-brugeren.

sudo dmesg

Du vil blive bedt om din adgangskode. Når du har indtastet den, vil kommandoen blive udført med de nødvendige rettigheder, og du vil se det fulde output fra kernens ringbuffer. For at gøre outputtet mere læsbart, især hvis det er langt, kan du sende det videre til en pager som `less`:

sudo dmesg | less

Dette er den hurtigste og mest almindelige metode til en hurtig inspektion af kernel-loggen.

What is operation not permitted error when running dmesg as non root user?
The Operation not permitted error when running dmesg as non root user it is the expected behavior. See the answers bellow. Example when I try to run dmesg with my current user: I think that's the expected behaviour: What are the permissions for that file? And what is /usr/bin/qlstatus? Yes i was wrong about dmesg.

Metode 2: Brug af `journalctl` (Den moderne metode)

En mere moderne og fleksibel tilgang er at bruge `journalctl`, som er en del af `systemd`, det system- og servicehåndteringsværktøj, der bruges af Ubuntu og mange andre distributioner. `journald` indsamler logs fra mange kilder, herunder kernen.

For at se kernel-logmeddelelserne via `journalctl` skal du bruge `-k` eller `--dmesg` flaget:

journalctl -k

Fordelen ved `journalctl` er enorm:

  • Adgangskontrol: Som standard kan brugere, der er medlem af grupperne `adm` eller `systemd-journal`, læse systemloggen uden at skulle bruge `sudo` hver gang. Dette er en mere elegant måde at give adgang på.
  • Filtrering: `journalctl` tilbyder kraftfulde filtreringsmuligheder. Du kan filtrere efter tid, opstartssession, servicenavn og meget mere. For eksempel, for at se kernel-meddelelser fra den aktuelle opstartssession: journalctl -k -b 0.
  • Persistent lagring: I modsætning til `dmesg`, som kun viser den aktuelle ringbuffer (der kan blive overskrevet), kan `journalctl` konfigureres til at gemme logs permanent på tværs af genstarter.

Metode 3: Deaktivering af `dmesg_restrict` (Ikke anbefalet)

For fuldstændighedens skyld er det værd at nævne, at du kan deaktivere denne sikkerhedsfunktion. Dette frarådes dog kraftigt på systemer med flere brugere eller systemer, der er tilgængelige fra internettet.

For at deaktivere det midlertidigt (indtil næste genstart):

sudo sysctl -w kernel.dmesg_restrict=0

For at gøre ændringen permanent skal du oprette en ny `.conf`-fil i `/etc/sysctl.d/`:

echo 'kernel.dmesg_restrict=0' | sudo tee /etc/sysctl.d/99-dmesg-restrict.conf

Efter en genstart vil alle brugere igen kunne køre `dmesg` uden `sudo`. Gør kun dette, hvis du fuldt ud forstår de sikkerhedsmæssige konsekvenser.

Sammenligning af metoder

Her er en hurtig oversigt over de forskellige tilgange:

MetodeSikkerhedFleksibilitetAnbefaling
sudo dmesgHøj (Kræver administrative rettigheder)Lav (Viser kun den aktuelle buffer)God til hurtige tjek.
journalctl -kHøj (Styres via gruppemedlemskab)Meget høj (Filtrering, persistent lagring)Stærkt anbefalet for de fleste formål.
Ændre `dmesg_restrict`Lav (Eksponerer kernel-log for alle brugere)N/AAnbefales ikke, undtagen i specielle tilfælde.

Hvor er dmesg placeret?

For at besvare et andet almindeligt spørgsmål: selve `dmesg`-programmet er en eksekverbar fil, der normalt findes i /bin/ eller /usr/bin/. Du kan finde dens præcise placering på dit system ved at køre kommandoen:

which dmesg

Dette vil typisk returnere noget i retning af /usr/bin/dmesg.

Ofte Stillede Spørgsmål (FAQ)

Hvorfor virkede `dmesg` før uden `sudo` på ældre systemer?

Ældre Linux-distributioner og kernel-versioner havde ikke `dmesg_restrict` aktiveret som standard. Sikkerhedslandskabet har ændret sig, og moderne systemer prioriterer en mere restriktiv standardkonfiguration for at beskytte mod potentielle sårbarheder.

Er outputtet fra `journalctl -k` identisk med `dmesg`?

Ja, de viser begge den samme information fra kernens ringbuffer. `journalctl` præsenterer det dog ofte med yderligere metadata, såsom tidsstempler i et mere detaljeret format, og giver dig, som nævnt, mulighed for at se ældre logs, hvis de er gemt.

Min `dmesg`-output er for lang. Hvordan kan jeg finde det, jeg leder efter?

Udover at bruge `less` til at rulle igennem outputtet, er `grep` et ekstremt nyttigt værktøj til at filtrere. Hvis du f.eks. leder efter meddelelser relateret til USB-enheder, kan du bruge:

sudo dmesg | grep -i usb

-i flaget gør søgningen ufølsom over for store og små bogstaver, hvilket er praktisk.

Konklusion

At støde på en "Operation not permitted"-fejl, når man bruger `dmesg`, er ikke et tegn på, at dit system er i stykker. Tværtimod er det et tegn på, at dit system fungerer som designet, med moderne sikkerhedsforanstaltninger på plads. Ved at forstå, hvorfor denne begrænsning eksisterer, og ved at lære de korrekte metoder til at få adgang til kernel-loggen – primært gennem `sudo dmesg` for hurtige tjek og `journalctl -k` for mere dybdegående analyse – kan du fortsætte med at diagnosticere og overvåge dit system effektivt og sikkert.

Hvis du vil læse andre artikler, der ligner dmesg: 'Operation not permitted' fejl i Ubuntu, kan du besøge kategorien Teknologi.

Go up