Linux-brukerkontoer: Mestre chfn & usermod for komplett kontroll!

En brukerkonto inneholder mer enn bare et brukernavn. La oss utforske hvordan du konfigurerer og endrer all metadata knyttet til en Linux-brukerkonto ved hjelp av kommandolinjen.

Hva skjuler seg bak et navn?

Dersom du bruker en Linux- eller Unix-basert datamaskin, har du en brukerkonto. Navnet på denne kontoen er ditt brukernavn, og det er dette navnet du bruker for å logge inn. Som standard er det også navnet på din påloggingsgruppe og din hjemmekatalog. Alle disse bruker samme identifikator.

Det finnes også en rekke annen informasjon som kan lagres for hver brukerkonto. Dette kan inkludere personlige detaljer som fullt navn, kontorlokale og arbeidstelefonnummer. Faktisk er det mulig å knytte nærmest alle typer informasjon til en brukerkonto.

Dette er spesielt nyttig for systemadministratorer som overvåker datamaskiner med mange brukerkontoer. Men selv for en Linux-datamaskin med kun én bruker, er det alltid spennende å se hva som skjer under overflaten.

GECOS-feltet

En gang i tiden hadde Unix-pionerene ikke sin egen skriver. De måtte derfor sende utskriftsjobbene til en General Electric stormaskin som kjørte General Electric Comprehensive Operating System (GECOS). For å gjøre dette, måtte Unix-brukere lagre og bruke legitimasjonen til en GECOS-konto.

GECOS-feltet ble utviklet for å lagre denne legitimasjonen. Selv om dette spesifikke behovet ikke lenger eksisterer, brukes GECOS-feltet nå til å lagre andre data relatert til eieren av brukerkontoen. Feltet har et nytt bruksområde, men det beholder sitt gamle navn. Det kalles fortsatt GECOS-feltet.

Feltet lagres i filen `/etc/passwd`, sammen med annen informasjon om brukerkontoen:

  • Brukerkontoens brukernavn.
  • Bruker-ID.
  • Gruppe-ID.
  • Stien til brukerkontoens hjemmekatalog.
  • Skallet som startes når brukeren logger på.

Det er her kommandoene finger og pinky henter informasjonen de viser.

`chfn`-kommandoen

Kommandoen `chfn` (endre fingerinformasjon) lar deg konfigurere og endre informasjonen som er lagret i GECOS-feltet. Denne informasjonen lagres som en kommaseparert liste i feltet.

Kommandoen `chfn` var allerede installert i Ubuntu 18.04.1 og Manjaro 18.1.0. Den måtte imidlertid installeres i Fedora 31. Du kan installere den med denne kommandoen:

sudo dnf install util-linux-user

La oss se hva kommandoen `finger` kan finne ut om eieren av brukerkontoen «dave». For å få mest mulig informasjon, bruker vi alternativet `-l` (langt format):

finger dave -l

Dette er informasjonen den gir:

Den finner brukernavnet, hjemmekatalogen og standard-skallet. Alle disse er relatert til brukerkontoen, og ikke nødvendigvis til personen som bruker kontoen. Vi kan bruke `chfn`-kommandoen til å lagre informasjon om den faktiske personen.

chfn dave

Når du bruker `chfn` på denne måten, starter en kort interaktiv prosess. Du blir bedt om å oppgi en dataverdi for hver informasjonsbit som GECOS-feltet kan inneholde. Den gjeldende verdien vises i hakeparentes `[]`. Hvis du vil beholde gjeldende data, trykker du bare på Enter.

Vi har lagt inn denne informasjonen:

Kontornummer: 512
Arbeidstelefon: 555-4567
Hjemmetelefon: 555-5432

La oss sjekke at `finger` fanger opp den nye informasjonen:

finger dave -l

Det stemmer. Du har kanskje lagt merke til at vi ikke ble bedt om å endre fullt navn. Dette skjer kun hvis du bruker `sudo`. Men vi trenger ikke gå gjennom hele `chfn`-økten på nytt bare fordi vi glemte å bruke `sudo`. Vi kan endre alle dataverdiene enkeltvis.

Endre individuelle dataverdier

Vi kan spesifisere fullt navn for eieren av brukerkontoen ved å bruke alternativet `-f` (fullt navn) sammen med `sudo`.

sudo chfn -f "Dave McKay" dave

Og hvis vi sjekker med `finger` igjen:

Vi ser at fullt navn er lagt til.

Det finnes andre alternativer for å endre kontornummer, hjemmetelefonnummer og arbeidstelefonnummer. For å endre kontornummer, bruker du alternativet `-r` (romnummer):

sudo chfn -r 633 dave

Merk at i noen distribusjoner kan du bruke alternativet `-o` (kontorlokale) i stedet for `-r`. Mer om dette snart. For å se alternativene for din versjon av `chfn`, bruk:

man chfn

For å endre arbeidstelefonnummer, bruk alternativet `-w` (arbeidstelefon):

sudo chfn -w 555-1122 dave

Og til slutt, for å endre hjemmetelefonnummer, bruk alternativet `-h` (hjemmetelefonnummer):

sudo chfn -h 555-6576 dave

La oss bruke `finger` igjen for å sjekke at alle disse endringene er lagret:

finger dave -l

Flott. Alle kommandoene har fungert og dataverdiene er oppdatert.

Bruke `chfn` på andre brukerkontoer

Så langt har vi endret vår egen informasjon, men hva med å endre GECOS-informasjonen for andre brukere? Det er like enkelt. Du må bruke `sudo` når du gjør det, men det er den eneste forskjellen. La oss sjekke hvilke data som er angitt for brukerkontoen `mary`:

finger mary -l

Standardinformasjonen er lagret for denne brukerkontoen. La oss legge til litt informasjon:

sudo chfn mary

Vi går gjennom den samme økten som tidligere, og blir bedt om en dataverdi for hver informasjonsbit som kan lagres. Og siden vi brukte `sudo`, blir vi også bedt om dataverdien for fullt navn.

Vent litt, hva er det siste elementet, kalt «Annet»?

Dette støttes ikke av alle versjoner av `chfn`, og du ser det bare hvis du bruker `sudo`. Derfor så vi det ikke tidligere, da vi (med vilje) ikke brukte `sudo` med:

chfn dave

Dataverdien for «Annet» kan inneholde hva som helst. Det er ikke noen bestemt eller forventet bruk.

Versjoner av `chfn` som støtter feltet «Annet» har også et alternativ `-o` (annet) for å endre denne verdien direkte. Det er på grunn av denne konflikten mellom `-o` for «kontornummer» og `-o` for «annet», at noen systemer bruker `-r` for «romnummer».

Vi kan se dataene som er lagret for brukerkontoen `mary` i filen `/etc/passwd`, ved å bruke `less`:

less /etc/passwd

På systemer som støtter det (sjekk manualsiden for din versjon av `chfn`), kan du spesifisere feltet «Annet» direkte ved å bruke alternativet `-o` (annet):

sudo chfn -o "HTG Freelancer" dave

Og vi kan sjekke dataene for brukerkontoen `dave` ved å bruke `less`-kommandoen:

less /etc/passwd

[asswdinaterminalwindow”width=”646″height=”382″/>[asswdinaterminalwindow”width=”646″height=”382″/>

Dette reiser et åpenbart spørsmål. Hvis din versjon av `chfn` ikke støtter feltet «Annet», hvordan endrer du det? Vi kan gjøre det med kommandoen `usermod`.

`usermod`-kommandoen

Kommandoen `usermod` lar deg endre ulike aspekter ved en brukerkonto, som å legge til eller fjerne brukerkontoen fra grupper, og endre standardskall. Den kan også brukes til å manipulere GECOS-feltet direkte.

La oss se nærmere på linjen i `/etc/passwd`-filen for brukerkontoen `mary`. Vi bruker `grep` for å isolere den linjen. Dette vil fungere fordi brukernavn må være unike. Det kan bare være én brukerkonto kalt `mary`.

grep mary /etc/passwd

Feltene i `/etc/passwd`-filen vises. Et kolon `:` brukes som feltseparator. Fra venstre til høyre er feltene:

  • Brukerkontoens brukernavn.
  • En `x` som indikerer at passordet for denne brukerkontoen lagres kryptert i filen `/etc/shadow`.
  • Bruker-ID-en for `mary`-brukerkontoen.
  • Gruppe-ID-en for `mary`-brukerkontoen.
  • GECOS-feltet.
  • Stien til hjemmekatalogen for `mary`-brukerkontoen.
  • Skallet som startes når eieren av `mary`-kontoen logger på.

Et komma `,` brukes som skilletegn for dataverdiene i GECOS-feltet. Verdiene i GECOS-feltet er, fra venstre til høyre:

  • Fullt navn.
  • Kontornummer (eller lokale).
  • Arbeidstelefonnummer.
  • Hjemmetelefonnummer.
  • Annen informasjon.

Merk at `usermod`-kommandoen setter hele GECOS-feltet til den nye verdien du spesifiserer. Hvis du kun oppgir fullt navn, vil det være det eneste i GECOS-feltet. Dette betyr at du må oppgi eksisterende dataverdier du ønsker å beholde.

Her er et eksempel. Brukeren Mary har blitt forfremmet og skal flytte til fjerde etasje. Hun får nytt kontornummer, nytt arbeidstelefonnummer, og vi skal legge til mellomnavnet hennes. Verdien i feltet «Annet» kommer også til å endres. Selv om hjemmetelefonnummeret hennes ikke endres, må vi oppgi det i strengen til `usermod`.

Vi må bruke alternativet `-c` (kommentar) og vi må kjøre kommandoen med `sudo`.

sudo usermod -c "Mary Carol Quinn,405,5559654,555-7704,Linux Advocate" mary

Ved å bruke `grep` til å rapportere om innholdet i `/etc/passwd`-filen for `mary`, viser vi at de nye verdiene er lagt til.

grep mary /etc/passwd

Alt er i bevegelse, ingenting varer

Unøyaktig informasjon er verdiløs. Når informasjonen om personer endres – kontorflyttinger, navneendringer, stillingstitler – kan du enkelt oppdatere deres metadata for å gjenspeile den aktuelle situasjonen.