Håndtering af brugere og grupper, filtilladelser og attributter og aktivering af sudo-adgang på konti - del 8


Sidste august startede Linux Foundation LFCS-certificeringen (Linux Foundation Certified Sysadmin), et helt nyt program, hvis formål er at lade enkeltpersoner overalt og hvor som helst tage en eksamen for at blive certificeret i grundlæggende til mellemliggende operativ support til Linux-systemer, som inkluderer understøtter kørende systemer og tjenester sammen med overordnet overvågning og analyse plus intelligent beslutningstagning for at kunne beslutte, hvornår det er nødvendigt at eskalere problemer til supportteam på højere niveau.

Se hurtigt på følgende video, der beskriver en introduktion til Linux Foundation-certificeringsprogrammet.

Denne artikel er del 8 af en 10-tutorial lang serie, her i dette afsnit vil vi guide dig om, hvordan du administrerer brugere og gruppetilladelser i Linux-system, der kræves til LFCS-certificeringseksamen.

Da Linux er et flerbruger-operativsystem (fordi det giver flere brugere på forskellige computere eller terminaler adgang til et enkelt system), skal du vide, hvordan du udfører effektiv brugeradministration: hvordan du tilføjer, redigerer, suspenderer eller sletter brugerkonti sammen med at give dem de nødvendige tilladelser til at udføre deres tildelte opgaver.

Tilføjelse af brugerkonti

For at tilføje en ny brugerkonto kan du køre en af følgende to kommandoer som root.

# adduser [new_account]
# useradd [new_account]

Når en ny brugerkonto føjes til systemet, udføres følgende handlinger.

1. Hans/hendes hjemmekatalog oprettes (/hjem/brugernavn som standard).

2. Følgende skjulte filer kopieres til brugerens hjemmekatalog og vil blive brugt til at levere miljøvariabler til hans/hendes brugersession.

.bash_logout
.bash_profile
.bashrc

3. En mail-spool oprettes til brugeren på/var/spool/mail/ brugernavn .

4. En gruppe oprettes og får samme navn som den nye brugerkonto.

De fulde kontooplysninger er gemt i filen /etc/passwd . Denne fil indeholder en post pr. Systembrugerkonto og har følgende format (felter afgrænses af et kolon).

[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]

  1. Felter [brugernavn] og [Kommentar] er selvforklarende.
  2. x i det andet felt angiver, at kontoen er beskyttet af en skraveret adgangskode (i /etc/shadow ), som er nødvendig for at logge på som [brugernavn] .
  3. Felterne [UID] og [GID] er heltal, der repræsenterer brugeridentifikationen og den primære gruppeidentifikation, som [brugernavn] hører til hhv.
  4. [Hjemmappe] angiver den absolutte sti til [brugernavn] s hjemmemappe, og
  5. [Standardskallen] er den skal, der gøres tilgængelig for denne bruger, når han eller hun logger på systemet.

Gruppeoplysninger gemmes i filen /etc/group . Hver post har følgende format.

[Group name]:[Group password]:[GID]:[Group members]

  1. [Gruppenavn] er navnet på gruppen.
  2. Et x i [Gruppeadgangskode] angiver, at gruppeadgangskoder ikke bruges.
  3. [GID] : samme som i/etc/passwd.
  4. [Gruppemedlemmer] : en kommasepareret liste over brugere, der er medlemmer af [Gruppens navn] .

Når du har tilføjet en konto, kan du redigere følgende oplysninger (for at nævne nogle få felter) ved hjælp af kommandoen usermod , hvis grundlæggende syntaks for usermod er som følger.

# usermod [options] [username]

Brug flagget –udløbet efterfulgt af en dato i formatet ÅÅÅÅ-MM-DD .

# usermod --expiredate 2014-10-30 tecmint

Brug de kombinerede indstillinger -aG eller –tilføj –grupper efterfulgt af en komma-adskilt liste over grupper.

# usermod --append --groups root,users tecmint

Brug indstillingerne -d eller –hjem efterfulgt af den absolutte sti til den nye hjemmekatalog.

# usermod --home /tmp tecmint

Brug –skal efterfulgt af stien til den nye skal.

# usermod --shell /bin/sh tecmint
# groups tecmint
# id tecmint

Lad os nu udføre alle ovenstående kommandoer på én gang.

# usermod --expiredate 2014-10-30 --append --groups root,users --home /tmp --shell /bin/sh tecmint

I eksemplet ovenfor indstiller vi udløbsdatoen for tecmint-brugerkontoen til den 30. oktober 2014. Vi vil også føje kontoen til rod- og brugergruppen. Endelig indstiller vi sh som sin standardskal og ændrer placeringen af hjemmekataloget til/tmp:

Læs også :

  1. 15 brugertilføj kommandoeksempler i Linux
  2. 15 eksempler på kommandoer til usermod i Linux

For eksisterende konti kan vi også gøre følgende.

Brug indstillingen -L (store bogstaver L) eller indstillingen –lås til at låse en brugers adgangskode.

# usermod --lock tecmint

Brug indstillingen –u eller –lås til at låse op for en brugers adgangskode, der tidligere var blokeret.

# usermod --unlock tecmint

Kør følgende række kommandoer for at nå målet.

# groupadd common_group # Add a new group
# chown :common_group common.txt # Change the group owner of common.txt to common_group
# usermod -aG common_group user1 # Add user1 to common_group
# usermod -aG common_group user2 # Add user2 to common_group
# usermod -aG common_group user3 # Add user3 to common_group

Du kan slette en gruppe med følgende kommando.

# groupdel [group_name]

Hvis der er filer, der ejes af gruppenavn , slettes de ikke, men gruppeejeren indstilles til GID for den gruppe, der blev slettet.

Linux-filtilladelser

Udover de grundlæggende læsning, skrivning og udførelse af tilladelser, som vi diskuterede i arkiveringsværktøjer og indstilling af filattributter - del 3 af denne serie, er der andre mindre anvendte (men ikke mindre vigtige) tilladelsesindstillinger, undertiden benævnt “ specielle tilladelser ”.

Som de grundlæggende tilladelser, der er diskuteret tidligere, indstilles de ved hjælp af en oktal fil eller gennem et bogstav (symbolsk notation), der angiver typen af tilladelse.

Du kan slette en konto (sammen med dens hjemmekatalog, hvis den ejes af brugeren, og alle de filer, der findes deri, og også mail-spolen) ved hjælp af kommandoen userdel med – Fjern mulighed.

# userdel --remove [username]

Hver gang en ny brugerkonto føjes til systemet, oprettes en gruppe med samme navn med brugernavnet som det eneste medlem. Andre brugere kan føjes til gruppen senere. Et af gruppens formål er at implementere en simpel adgangskontrol til filer og andre systemressourcer ved at indstille de rigtige tilladelser til disse ressourcer.

Antag for eksempel, at du har følgende brugere.

  1. bruger1 (primær gruppe: bruger1)
  2. bruger2 (primær gruppe: bruger2)
  3. bruger3 (primær gruppe: bruger3)

Alle har brug for læs og skriv adgang til en fil kaldet common.txt placeret et eller andet sted på dit lokale system eller måske på en netværksshare, der bruger1 har oprettet. Du kan blive fristet til at gøre noget lignende,

# chmod 660 common.txt
OR
# chmod u=rw,g=rw,o= common.txt [notice the space between the last equal sign and the file name]

Dette giver dog kun læs og skriv adgang til filens ejer og de brugere, der er medlemmer af gruppeejeren af filen ( bruger1 i dette tilfælde). Igen kan du blive fristet til at tilføje bruger2 og bruger3 til gruppen bruger1 , men det vil også give dem adgang til resten af de filer, der ejes af bruger bruger1 og gruppe bruger1 .

Det er her, grupper er nyttige, og her er hvad du skal gøre i en sag som denne.

Når tilladelsen setuid anvendes på en eksekverbar fil, arver en bruger, der kører programmet, de effektive rettigheder til programmets ejer. Da denne tilgang med rimelighed kan skabe sikkerhedsproblemer, skal antallet af filer med setuid-tilladelse holdes på et minimum. Du vil sandsynligvis finde programmer med dette tilladelsessæt, når en systembruger har brug for at få adgang til en fil, der ejes af root.

Sammenfattende er det ikke kun, at brugeren kan udføre den binære fil, men også at han kan gøre det med rodens privilegier. Lad os f.eks. Kontrollere tilladelserne til /bin/passwd . Denne binær bruges til at ændre adgangskoden til en konto og ændrer filen /etc/shadow . Superbrugeren kan ændre alles adgangskode, men alle andre brugere skal kun være i stand til at ændre deres egen.

Således bør enhver bruger have tilladelse til at køre /bin/passwd , men kun root vil være i stand til at angive en konto. Andre brugere kan kun ændre deres tilsvarende adgangskoder.

Når setgid bit er indstillet, bliver den virkelige GID for den virkelige bruger gruppens ejer. Således kan enhver bruger få adgang til en fil under de privilegier, der er tildelt gruppeejeren af en sådan fil. Derudover, når setgid-bit er indstillet i et bibliotek, arver nyoprettede filer den samme gruppe som biblioteket, og nyoprettede underkataloger arver også sætgid-biten i den overordnede bibliotek. Du vil sandsynligvis bruge denne tilgang, når medlemmer af en bestemt gruppe har brug for adgang til alle filerne i et bibliotek, uanset filejerens primære gruppe.

# chmod g+s [filename]

For at indstille setgid i oktal form skal du sætte tallet 2 i forhold til de aktuelle (eller ønskede) grundlæggende tilladelser.

# chmod 2755 [directory]

Når " sticky bit " er indstillet på filer, ignorerer Linux det bare, mens det for mapper har den virkning at forhindre brugere i at slette eller endda omdøbe de filer, det indeholder, medmindre brugeren ejer biblioteket, fil, eller er rod.

# chmod o+t [directory]

For at indstille sticky bit i oktal form skal du sætte tallet 1 i forhold til de aktuelle (eller ønskede) grundlæggende tilladelser.

# chmod 1755 [directory]

Uden den klæbende bit kan enhver, der er i stand til at skrive til biblioteket, slette eller omdøbe filer. Af den grund findes den klæbrig bit ofte i mapper, såsom /tmp , der er verdensskrivelige.

Særlige Linux-filattributter

Der er andre attributter, der muliggør yderligere begrænsninger for de handlinger, der er tilladt i filer. For eksempel forhindre, at filen omdøbes, flyttes, slettes eller endda ændres. De indstilles med chattr-kommandoen og kan ses ved hjælp af lsattr-værktøjet som følger.

# chattr +i file1
# chattr +a file2

Efter udførelse af disse to kommandoer er fil1 uforanderlig (hvilket betyder, at den ikke kan flyttes, omdøbes, ændres eller slettes), mens fil2 vil gå i kun append-tilstand (kan kun åben i append-tilstand til skrivning).

Adgang til rodkontoen og brug af sudo

En af måderne, hvorpå brugere kan få adgang til rodkontoen, er ved at skrive.

$ su

og derefter indtaste root-adgangskoden.

Hvis godkendelse lykkes, bliver du logget på som rod med den aktuelle arbejdsmappe som den samme som du var før. Hvis du i stedet vil placeres i rodens hjemmekatalog, skal du køre.

$ su -

og indtast derefter root-adgangskoden.

Ovenstående procedure kræver, at en normal bruger kender rodens adgangskode, hvilket udgør en alvorlig sikkerhedsrisiko. Af den grund kan sysadmin konfigurere kommandoen sudo , så en almindelig bruger kan udføre kommandoer som en anden bruger (normalt superbrugeren) på en meget kontrolleret og begrænset måde. Således kan der indstilles begrænsninger for en bruger for at gøre det muligt for ham at køre en eller flere specifikke privilegerede kommandoer og ingen andre.

Læs også : Forskellen mellem su og sudo bruger

For at godkende ved hjælp af sudo bruger brugeren sin egen adgangskode. Efter indtastning af kommandoen bliver vi bedt om vores adgangskode (ikke superbrugerens), og hvis godkendelsen lykkes (og hvis brugeren har fået privilegier til at køre kommandoen), udføres den angivne kommando.

For at give adgang til sudo skal systemadministratoren redigere filen /etc/sudoers . Det anbefales, at denne fil redigeres ved hjælp af kommandoen visudo i stedet for at åbne den direkte med en teksteditor.

# visudo

Dette åbner filen /etc/sudoers ved hjælp af vim (du kan følge instruktionerne i Installer og brug vim som editor - del 2 i denne serie til at redigere filen).

Dette er de mest relevante linjer.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin"
root        ALL=(ALL) ALL
tecmint     ALL=/bin/yum update
gacanepa    ALL=NOPASSWD:/bin/updatedb
%admin      ALL=(ALL) ALL

Lad os se nærmere på dem.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin:/usr/local/bin"

Denne linje giver dig mulighed for at specificere de mapper, der skal bruges til sudo , og bruges til at forhindre brug af brugerspecifikke mapper, som kan skade systemet.

De næste linjer bruges til at specificere tilladelser.

root        ALL=(ALL) ALL

  1. Det første ALLE nøgleord angiver, at denne regel gælder for alle værter.
  2. Den anden ALLE angiver, at brugeren i den første kolonne kan køre kommandoer med rettigheder for enhver bruger.
  3. Den tredje ALLE betyder, at enhver kommando kan køres.

tecmint     ALL=/bin/yum update

Hvis der ikke er angivet nogen bruger efter = tegnet, antager sudo rodbrugeren. I dette tilfælde vil bruger tecmint være i stand til at køre yum-opdatering som root.

gacanepa    ALL=NOPASSWD:/bin/updatedb

Direktivet NOPASSWD giver brugeren gacanepa mulighed for at køre /bin/updatedb uden at skulle indtaste sin adgangskode.

%admin      ALL=(ALL) ALL

% tegnet angiver, at denne linje gælder for en gruppe, der hedder " admin ". Betydningen af resten af linjen er identisk med en almindelig bruger. Dette betyder, at medlemmer af gruppen " admin " kan køre alle kommandoer som enhver bruger på alle værter.

For at se, hvilke privilegier der tildeles dig af sudo, skal du bruge indstillingen “ -l ” til at liste dem.

PAM (stikbare godkendelsesmoduler)

Pluggable Authentication Modules (PAM) giver fleksibiliteten ved at indstille et specifikt godkendelsesskema pr. Applikation og/eller pr. Service ved hjælp af moduler. Dette værktøj, der findes i alle moderne Linux-distributioner, overvandt det problem, som udviklere ofte står over for i de tidlige dage af Linux, da hvert program, der krævede godkendelse, skulle kompileres specielt for at vide, hvordan man får de nødvendige oplysninger.

For eksempel med PAM betyder det ikke noget, om din adgangskode er gemt i/etc/shadow eller på en separat server inde i dit netværk.

For eksempel, når loginprogrammet skal godkende en bruger, leverer PAM dynamisk det bibliotek, der indeholder funktionerne til det rigtige godkendelsesskema. Det er således let at ændre godkendelsesskemaet for login-applikationen (eller ethvert andet program ved hjælp af PAM), da det kun involverer redigering af en konfigurationsfil (sandsynligvis en fil opkaldt efter applikationen, placeret inde i /etc/pam.d og mindre sandsynligt i /etc/pam.conf ).

Filer inde i /etc/pam.d angiver, hvilke applikationer der bruger PAM indbygget. Derudover kan vi fortælle, om en bestemt applikation bruger PAM ved at kontrollere, om PAM-biblioteket (libpam) er linket til det:

# ldd $(which login) | grep libpam # login uses PAM
# ldd $(which top) | grep libpam # top does not use PAM

På ovenstående billede kan vi se, at libpam er blevet linket til login-applikationen. Dette giver mening, da denne applikation er involveret i driften af systembrugergodkendelse, mens top ikke gør det.

Lad os undersøge PAM-konfigurationsfilen for passwd - ja, det velkendte værktøj til at ændre brugerens adgangskoder. Det er placeret på /etc/pam.d/passwd:

# cat /etc/passwd

Den første kolonne angiver -typen af godkendelsen, der skal bruges med -modulstien (tredje kolonne). Når en bindestreg vises før typen, registrerer PAM ikke i systemloggen, hvis modulet ikke kan indlæses, fordi det ikke kunne findes i systemet.

Følgende godkendelsestyper er tilgængelige:

  1. -konto : denne modultype kontrollerer, om brugeren eller tjenesten har leveret gyldige legitimationsoplysninger til godkendelse.
  2. auth : denne modultype verificerer, at brugeren er, som han/hun hævder at være, og giver alle nødvendige rettigheder.
  3. adgangskode : denne modultype giver brugeren eller tjenesten mulighed for at opdatere deres adgangskode.
  4. -session : denne modultype angiver, hvad der skal gøres før og/eller efter godkendelsen lykkes.

Den anden kolonne (kaldet kontrol ) angiver, hvad der skal ske, hvis godkendelsen med dette modul mislykkes:

  1. nødvendig : hvis godkendelsen via dette modul mislykkes, nægtes den samlede godkendelse straks.
  2. krævet svarer til det krævede, selvom alle andre anførte moduler til denne service vil blive kaldt, før de nægter godkendelse.
  3. tilstrækkelig : hvis godkendelsen via dette modul mislykkes, giver PAM stadig godkendelse, selvom en tidligere markeret som krævet mislykkedes.
  4. valgfri : hvis godkendelsen via dette modul mislykkes eller lykkes, sker der intet, medmindre dette er det eneste modul af sin type, der er defineret for denne tjeneste.
  5. include betyder, at linjerne af den givne type skal læses fra en anden fil.
  6. substack svarer til inkluderer, men godkendelsesfejl eller succes forårsager ikke afslutningen af det komplette modul, men kun af substakken.

Den fjerde kolonne, hvis den findes, viser de argumenter, der skal sendes til modulet.

De første tre linjer i /etc/pam.d/passwd (vist ovenfor) indlæser systemgodkendelsesmodulet for at kontrollere, at brugeren har leveret gyldige legitimationsoplysninger (konto). I så fald giver det ham/hende mulighed for at ændre godkendelsestokenet (adgangskoden) ved at give tilladelse til at bruge passwd (auth).

For eksempel, hvis du tilføjer

remember=2

til følgende linje

password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

i /etc/pam.d/system-auth:

password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=2

de sidste to hashede adgangskoder for hver bruger gemmes i/etc/security/opasswd, så de ikke kan genbruges:

Resumé

Effektive bruger- og filhåndteringsfærdigheder er vigtige værktøjer for enhver systemadministrator. I denne artikel har vi dækket det grundlæggende og håber du kan bruge det som et godt startpunkt til at bygge videre på. Du er velkommen til at efterlade dine kommentarer eller spørgsmål nedenfor, så svarer vi hurtigt.