Hur man ändrar användardata med chfn och usermod på Linux

Det finns mer med ett användarkonto än ett användarnamn. Lär dig hur du ställer in och ändrar all metadata som är associerad med ett Linux-användarkonto från kommandoraden.

Vad finns i ett namn?

Om du använder en Linux- eller Unix-liknande dator har du ett användarkonto. Namnet på kontot är ditt användarkontonamn. Detta är namnet du använder för att logga in med. Det är också (som standard) namnet på din inloggningsgrupp och namnet på din hemkatalog. De använder alla samma identifierare.

Det finns ytterligare en uppsättning information som kan lagras för varje användarkonto. Verkliga data som till exempel personens fullständiga namn, deras kontorsnummer och arbetstelefonnummer kan definieras och kopplas till dem. Helt godtyckliga informationsbitar kan faktiskt taggas till användarkonton.

Rent praktiskt kommer detta att vara mer användbart för systemadministratörer som sköter om datorer som har många användarkonton konfigurerade på dem. Men även för enanvändardatorn med Linux är det alltid intressant att veta vad som händer under huven.

GECOS-fältet

En gång hade Unix-pionjärerna ingen egen skrivare. De var tvungna att spoola sina utskriftsjobb till en General Electric stordator som körde General Electric omfattande operativsystem (GECOS). För att åstadkomma det behövde användarna på Unix-systemen lagra och använda autentiseringsuppgifterna för ett konto på GECOS-systemet.

GECOS-fältet skapades för att lagra dessa referenser. Just det nischkravet har för länge sedan gått in i historien, och GECOS-fältet har återanvänts för att lagra annan data relaterad till ägaren av användarkontot. Den kan ha ett nytt jobb, men den behåller sitt gamla namn. Det kallas fortfarande GECOS-fältet.

Fältet lagras i filen /etc/passwd, tillsammans med annan information om användarkontot:

Kontots användarnamn.
Användar-ID.
Grupp-ID.
Sökvägen till hemkatalogen för användarkontot.
Skalet som startas när användaren loggar in.

Det är här finger kommandot och rosa kommandot hämta informationen som de visar.

Kommandot chfn

Med chfn (ändra fingerinformation) kan du ställ in och ändra informationen som lagras i GECOS-fältet. Informationen lagras som en kommaseparerad lista inom fältet.

chfn-kommandot fanns redan på Ubuntu 18.04.1 och Manjaro 18.1.0. Det måste installeras på Fedora 31. Använd detta kommando för att installera det:

sudo dnf install util-linux-user

Låt oss se vilket finger som kan ta reda på om ägaren till användarkontot ”dave.” För att få maximal information använder vi alternativet -l (långt format):

finger dave -l

Detta är vad den kunde hitta:

Den hämtar kontots användarnamn, hemkatalogen och standardskalet. Dessa är alla relaterade till användarkontot. De hänvisar inte till den verkliga personen som använder det kontot. Vi kan använda kommandot chfn för att lagra information om den faktiska personen.

chfn dave

Att använda chfn på detta sätt startar en kort, interaktiv process. Du uppmanas att ange ett datavärde för varje information som GECOS-fältet kan innehålla. Det aktuella värdet för varje datavärde visas inom parentes []. Om du vill behålla den aktuella informationen kan du trycka på ”Enter”-tangenten och värdet inom parentesen kommer att behållas.

Informationen vi angav var:

Rumsnummer: 512
Arbetstelefon: 555-4567
Hemtelefon: 555-5432

Låt oss kontrollera att fingret tar upp den nya informationen:

finger dave -l

Ja det gör det. Men du kanske har märkt att det inte uppmanade dig att ändra det fullständiga namnet. Det kommer bara att göra det om du använder sudo. Men vi behöver inte gå igenom hela chfn-sessionen igen, bara för att vi har glömt att använda sudo. Vi kan ändra alla datavärden individuellt.

Ändra de individuella datavärdena

Vi kan ställa in det fullständiga namnet för ägaren av användarkontot genom att använda alternativet -f (fullständigt namn), tillsammans med sudo.

sudo chfn -f "Dave McKay" dave

sudo chfn -f

Och om vi kollar en gång till med fingret:

Vi kan se att det fullständiga namnet har lagts till.

Det finns andra alternativ för att ändra rumsnummer, hemtelefonnummer och arbetstelefonnummer. För att ändra rums (kontors) nummer, använd alternativet -r (rumsnummer):

sudo chfn -r 633 dave

Observera att på vissa distributioner kan du använda alternativet -o (kontorsrumsnummer) istället för alternativet -r. Mer om detta inom kort. För nu, för att se alternativen för din version av chfn, använd:

man chfn

För att ändra kontorstelefonnumret, använd alternativet -w (arbetstelefon):

sudo chfn -w 555-1122 dave

Och slutligen, för att ändra hemtelefonnumret använd alternativet -h (hemtelefonnummer):

sudo chfn -h 555-6576 dave

Låt oss använda finger igen för att se om alla dessa ändringar har accepterats:

finger dave -l

Framgång. Alla dessa kommandon har fungerat och datavärdena har uppdaterats.

Använda chfn på andra användarkonton

Så mycket för att ändra vår egen information, hur är det med att ändra GECOS-informationen för andra användare? Det är lika enkelt. Du måste använda sudo när du gör det, men det är den enda skillnaden. Låt oss kontrollera vilken data som är inställd för användarkontot mary:

finger mary -l

Den vanliga standardinformationen är inställd för detta användarkonto. Låt oss lägga till informationen:

sudo chfn mary

Vi kommer att köra igenom samma session som vi gjorde tidigare och uppmanas att ange ett datavärde för varje information som kan lagras. Och eftersom vi använde sudo, ombeds vi att ange datavärdet för det fullständiga namnet.

Vänta ett ögonblick, vad är det sista föremålet som heter ”Annat?”

det stöds inte av alla versioner av chfn, och du ser det bara om du använder sudo, varför vi inte såg det tidigare när vi (medvetet) inte använde sudo med:

chfn dave

Datavärdet ”Övrigt” kan innehålla vad du vill. Den har ingen föreskriven eller förväntad användning.

Versioner av chfn som stöder fältet ”Other” tillhandahåller också alternativet -o (other) för att ändra detta värde direkt. Det är på grund av konflikten mellan -o för ”kontorsnummer” och -o för ”övrigt” som vissa system använder -r för ”rumsnummer”.

Vi kan se data som lagras för användarkontot mary i filen /etc/paswd, genom att använda mindre:

less /etc/passwd

På system som stöder det (kolla manualsidan för din version av chfn ) kan du ställa in ”annat”-fältet direkt med alternativet -o (annat):

sudo chfn -o "HTG Freelancer" dave

sudo chfn -o

Och vi kan kontrollera data för användarkontot dave med hjälp av less-kommandot:

less /etc/passwd

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

Det väcker en uppenbar fråga. Om din version av chfn inte stöder fältet ”Övrigt”, hur ändrar du det? Vi kan göra det med kommandot usermod.

Kommandot usermod

Kommandot usermod låter dig ändra aspekter av ett användarkonto genom sådana åtgärder som att lägga till eller ta bort användarkontot från grupper och ändra deras standardskal. Den kan också användas för att direkt manipulera GECOS-fältet.

Låt oss ta en närmare titt på raden i filen /etc/passwd för användarkontot mary. Vi använder grep för att isolera den raden åt oss. Detta kommer att fungera eftersom användarnamn måste vara unika. Det kan bara finnas ett användarkonto som heter mary.

grep mary /etc/passwd

Fälten i etc/passwd-filen visas. Ett kolon ”:” används som fältavgränsare. från vänster till höger är fälten:

Kontots användarnamn.
Ett ”x” som anger lösenordet för detta användarkonto hålls krypterat i filen /etc/shadow.
Användar-ID för mary användarkonto.
Grupp-ID:t för mary användarkonto.
GECOS-fältet.
Sökvägen till hemkatalogen för mary användarkonto.
Skalet som startas när ägaren till marykontot loggar in.

Ett kommatecken ”,” används som avgränsare för datavärdena i GECOS-fältet. Värdena i GECOS-fältet är, från vänster till höger:

Fullständiga namn.
Rumsnummer (eller kontor).
Arbetstelefonnummer.
Hemtelefonnummer.
Annan information.

Observera att kommandot usermod ställer in hela GECOS-fältet till det nya värdet du anger. Om allt du anger är personens fullständiga namn, kommer det enda i GECOS-fältet att vara det fullständiga namnet. Detta innebär att du måste tillhandahålla befintliga datavärden som du vill behålla.

Här är ett exempel. Användaren Mary har blivit befordrad, och hon ska flytta till fjärde våningen. Hon får ett nytt kontorsnummer, ett nytt jobbtelefonnummer, och vi ska lägga till i hennes mellannamn. Hennes ”Övriga” fältvärde kommer också att ändras. Även om hennes hemtelefonnummer inte kommer att ändras, måste vi ge det i strängen till usermod.

Vi måste använda alternativet -c (kommentar) och vi måste köra kommandot med sudo.

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

sudo usermod -c

Att använda grep för att rapportera om innehållet i filen /etc/passwd för mary, visar oss att de nya värdena har lagts till.

grep mary /etc/passwd

Allt är Flux, Ingenting förblir

Felaktiga uppgifter är värdelösa. När informationen om personer ändras – kontorsflytt, namnbyten, rolltitlar – kan du enkelt uppdatera deras metadata för att återspegla den aktuella positionen.