Hvad gør sudo-kommandoen? Opnåelse af administratorrettigheder

Sudo er et program, der giver administratorer mulighed for at give begrænsede root-rettigheder til brugere og føre en log over root-aktivitet. Grundfilosofien er at give så få rettigheder som muligt og samtidig give folk mulighed for at udføre deres opgaver normalt. Forskellen med su-kommandoen er, at brugeren indtaster deres kontoadgangskode i stedet for root-brugeradgangskoden.

Sudo på Debian har en femten minutters (måske) timeout efter indtastning af adgangskoden. Det betyder, at når du først indtaster root-adgangskoden, har du 15 minutter, hvor du kan udføre den næste kommando uden at indtaste adgangskoden. Timeout kan nulstilles med det samme ved hjælp af kommandoen sudo -k.

Installation af sudo på Debian 7

aptitude install sudo

En konfigurationsfil oprettes under installationen /etc/sudoers og mappe /etc/sudoers.d, som vi vil tale om lidt senere.

sudo kommando muligheder

-k- giver dig mulighed for at nulstille timeout, indtil du skal indtaste adgangskoden igen. Hvis du angiver en kommando, der muligvis kræver en adgangskode, nulstilles timeouten specifikt for den kommando.
-h- et lille tip vil blive vist på standardudgangen.
-V- versionen af ​​sudo og plugins vil blive vist. Hvis du kører som root, vil alle indstillinger blive vist.
-g gruppe - giver dig mulighed for at angive, hvilken gruppe kommandoen skal startes fra.
-H- angiver den mappe, der vil blive specificeret i HOME-miljøvariablen.
-jeg- simulerer indledende indtastning. Hvis kommandoen ikke er angivet, vil den logge dig ind, så du kan blive root i stedet for at bruge sudo su.
-l[l]- hvis kommandoen ikke er angivet, vil en liste over tilgængelige kommandoer for den kaldende bruger (eller brugeren specificeret med -U parameteren) blive vist. Hvis en kommando er angivet, og den er tilgængelig, vil den fulde sti til kommandoen og tilgængelige parametre blive vist. Hvis kommandoen ikke er tilgængelig, afsluttes sudo med status 1. Hvis du bruger muligheden -ll eller angiver -l to gange, vil et mere udførligt outputformat blive brugt.
-s- shellen specificeret i SHELL miljøvariablen vil blive lanceret. Hvis en kommando er angivet, vil den blive videregivet til den kørende shell til udførelse.
-U bruger- sammen med parameteren -l giver dig mulighed for at vise en specifik brugers privilegier. Som standard har root og brugere med alle privilegier (ALLE) adgang til privilegielister.
-u bruger- den angivne kommando vil blive kørt som den angivne bruger, ikke som root.
-v- giver dig mulighed for at forlænge timeoutet med 15 minutter eller hvad der er angivet i sudoers), men ikke udføre nogen kommandoer.

De fleste af de tilgængelige muligheder er angivet her, men ikke alle. Brug kommandoen for at se den fulde liste mand sudo.

Opsætning af sudo på Debian 7

Det anbefales at indstille alle brugerindstillinger i filer i mappen /etc/sudoers.d, ikke i hovedfilen /etc/sudoers. Det vil sige, du kan oprette en fil med et hvilket som helst navn i mappen /etc/sudoers.d og lister allerede de nødvendige indstillinger i den.

Fil /etc/sudoers det anbefales at redigere ved hjælp af hjælpeprogrammet visudo, da den låser filen og kontrollerer rigtigheden af ​​direktiverne ved lukning. visudo bruger en standard teksteditor, som kan tilsidesættes i sudoers direktiv som:

Adskillelse af adgangsrettigheder er et af de vigtigste sikkerhedsparadigmer implementeret i Linux og Unix-lignende operativsystemer. Regelmæssige brugere arbejder med begrænsede rettigheder; Dette reducerer deres indvirkning på deres eget miljø og på operativsystemet som helhed.

Rootbrugeren har superbrugerrettigheder. Denne administratorkonto har ikke de begrænsninger, der er til stede på almindelige brugerkonti. Andre brugere kan muligvis køre kommandoer som root i en række specifikke tilfælde.

Denne vejledning viser dig, hvordan du korrekt og sikkert overfører root-privilegier til dit system.

Bemærk Bemærk: Denne vejledning blev udført på en Ubuntu 12.04-server, men de fleste moderne Linux-distributioner vil opføre sig på samme måde.

For at fuldføre selvstudiet skal du først fuldføre den indledende serveropsætning:

Log ind på serveren som ikke-rootbruger.

Sådan får du root-rettigheder

Der er tre hovedmåder til at opnå superbrugerprivilegier, som varierer i sværhedsgrad.

Log ind som root

Den nemmeste måde er selvfølgelig at logge ind som root.

Hvis du opretter forbindelse via SSH, skal du angive IP-adressen eller værtsnavnet:

ssh root@IP_adresse_eller_domæne

Indtast din root-adgangskode, når du bliver bedt om det.

su kommando

Det anbefales ikke konstant at bruge root-kontoen, da du med absolutte adgangsrettigheder ved et uheld kan forårsage uoprettelig skade på systemet.

Derfor har systemet su-kommandoen, som tillader en almindelig bruger at opnå root-rettigheder til enhver tid.

Bemærk: Kommandoen su er en forkortelse for erstatningsbruger.

Så for at roote skal du bare skrive:

Systemet vil bede om root-brugerens adgangskode, hvorefter det åbner adgang til root-brugerens shell-session.

Efter at have fuldført alle opgaver, der kræver root-rettigheder, kan du vende tilbage til den forrige session:

sudo kommando

Den sidste måde at få root-privilegier på er med sudo-kommandoen.

Sudo-kommandoen giver dig mulighed for at køre specifikke kommandoer som root uden at skulle åbne en ny session.

sudo kommando_at_udføre

Bemærk: I modsætning til su beder sudo-kommandoen ikke om root-adgangskoden, men derimod adgangskoden til den bruger, der kalder kommandoen.

Af sikkerhedsmæssige årsager er sudo-kommandoen ikke tilgængelig som standard; adgang til den skal konfigureres. Hvis du har fulgt den indledende serveropsætningsvejledning, ved du allerede, hvordan du gør dette.

Hvad er Visudo?

Sudo-kommandoen konfigureres ved hjælp af filen /etc/sudoers.

Vigtig! Rediger aldrig denne fil med en almindelig teksteditor! For at gøre dette skal du bruge visudo.

Forkert syntaks tilføjet til denne fil kan fuldstændig bryde fordelingen af ​​rettigheder mellem brugere. Derfor bruges visudo-kommandoen til at arbejde med denne fil.

Visudo-kommandoen åbner en fil i en almindelig teksteditor, men kontrollerer dens syntaks, når filen gemmes. Dette undgår konfigurationsfejl.

Typisk åbner visudo filen /etc/sudoers i vi-editoren. På et Ubuntu-system bruger visudo nano.

For at konfigurere visudo-kommandoen til at bruge vi på et Ubuntu-system skal du køre kommandoen:

sudo update-alternatives --config editor

Der er 3 valgmuligheder for den alternative editor (leverer /usr/bin/editor).
Status for valgstiprioritet
————————————————————
* 0 /bin/nano 40 automatisk tilstand
1 /bin/nano 40 manuel tilstand
2 /usr/bin/vim.basic 30 manuel tilstand
3 /usr/bin/vim.tiny 10 manuel tilstand

Vælg det nummer, der svarer til den teksteditor, du vil bruge.

På CentOS kan denne værdi ændres ved at tilføje følgende linje til ~/.bashrc:

eksport EDITOR=/sti/til/editor

For at opdatere dine indstillinger skal du indtaste:

For at åbne /etc/sudoers skal du indtaste:

Redigering af sudoers-filen

Så i den teksteditor du vælger, åbnes sudoers-filen på skærmen.

Nedenfor er Ubuntu 12.04-systemfilparametrene (de kommenterede linjer er udeladt, og ændringerne, der blev foretaget under den indledende serveropsætning, gemmes).

Bemærk: CentOS sudoers-filen er meget større; Nogle af dens parametre er ikke beskrevet i denne manual.

Defaults env_reset
Standarder secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
root ALLE=(ALLE:ALLE) ALLE
demo ALLE=(ALLE:ALLE) ALLE
%admin ALLE=(ALLE) ALLE
%sudo ALLE=(ALLE:ALLE) ALLE

Standard parametre

Den første linje, Defaults env_reset, nulstiller terminalmiljøet for at fjerne alle brugervariabler. Denne sikkerhedsforanstaltning bruges til at eliminere de potentielt skadelige virkninger af miljøvariabler fra sudo-sessionen.

Den anden parameter, Defaults secure_path=..., angiver stien (PATH, punkter i filsystemet, hvor OS vil lede efter applikationer) for sudo-operationer. Dette forhindrer potentielt farlige brugerstier i at blive brugt.

Indstillinger for brugerrettigheder

Den tredje og fjerde parameter burde være bekendt for dig. Du tilføjede selv den fjerde linje, men måske undersøgte du den ikke i detaljer.

  • demo ALLE=(ALLE:ALLE) ALLE
  • Det første felt angiver navnet på den bruger, som denne regel skal anvendes på (i dette tilfælde er det demo).
  • Den første ALL betyder, at reglen gælder for alle værter.
  • Den anden ALL betyder, at den angivne bruger kan køre kommandoer i enhver brugers session.
  • Den tredje ALL betyder, at den angivne bruger kan køre kommandoer i enhver gruppe.
  • Den sidste ALL angiver, at disse regler skal anvendes på alle kommandoer.

Dette betyder, at root- og demobrugere kan køre alle kommandoer ved hjælp af sudo med deres adgangskode.

Indstillinger for gruppeprivilegier

De sidste to linjer ligner indstillingerne for brugerrettigheder, men de er ansvarlige for grupperettigheder.

Gruppenavne begynder med %-symbolet.

Som du kan se, kan admingruppen udføre enhver kommando som enhver bruger eller vært. Sudo-gruppen har lignende rettigheder, men den kan også køre kommandoen som enhver gruppe.

Brugerdefinerede regler

Når du er fortrolig med den grundlæggende filsyntaks, kan du prøve at oprette et par regler selv.

Oprettelse af aliaser

Sudoers-filen kan struktureres mere bekvemt ved hjælp af forskellige aliaser.

For eksempel kan du oprette tre forskellige brugergrupper med kombinerede rettigheder:

User_Alias ​​​​GROUPONE = abby, brent, carl
User_Alias ​​​​GROUPTWO = brent, doris, eric,
User_Alias ​​​​GROUPTHREE = doris, felicia, bevilling

Gruppenavne skal begynde med stort bogstav. Herefter kan du give GROUPTWO-brugere ret til at ændre apt-get-databasen:

GROUPTWO ALL = /usr/bin/apt-get update

Hvis reglen ikke angiver en bruger og gruppe, er sudo som standard root.

Du kan derefter tillade GROUPTHREE brugere at lukke og genstarte maskinen; For at gøre dette skal du oprette et kommandoalias:

Cmnd_Alias ​​​​POWER = /sbin/shutdown, /sbin/halt, /sbin/genstart, /sbin/genstart
GRUPPETRE ALLE = POWER

POWER-kommandoaliaset indeholder kommandoer til nedlukning og genstart af maskinen.

Du kan også oprette et alias, Kør som, som erstatter den del af reglen, der angiver den bruger, i hvis session kommandoen skal udføres.

Runas_Alias ​​​​WEB = www-data, apache
GROUPONE ALLE = (WEB) ALLE

Nu kan enhver bruger af GROUPONE-gruppen udføre kommandoer i www-data eller apache brugersessioner.

Bemærk Bemærk: Husk, at tidligere oprettede regler har forrang i tilfælde af en regelkonflikt.

Blokeringsregler

Der er en række måder at kontrollere, hvordan sudo opfører sig og reagerer på opkald.

For eksempel er updatedb-kommandoen i kombination med mlocate-pakken relativt harmløs. For at en almindelig bruger kan udføre det med superbrugerrettigheder uden at indtaste en adgangskode, kan du oprette følgende regel:

GROUPONE ALL = NOPASSWD: /usr/bin/updatedb

NOPASSWD-kommandoen betyder, at systemet ikke vil bede om en adgangskode. Der er også en PASSWD-kommando, der udfører den modsatte adfærd og bruges som standard.

NOPASSWD gælder for hele reglen, medmindre PASSWD-kommandoen tilsidesætter den. For eksempel kan linjen se sådan ud:

GROUPTWO ALL = NOPASSWD: /usr/bin/updatedb, PASSWD: /bin/kill

En anden praktisk kommando er NOEXEC, som bruges til at forhindre farlig opførsel af visse programmer. For eksempel kan nogle kommandoer, såsom mindre, kalde andre kommandoer:

Denne kommando udfører enhver kommando med brugerens privilegier, der kører mindre, hvilket kan være meget farligt.

For at forhindre denne adfærd kan du bruge følgende linje:

brugernavn ALL = NOEXEC: /usr/bin/less

Yderligere Information

Dette afsnit indeholder forskellige nyttige tips til at arbejde med sudo.

Hvis du har angivet en bruger eller gruppe i parameteren Kør som, kan du køre kommandoer i den pågældende brugers session ved at bruge henholdsvis -u- og -g-flag:

sudo -u run_as_user kommando
sudo -g run_as_group kommando

Som standard gemmer sudo legitimationsoplysninger i én terminal i en periode. Det betyder, at du ikke skal indtaste din adgangskode igen i denne periode.

Hvis du af sikkerhedsmæssige årsager vil nulstille denne timer, skal du bruge kommandoen:

For at finde ud af brugerens rettigheder skal du indtaste:

Denne kommando viser alle tilladelser angivet i filen /etc/sudoers for en given bruger.

Hvis en normal bruger forsøger at køre en administratorkommando uden sudo-præfikset, vil kommandoen ikke virke. For at undgå at skulle indtaste kommandoen igen, brug en bash-funktion, der gentager kommandoen:

Et dobbelt udråbstegn gentager den sidste kommando.

Konklusion

Du har nu grundlæggende færdigheder med sudoers-filen og root-tilladelser.

Når du arbejder med superbrugerrettigheder, skal du huske, at almindelige brugere ikke har sådanne rettigheder som standard af sikkerhedsmæssige årsager. Misbrug ikke root-rettigheder, ellers kan du ved et uheld forårsage uoprettelig skade på systemet.

Tags: ,

Sudo-kommandoen er meget vigtig for at administrere adgangsrettigheder i Linux-operativsystemet. Takket være denne lille kommando kan du give tilladelse til at udføre visse handlinger på vegne af administratoren til andre brugere uden at give dem selve superbruger-adgangskoden. Du behøver heller ikke altid være under en superbrugerkonto for lejlighedsvis at udføre administrative handlinger.

Det ser ud til, at et så lille team med et minimum af kapaciteter og den enklest mulige brug, men faktisk kan det meget mere. I denne artikel vil vi se på, hvordan sudo er konfigureret i Linux til at kontrollere adgangen til systemfunktioner og brugermuligheder.

Før vi går videre til at konfigurere adgang til sudo-værktøjet, lad os se på, hvordan det virker. Der er to måder at få administratorrettigheder på i Linux. Du kan skifte til root-brugeren ved at bruge su-kommandoen, eller du kan sende den ønskede kommando som en parameter til sudo-værktøjet, som vil udføre den med administratorrettigheder. Desuden er den anden metode at foretrække, fordi du ikke glemmer, hvad du bruger og ikke vil gøre noget unødvendigt.

Holdnavnet betyder erstatning bruger gør eller super bruger gør. Hjælpeprogrammet giver dig mulighed for at køre programmer som en anden bruger, men oftest som root-bruger. Værktøjet blev udviklet tilbage i 1980 af Bob Cogshell og Cliff Spencer. I løbet af denne tid har mange udviklere ændret sig, og mange funktioner er blevet tilføjet.

sudo fungerer takket være SUID-adgangsflaget. Hvis dette flag er indstillet til et program, så udføres det ikke på vegne af brugeren, der startede det, men på vegne af ejeren, givet at filen ejes af sudo, så udføres værktøjet som root. Den læser derefter sine indstillinger, beder om brugerens adgangskode og beslutter, om brugeren kan få lov til at køre kommandoer som administrator. Hvis ja, udføres kommandoen i parameteren.

Nu hvor du kender teorien, lad os se på, hvordan du opsætter sudo på Linux.

Opsætning af sudo på Linux

Alle sudo-indstillinger er placeret i filen /etc/sudores. Her kan du konfigurere en masse parametre, startende fra hvem der får lov til at udføre kommandoer på vegne af superbrugeren og slutter med at begrænse antallet af tilgængelige kommandoer.

For at åbne en fil til redigering skal du skrive følgende kommando som superbruger:

Du kan også angive den teksteditor, hvor du vil redigere konfigurationsfilen:

EDITOR=nano visudo

Dernæst vil vi se på de mest interessante indstillinger, som du kan indstille i denne fil. Men lad os først se på den grundlæggende filsyntaks. Den består af to typer strenge, disse er aliaser, der giver dig mulighed for at oprette lister over brugere og flag, samt selve reglerne, som specificerer, hvordan sudo-kommandoen vil opføre sig. Aliassyntaksen ser sådan ud:

skriv alias_name = element1, element2, element3

Typen angiver, hvilken type Alice der skal oprettes, navnet er det navn, der vil blive brugt, og listen over elementer angiver de elementer, der vil blive underforstået, når der refereres til dette navn.

Beskrivelsen af ​​brugertilladelser har en lidt anderledes syntaks:

bruger vært = (anden_bruger:gruppe) hold

Brugeren angiver den bruger eller gruppe, som vi opretter reglen for, værten er den computer, som denne regel gælder for. En anden bruger - under dække af hvilken bruger den første kan udføre kommandoer, og den sidste kan udføre tilladte kommandoer. Et alias kan bruges i stedet for enhver af parametrene. Og nu opsætter sudo i Debian og andre distributioner.

Hovedindstillinger

Standardaliaset giver dig mulighed for at indstille standardparametre for værktøjets drift, som vi vil overveje i dette afsnit. Et sådant alias begynder med ordet Defaults, efterfulgt af navnet på flaget. Hvis der er et !-symbol foran navnet, betyder det, at flaget skal slås til, ellers skal du slå det fra:

Deaktiver introduktionen første gang du bruger den:

Standard!foredrag

Superbrugeren kan ikke gøre sudo:

Standard !root_sudo

Hvis du nu prøver at køre sudo sudo, vil intet fungere:

Skift hjemmemappen for målbrugeren, og lad den aktuelle brugers mappe som standard være hjemmemappen:

Defaults set_home

Gem listen over grupper for den aktuelle bruger:

Standard !bevar_grupper

Anmod om superbrugeradgangskode i stedet for brugeradgangskode:

Indstil antallet af adgangskodeforsøg før sudo slutter, standard er 3:

Standarder passwd_tries=5

Antallet af minutter, der vil gå, før sudo beder om en adgangskode igen, er som standard 5. Hvis du indstiller værdien til 0, vil den altid bede om en adgangskode, uanset hvor lang tid siden du brugte værktøjet:

Standardtidsstempel_timeout=10

Følgende parameter angiver det antal minutter, som sudo venter på, at en adgangskode bliver genindtastet, hvis den indtastes forkert:

Standarder passwd_timeout=10

Du kan ændre den meddelelse, der vises, når du bliver bedt om en adgangskode:

Defaults passprompt="Din adgangskode:"

Du kan angive en anden bruger, ikke root, hvorfra alle kommandoer vil blive udført, til denne brug:

Standardindstillinger runas_default="bruger"

Du kan logge alle forsøg på at oprette forbindelse til sudo:

Standard logfile=/var/log/sudo

Så prøver vi at kontrollere loggens funktion:

sudo kat /var/log/sudo

Disse var alle de mest interessante sudo-indstillinger, som du muligvis har brug for, derefter vil vi se på, hvordan man indstiller sudo-adgangsrettigheder for brugere.

Opsætning af sudo-brugere

Vi har allerede ovenfor diskuteret syntaksen for opsætning af handlinger for brugere; her er alt mere kompliceret end med aliaser, men du kan finde ud af det. Lad os f.eks. tillade enhver bruger at bruge sudo, fra enhver vært, og udføre en hvilken som helst kommando:

ALLE ALLE = (ALLE) ALLE

Sådan et hold er meget usikkert, det tillader alle og alt. Den første ALL er for at tillade alle brugere, den anden ALL er for alle værter, den tredje ALL er for at tillade login som enhver bruger, og den fjerde er at tillade at enhver kommando udføres. Men en anden konstruktion bruges meget oftere:

%hjul ALLE = (ALLE) ALLE

Det betyder det samme som det forrige, kun her tillader vi ikke alle brugere at bruge sudo, men kun dem der er medlemmer af hjulgruppen.

%hjul ALLE = (rod) ALLE

Her har vi allerede begrænset det mulige valg af brugere til kun root-brugeren. Du kan også angive den brugergruppe, som han kan udføre kommandoer på:

%hjul ALLE = (root:admins) ALLE

Det betyder, at du kan køre kommandoen som root eller en anden bruger fra admins-gruppen. Vi kan også angive kommandoer, som brugeren kan udføre. For eksempel:

%hjul ALL = (rod) /bin/mount, /bin/umount

Brugeren kan kun køre mount og umount kommandoerne som superbruger. Lad os nu gøre det endnu mere interessant, brugeren kan udføre mount og umount uden en adgangskode, og alle andre kommandoer med en adgangskode:

%hjul ALLE = (rod) ALLE
%hjul ALL = (rod) NOPASSWD: /bin/mount, /bin/umount

Du kan også begrænse brugere efter vært, for eksempel tillader vi kun brugen af ​​sudo fra host1:

%wheel host1 = (rod) ALLE

Det er tilbage at overveje, hvordan man bruger aliaser. Aliaser kan være af følgende typer:

  • User_Alias- alias for brugere, der vil bruge sudo;
  • Runas_Alias- alias for brugere, på hvis vegne kommandoer vil blive udført;
  • Host_Alias- vært alias;
  • Cmnd_Alias- kommando alias;

Lad os for eksempel oprette fire aliaser og bruge dem i vores regel:

User_Alias ​​​​Brugere = bruger1,bruger2,bruger3
Runas_Alias ​​​​Admins = root, admin
Host_Alias ​​​​Værter = vært1,vært2
Cmd_Alias ​​​​Cmds = /bin/mount,/bin/umount

Brugerværter = (Administratorer) Cmds

Dette betyder, at brugere fra brugerlisten vil være i stand til at udføre Cmds-kommandoer på vegne af Amdins-brugere på værtsværter.

Der er stadig et par ord tilbage at sige om flag. NOPASSWD-flaget fortæller dig ikke at bede om en adgangskode, når du udfører denne regel. For eksempel, for at tillade alle brugere at køre mount-kommandoen med sudo uden en adgangskode:

ALLE ALLE = (rod) NOPASSWD: /bin/mount

Du kan også forhindre denne særlige kommando i overhovedet at blive udført ved hjælp af NOEXEC-flaget:

ALLE ALLE = (rod) NOEXEC /bin/mount

Du kan kontrollere, om filen /etc/sudores er konfigureret korrekt og se alle de oprettede regler ved hjælp af kommandoen:

Alle installerede flag og indstillinger vises her, såvel som denne brugers tilladelser.

konklusioner

I denne artikel så vi på, hvordan man konfigurerer sudo i Linux. Som du kan se, på trods af at dette er et meget simpelt værktøj, skjuler det en masse nyttige indstillinger, som du kan bruge på dit system. Hvis du har spørgsmål, så spørg i kommentarerne!

Som Linux-administrator har jeg altid brugt og sudo, Og su. Og som systemadministrator er det meget vigtigt, at du kender forskel på dem. For dem, der ikke har nogen generel idé om forskellen mellem de to eller altid forveksler dem - her er en liste med 12 Q&A (spørgsmål og svar), der har til formål at hjælpe dig med at forstå forviklingerne ved sudo og su.

BEMÆRK- Denne artikel er kun specifik for Ubuntu. Selvom nogle oplysninger kan gælde for de fleste populære distributioner.

Sudo vs Su

Denne serie af spørgsmål og svar bør afklare nogle af funktionerne i sudo vs su for mange Ubuntu-brugere.

Q1. Hvordan bruges sudo og su? Hvad er forskellen mellem dem?

Svar.Sudo bruges til at køre en bestemt kommando med root-tilladelse. Det interessante er, at når du bruger sudo for en bestemt kommando vil systemet bede dig om den aktuelle brugers adgangskode. Efter indtastning af adgangskoden startes kommandoen med superbrugerrettigheder.

Her er et eksempel:

$ apt-get install skype E: Kunne ikke åbne låsefilen /var/lib/dpkg/lock - åben (13: Tilladelse nægtet) E: Kan ikke låse administrationsmappen (/var/lib/dpkg/), er du root ? $ sudo apt-get install skype-adgangskode til mylinuxbook: Læser pakkelister... Færdig Opbygning af afhængighedstræ Læser tilstandsoplysninger... Færdig ... ...

Som du kan se, prøvede jeg først at installere Skype ved hjælp af kommandoen apt-get men jeg fik tilladelse nægtet fejl. Så brugte jeg sudo sammen med det samme kommandosystem og adgangskodesystem til mylinuxbook-brugeren. Efter indtastning af den korrekte adgangskode er kommandoen fuldført.

På den anden side bruges su til at skifte enhver bruger. Den konfigurerede adgangskode for den tilsvarende bruger er aktiveret. Hvis su bruges uden muligheder, falder det til root-brugerkontoen. I dette tilfælde anmoder systemet om superbruger-adgangskoden.

Her er et eksempel:

$ su mylinuxbook Adgangskode: mylinuxbook@mylinuxbook-Inspiron-1525:~$

I ovenstående eksempel brugte jeg su for at skifte til mylinuxbook-brugerkontoen, og efter at have indtastet adgangskoden til mylinuxbook, var jeg i stand til at gøre dette.

Her er et andet eksempel:

$ su Adgangskode: su: Godkendelsesfejl

I eksemplet ovenfor kørte jeg su for at aktivere root-kontotilladelser for en normal bruger, men det kunne ikke, fordi jeg ikke havde konfigureret en root-adgangskode. Distributioner såsom Ubuntu har ikke superbrugeradgangskoder konfigureret som standard. Når det er sat op, vil du være i stand til at bruge denne adgangskode.

Q2. Hvad hvis jeg ikke vil konfigurere en administratoradgangskode i min Ubuntu, men stadig vil skifte til superbruger?

Svar. I dette tilfælde kan du prøve kommandoen " sudo su". Her er et eksempel:

$ sudo su adgangskode til mylinuxbook: root@mylinuxbook-Inspiron-1525:/home/mylinuxbook#

Når sudo er blevet brugt til at starte su, beder systemet dig om den aktuelle brugers adgangskode i stedet for superbrugeradgangskoden. Når denne var indtastet, blev den løbende konto overført til kontoen.

Q3. Hvad hvis jeg vil bruge su til at navigere til andre brugerkonti, men ikke vil huske hver enkelt brugeradgangskode?

Svar. Nå, i så fald skal du bare bruge su-kommandoen, indtaste administratoradgangskoden og skifte til kontoen. Herfra kan du ved hjælp af su skifte til enhver brugerkonto uden at bruge adgangskoder.

Q4. Hvis sudo bruges til at gøre noget med root-rettigheder, hvorfor er den aktuelle brugers adgangskode så nødvendig og ikke root-adgangskoden?

Svar. Nå, det er ikke præcis som enhver normal bruger kan gøre sudo og køre kommandoer, der kræver superbruger privilegier. Det skal du som bruger være sudoer Samme. Det betyder, at du skal have privilegier for at bruge sudo. Hvis du er en gyldig sudoer, beder systemet kun om en adgangskode for at sikre, at du forstår, at du udfører noget arbejde, der kræver root-privilegier, og du bør dobbelttjekke alt, før du rent faktisk gør det.

Nu opstår spørgsmålet om sudoers. Sådan bliver du bruger sudoer? En bruger kan blive en sudoer, hvis de føjes til sudo-gruppen. Her er et eksempel:

$ sudo adder sudo

Bare udskift med det faktiske brugernavn for kontoen. Bemærk venligst, at gruppen tidligere (før Ubuntu 12.04) skulle kaldes admin, men nu er det ikke nødvendigt.

Du kan bruge kommandoen " gruppe" for at kontrollere alle grupper, som denne bruger er i. Her er et eksempel:

$ grupper mylinuxbook mylinuxbook: mylinuxbook adm cdrom sudo dip plugdev lpadmin sambashare

Så du kan se, at brugeren " mylinuxbook" er en del af alle disse grupper, inklusive sudo-grupperne, og derfor sudoer.

Q5. Jeg bemærkede, at så snart jeg brugte sudo, forblev mine root-tilladelser i lang tid, selvom alt efter et stykke tid vendte tilbage til det normale. Hvad er dette?

Svar. Ubuntu husker adgangskoden til sudo i cirka 15 minutter. Det betyder, at når du først har brugt sudo til at køre en kommando, vil systemet ikke bede dig om en adgangskode, hvis du kører andre kommandoer, der kræver root-rettigheder for at køre. Selvom du bliver nødt til at bruge " sudo" før hvert hold.

Q6. Hvad er fordelene ved sudo frem for su?

Svar. Sudo har mange fordele i forhold til su.

Her er listen:

  • Sudo sikrer, at der eksisterer privilegier for en bestemt kommando (eller i en bestemt periode) og ikke for en hel session, da dette kan føre til utilsigtet misbrug af superbrugerprivilegier.
  • Du kan bruge sudo til at begrænse brugerrettigheder. Dette er nyttigt, når du ikke ønsker, at brugeren skal have kontrol over alle superbrugerrettigheder, når du arbejder med suda.
  • Der er en log (auth.log), der vedligeholdes for hver sudoer. Denne fil indeholder information om de kommandoer, der blev udført med sudo, og det tidspunkt, de blev udført. Dette hjælper administratoren med at spore selv betroede brugere (sudoers).
  • Den største fordel er, at suda kræver brugerens egen adgangskode for at logge ind, frem for root-adgangskoden. Dette hjælper med at holde root-adgangskoden privat, og der er ingen grund til at ændre den, selv når brugeren (sudoer) forlader.
  • Q7. Kan enhver bruger udføre sudo-operationer?

    Svar. Nej, kun betroede brugere eller sudoere kan udføre sudo-handlinger. Her er den officielle side, der beskriver, hvordan og hvad en sudoer-bruger kan gøre.

    Q8. Jeg er interesseret i su. Hvordan kan jeg konfigurere brugen af ​​su på en måde, der opnår funktionalitet svarende til suda?

    Svar. Hvis du kører su, betyder det, at du allerede har en superbruger-adgangskode konfigureret. For at opnå funktionalitet svarende til sudo, dvs. for kun at køre én kommando med root-rettigheder ved hjælp af su, er alt hvad du skal gøre at bruge indstillingen -c fra su-holdet.

    Her er et eksempel:

    $ su -c "apt-get install skype" Adgangskode:

    Indtast blot adgangskoden, og kun denne kommando vil fungere med superbrugerrettigheder. Selvom dette er det samme som sudo, er den eneste forskel, at du skal indtaste superbrugeradgangskoden i stedet for den nuværende brugeradgangskode.

    Q9. Jeg arbejder med sudo. Hvordan kan jeg tilpasse min brug af sudo på en måde, der opnår samme funktionalitet som su?

    Svar. For at opnå su-funktionalitet via sudo, prøv muligheden -jeg sudo kommandoer.

    Her er et eksempel:

    $ sudo -i adgangskode til mylinuxbook: root@mylinuxbook-Inspiron-1525:~#

    Det ser du med " sudo -i", blev root-kontoen skiftet, selvom den indtastede adgangskode var for den aktuelle bruger (mylinuxbook i dette tilfælde).

    Q10. Min kontos root-adgangskode er endnu ikke blevet aktiveret. Kan jeg bruge sudo til at aktivere superbruger-adgangskoden?

    Svar. For at aktivere superbruger-adgangskoden kan du bruge kommandoen passwd på følgende måde:

    $ sudo passwd root

    Denne kommando kræver root-privilegier, så du bliver nødt til at bruge sudo.

    Q12. Kan jeg bruge sudo til at give brugere særlige rettigheder?

    Svar. Konfigurationsfil for sudo - /etc/sudoers. Det kan ikke redigeres manuelt ved hjælp af en editor. Til dette formål anbefales det at bruge kommandoen visudo.

    Her er den nøjagtige kommando:

    $sudo visudo

    og dette er hvad du får:

    Denne kommando åbner en midlertidig fil /etc/sudoers.tmp i nano-editor til redigering. Visudo sørger for, at der ikke er nogen konflikt, når flere kopier af den samme fil redigeres.

    For at forstå, hvordan man tildeler begrænsede rettigheder, skal du forstå designet af denne konfigurationsfil, .

    Nogle gange skal du bare køre en kommando fra en anden bruger. Og der er flere måder, hvorpå dette kan gøres. Jeg vil tale om dem i min artikel "Kør en kommando som en anden bruger i Unix/Linux".

    Kør en kommando som en anden bruger i Unix/Linux - metode 1

    Og så kan du bruge SUDO-værktøjet. Lad os se på et eksempel:

    $ sudo -H -u Your_another_user -c "ping site"

    Forklaringer:

    • -H YOUR_HOME: Indstiller HOME (miljøvariabel for en specifik brugers hjem) og er som standard root.
    • -u DIN_BRUGER: Angiv den bruger, fra hvem kommandoen skal udføres.
    • -c YOUR_COMMAND: Fungerer som en mulighed for at indtaste en kommando.

    Sådan noget.

    Kør en kommando som en anden bruger i Unix/Linux - metode 2

    Du kan bruge SU-værktøjet. Og nu vil jeg give et par eksempler.

    Log ind som root-bruger

    For at få root skal du køre:

    $su -root

    Kør kommandoen som root-bruger

    Her er et eksempel på en kommando:

    # su - root -c "DIN_KOMMAND_HER"

    Su - -c "DIN_KOMMAND_HER arg1"

    Udfør en kommando fra en anden bruger ved hjælp af su

    Så her er et eksempel:

    # su -c "/opt/solr/bin/solr oprette -c test_solr_core -n solrconfig.xml" -s /bin/sh solr Oprettet ny kerne "test_solr_core"

    Lad os se på et andet eksempel:

    $ su another_user -c "ping site"

    $su -DIN_BRUGER -c "DIN_KOMMAND_HER"

    • — — Vil simulere den angivne brugers login.
    • -c - Bruges til at angive den kommando, der skal udføres (for den angivne bruger).

    Sådan noget.

    Kør en kommando som en anden bruger i Unix/Linux - metode 3

    Og så kan du bruge runuser-værktøjet. Runuser-kommandoen starter en shell med erstatningsbruger- og gruppe-id'er. Denne kommando er kun nyttig, når du er logget ind som root. Syntaksen er som følger:

    # runuser -l DIN_BRUGER -c "DIN_KOMMAND_HER"

    Som et eksempel vil jeg vise følgende linje:

    # runuser -l nginx -c "service nginx start"

    PS: Runuser-kommandoen kræver ikke en adgangskode og bør kun køres af root-brugeren.

    Hovedmuligheder:

    • -l: Opret en login-shell ved hjælp af runuser-l PAM-filen i stedet for standarden.
    • -g: Peger på hovedgruppen.
    • -G: Angiver en ekstra gruppe.
    • -c: Faktisk bruges det til at specificere en kommando.
    • –session-command=COMMAND: Send en enkelt kommando til shellen med "-c"-indstillingen og opretter ikke en ny session.
    • -m: Nulstil ikke miljøvariabler (ENV'er).

    Det er det, emnet "Kør en kommando som en anden bruger i Unix/Linux" er færdig.