Hvordan endre brukerdata med chfn og usermod på Linux

Det er mer med en brukerkonto enn et brukernavn. Lær hvordan du stiller inn og endrer alle metadata knyttet til en Linux-brukerkonto fra kommandolinjen.

Hva er i et navn?

Hvis du bruker en Linux- eller Unix-lignende datamaskin, har du en brukerkonto. Navnet som er gitt til kontoen er ditt brukerkontonavn. Dette er navnet du bruker for å logge inn med. Det er også (som standard) navnet på påloggingsgruppen din og navnet på hjemmekatalogen din. De bruker alle samme identifikator.

Det er et annet sett med informasjon som kan lagres for hver brukerkonto. Data fra den virkelige verden, som for eksempel personens fulle navn, kontornummer og arbeidstelefonnummer, kan defineres og knyttes til dem. Faktisk kan helt vilkårlige informasjonsbiter merkes til brukerkontoer.

Rent praktisk vil dette være mer nyttig for systemadministratorer som ser etter datamaskiner som har mange brukerkontoer konfigurert på seg. Men selv for en-bruker Linux-datamaskinen er det alltid interessant å vite hva som skjer under panseret.

GECOS-feltet

På en gang hadde Unix-pionerene ingen egen skriver. De måtte spoole utskriftsjobbene sine til en General Electric stormaskinen som kjørte General Electric omfattende operativsystem (GECOS). For å oppnå dette måtte brukerne på Unix-systemene lagre og bruke legitimasjonen til en konto på GECOS-systemet.

GECOS-feltet ble opprettet for å lagre disse legitimasjonene. Nettopp dette nisjekravet har for lengst gått inn i historien, og GECOS-feltet har blitt omformålt til å lagre andre data relatert til eieren av brukerkontoen. Den har kanskje en ny jobb, men den beholder sitt gamle navn. Det kalles fortsatt GECOS-feltet.

Feltet er lagret i filen /etc/passwd, sammen med annen informasjon om brukerkontoen:

Kontoens brukernavn.
Bruker-ID.
Gruppe-ID.
Banen til hjemmekatalogen for brukerkontoen.
Skallet som startes når brukeren logger på.

Det er her finger kommandoen og rosa kommandoen hente informasjonen de viser.

chfn-kommandoen

chfn (endre fingerinformasjon) lar deg angi og endre informasjonen som er lagret i GECOS-feltet. Informasjonen lagres som en kommadelt liste innenfor feltet.

  Hvordan legge til systeminformasjon til Linux-skrivebordet

chfn-kommandoen var allerede til stede på Ubuntu 18.04.1 og Manjaro 18.1.0. Den måtte installeres på Fedora 31. Bruk denne kommandoen for å installere den:

sudo dnf install util-linux-user

La oss se hvilken finger som kan finne ut om eieren av brukerkontoen «dave.» For å få maksimal informasjon, bruker vi alternativet -l (langt format):

finger dave -l

Dette er hva den kan finne:

Den henter kontobrukernavnet, hjemmekatalogen og standardskallet. Disse er alle relatert til brukerkontoen. De refererer ikke til den virkelige personen som bruker den kontoen. Vi kan bruke chfn-kommandoen til å lagre informasjon om den faktiske personen.

chfn dave

Å bruke chfn på denne måten starter en kort, interaktiv prosess. Du blir bedt om å skrive inn en dataverdi for hver informasjon som GECOS-feltet kan inneholde. Gjeldende verdi for hver dataverdi vises i parentes []. Hvis du ønsker å beholde gjeldende data, kan du trykke på «Enter»-tasten, og verdien innenfor parentes beholdes.

Informasjonen vi la inn var:

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

La oss sjekke at fingeren fanger opp den nye informasjonen:

finger dave -l

Ja det gjør det. Men du har kanskje lagt merke til at det ikke ble bedt om å endre hele navnet. Det vil bare gjøre det hvis du bruker sudo. Men vi trenger ikke gå gjennom hele chfn-økten på nytt, bare fordi vi har glemt å bruke sudo. Vi kan endre alle dataverdiene individuelt.

Endre individuelle dataverdier

Vi kan angi det fulle navnet for eieren av brukerkontoen ved å bruke alternativet -f (fullt navn), sammen med sudo.

sudo chfn -f "Dave McKay" dave

sudo chfn -f

Og hvis vi sjekker en gang til med fingeren:

Vi kan se at hele navnet er lagt til.

Det finnes andre alternativer for å endre romnummer, hjemmetelefonnummer og jobbtelefonnummer. For å endre romnummeret (kontornummeret), bruk alternativet -r (romnummer):

sudo chfn -r 633 dave

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

man chfn

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

sudo chfn -w 555-1122 dave

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

sudo chfn -h 555-6576 dave

La oss bruke fingeren igjen for å se om alle disse endringene har blitt akseptert:

finger dave -l

Suksess. Alle disse kommandoene har fungert, og dataverdiene er oppdatert.

  Hvordan installere Equilibrium GTK-temaet på Linux

Bruke chfn på andre brukerkontoer

Så mye for å endre vår egen informasjon, 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

Den vanlige standardinformasjonen er satt for denne brukerkontoen. La oss legge til informasjonen:

sudo chfn mary

Vi går gjennom den samme økten som vi gjorde før, og blir bedt om en dataverdi for hver informasjon som kan lagres. Og fordi vi brukte sudo , blir vi bedt om dataverdien for fullt navn.

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

det støttes ikke av alle versjoner av chfn, og du ser det bare hvis du bruker sudo, og det er grunnen til at vi ikke så det tidligere da vi (med vilje) ikke brukte sudo med:

chfn dave

«Andre» dataverdien kan inneholde alt du liker. Den har ingen foreskrevet eller forventet bruk.

Versjoner av chfn som støtter «Annet»-feltet gir også alternativet -o (annet) for å endre denne verdien direkte. Det er på grunn av 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/paswd, ved å bruke mindre:

less /etc/passwd

På systemer som støtter det (sjekk man-siden for din versjon av chfn ) kan du angi «annet»-feltet direkte ved å bruke -o (annet)-alternativet:

sudo chfn -o "HTG Freelancer" dave

sudo chfn -o

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″/>

  Hvordan sette prosessprioriteter med nice og renice på Linux

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

Usermod-kommandoen

Usermod-kommandoen lar deg endre aspekter ved en brukerkonto gjennom slike handlinger som å legge til eller fjerne brukerkontoen fra grupper, og endre standard skall. 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 for oss. 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:

Kontoens brukernavn.
En «x» som indikerer passordet for denne brukerkontoen holdes kryptert i filen /etc/shadow.
Bruker-ID-en for mary-brukerkontoen.
Gruppe-ID-en for mary-brukerkontoen.
GECOS-feltet.
Banen 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.
Romnummer (eller kontor).
Arbeidstelefonnummer.
Hjemmetelefonnummer.
Annen informasjon.

Merk at usermod-kommandoen setter hele GECOS-feltet til den nye verdien du oppgir. Hvis alt du oppgir er det fulle navnet på personen, vil det eneste i GECOS-feltet være det fulle navnet. Dette betyr at du må oppgi eksisterende dataverdier som du ønsker å beholde.

Her er et eksempel. Brukeren Mary er forfremmet, og hun skal flytte til fjerde etasje. Hun får nytt kontornummer, nytt jobbtelefonnummer, og vi skal legge til mellomnavnet hennes. Hennes «Annet»-feltverdi kommer også til å endre seg. Selv om hjemmetelefonnummeret hennes ikke kommer til å 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

sudo usermod -c

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 fluks, ingenting varer

Unøyaktige data er verdiløse. Når informasjonen om personer endres – kontorflytting, navneendringer, rolletitler – kan du enkelt oppdatere deres metadata for å gjenspeile gjeldende posisjon.