Sudo-alternativ. Vi använder kommandona sudo su. Vad är Visudo

Sudoär ett program som tillåter administratörer att bevilja begränsade root-rättigheter till användare och föra en logg över rotaktivitet. Grundfilosofin är att ge så få rättigheter som möjligt samtidigt som människor kan utföra sina uppgifter normalt. Skillnaden mot su-kommandot är att användaren anger lösenordet för sitt konto, inte root-användarlösenordet.

Sudo på Debian har en femton minuters (kanske) timeout efter att ha angett lösenordet. Det betyder att när du först anger root-lösenordet har du 15 minuter på dig under vilka du kan utföra nästa kommando utan att ange lösenordet. Timeouten kan återställas omedelbart med kommandot sudo -k.

Installerar sudo på Debian 7

aptitude installera sudo

En konfigurationsfil skapas under installationen /etc/sudoers och katalog /etc/sudoers.d, som vi kommer att prata om lite senare.

sudo kommandoalternativ

-k- låter dig återställa timeout tills du behöver ange lösenordet igen. Om du anger ett kommando som kan kräva ett lösenord, kommer timeouten att återställas specifikt för det kommandot.
-h- ett litet tips kommer att visas på standardutgången.
-V- versionen av sudo och plugins kommer att visas. Om du kör som root kommer alla inställningar att visas.
-g grupp - låter dig ange vilken grupp kommandot ska startas från.
-H- anger katalogen som kommer att specificeras i miljövariabeln HOME.
-jag- simulerar första inträde. Om kommandot inte är specificerat kommer det att logga in dig, så att du kan bli root istället för att använda sudo su.
-l[l]- om kommandot inte är specificerat, kommer en lista över tillgängliga kommandon för den anropande användaren (eller användaren som anges med parametern -U) att visas. Om ett kommando specificeras och det är tillgängligt, kommer den fullständiga sökvägen till kommandot och tillgängliga parametrar att visas. Om kommandot inte är tillgängligt kommer sudo att avslutas med status 1. Om du använder alternativet -ll eller anger -l två gånger, kommer ett mer utförligt utdataformat att användas.
-s- skalet som anges i miljövariabeln SHELL kommer att startas. Om ett kommando anges kommer det att skickas till det körande skalet för exekvering.
-U användare- tillsammans med parametern -l, låter dig visa privilegierna för en specifik användare. Som standard har root och användare med alla privilegier (ALLA) tillgång till privilegielistor.
-u användare- det angivna kommandot kommer att köras som den angivna användaren, inte som root.
-v- låter dig förlänga timeouten med 15 minuter eller vad som än är specificerat i sudoers), men inte köra några kommandon.

De flesta av de tillgängliga alternativen listas här, men inte alla. För att se hela listan använd kommandot man sudo.

Konfigurera sudo på Debian 7

Det rekommenderas att ställa in alla användarinställningar i filer i katalogen /etc/sudoers.d, inte i huvudfilen /etc/sudoers. Det vill säga, du kan skapa en fil med vilket namn som helst i katalogen /etc/sudoers.d och listar redan de nödvändiga inställningarna i den.

Fil /etc/sudoers det rekommenderas att redigera med hjälp av verktyget visudo, eftersom den låser filen och kontrollerar att direktiven är korrekta vid stängning. visudo använder textredigerare standard, som kan åsidosättas i sudoers direktiv som:

Kommandot sudo är mycket viktigt för att hantera åtkomsträttigheter i operativ system Linux. Tack vare detta lilla kommando kan du ge behörighet att utföra vissa åtgärder på uppdrag av administratören till andra användare, utan att ge dem själva superanvändarlösenordet. Dessutom behöver du inte alltid vara under ett superanvändarkonto för att ibland utföra administrativa åtgärder.
Det verkar som ett så litet team, med ett minimum av kapacitet och enklast möjliga användning, men i själva verket kan det göra mycket mer. I den här artikeln kommer vi att titta på hur sudo konfigureras i Linux för att kontrollera åtkomst till systemfunktioner och användarmöjligheter.

Hur fungerar sudo?

Innan vi går vidare till att ställa in åtkomst till sudo-verktyget, låt oss titta på hur det fungerar. Det finns två sätt att få administratörsrättigheter i Linux. Du kan byta till root-användaren med hjälp av su-kommandot, eller så kan du skicka det önskade kommandot som en parameter till sudo-verktyget, som kommer att köra det med administratörsrättigheter. Dessutom är den andra metoden att föredra, eftersom du inte kommer att glömma att du använder root-rättigheter och inte kommer att göra något onödigt.
Lagnamnet betyder ersätta användare gör eller superanvändare gör. Verktyget låter dig köra program som en annan användare, men oftast som rotanvändare. Verktyget utvecklades redan 1980 av Bob Cogshell och Cliff Spencer. Under denna tid har många utvecklare ändrats och många funktioner har lagts till.
sudo fungerar tack vare SUID-åtkomstflaggan. Om denna flagga är inställd för ett program, så exekveras den inte på uppdrag av användaren som startade den, utan på uppdrag av ägaren, givet att filen ägs av sudo, så exekveras verktyget som root. Den läser sedan sina inställningar, frågar efter användarens lösenord och bestämmer om användaren kan tillåtas köra kommandon som administratör. Om ja, exekveras kommandot som skickas i parametern.
Nu när du känner till teorin, låt oss titta på hur man ställer in sudo på Linux.

Konfigurera sudo på Linux

Alla sudo-inställningar finns i filen /etc/sudores. Här kan du konfigurera många parametrar, från vem som får utföra kommandon på uppdrag av superanvändaren och slutar med att begränsa uppsättningen av tillgängliga kommandon.
För att öppna en fil för redigering, skriv följande kommando som superanvändare:

Du kan också ange i vilken textredigerare du vill redigera konfigurationsfilen:

# EDITOR=nano visudo

Därefter kommer vi att titta på de mest intressanta inställningarna som du kan ställa in i den här filen. Men låt oss först titta på den grundläggande filsyntaxen. Den består av två typer av strängar, dessa är alias som låter dig skapa listor med användare och flaggor, samt själva reglerna som anger hur sudo-kommandot kommer att bete sig. Aliassyntaxen ser ut så här:
skriv alias_name = element1, element2, element3
Typen anger vilken typ av Alice som ska skapas, namnet är namnet som kommer att användas, och listan över element anger de element som kommer att antydas när man refererar till detta namn.
Beskrivningen av användarbehörigheter har en något annorlunda syntax:
användarvärd = (annan_användare:grupp) lag
Användaren anger användaren eller gruppen som vi skapar regeln för, värden är den dator som denna regel kommer att gälla för. En annan användare - under sken av vilken användare den första kan utföra kommandon, och den sista kan utföra tillåtna kommandon. Ett alias kan användas istället för någon av parametrarna. Och nu ställer du in sudo i Debian och andra distributioner.

Huvudinställningar

Med standardaliaset kan du ställa in standardparametrar för verktygets funktion, vilket vi kommer att överväga i det här avsnittet. Ett sådant alias börjar med ordet Defaults, följt av flaggans namn. Om det finns en !-symbol framför namnet betyder det att flaggan måste slås på, annars stänger du av den:
Inaktivera introduktionen första gången du använder den:

Förinställd!föreläsning


Superanvändaren kan inte göra sudo:

Standardvärden !root_sudo



Om du nu försöker köra sudo sudo kommer ingenting att fungera:


Ändra hemkatalogen för målanvändaren och lämna den aktuella användarens mapp som hemkatalog som standard:

Standardinställningar set_home



Spara listan över grupper för den aktuella användaren:

Standardvärden för !bevara_grupper



Begär superanvändarlösenord istället för användarlösenord:



Låt oss sedan titta på variablerna som du kan ställa in värden för att ställa in önskade inställningar:
Ställ in antalet lösenordsförsök innan sudo avslutas, standard är 3:

Standardvärden passwd_tries=5





Antalet minuter som kommer att gå innan sudo ber om ett lösenord igen är 5 som standard. Om du ställer in värdet till 0 kommer det alltid att fråga efter ett lösenord, oavsett hur länge sedan du använde verktyget:

Standardinställningen timestamp_timeout=10



Följande parameter anger antalet minuter som sudo kommer att vänta på att ett lösenord ska skrivas om om det skrivs in felaktigt:

Standardvärden passwd_timeout=10



Du kan ändra meddelandet som visas när du uppmanas att ange ett lösenord:

Defaults passprompt="Ditt lösenord:"


Du kan ange en annan användare, inte root, från vilken alla kommandon kommer att köras, för denna användning:

Standardinställningar runas_default="användare"

Du kan logga alla försök att ansluta till sudo:

Standardvärde för logfile=/var/log/sudo



Sedan försöker vi kontrollera loggens funktion:

$ sudo cat /var/log/sudo



Dessa var alla de mest intressanta sudo-inställningarna som du kan behöva, härnäst kommer vi att titta på hur man ställer in sudo-åtkomsträttigheter för användare.

Konfigurera sudo-användare

Vi har redan diskuterat ovan syntaxen för att ställa in åtgärder för användare; här är allt mer komplicerat än med alias, men du kan lista ut det. Låt oss till exempel tillåta vilken användare som helst att använda sudo, från vilken värd som helst, och köra vilket kommando som helst:

ALLA ALLA = (ALLA) ALLA



Ett sådant lag är väldigt osäkert, det tillåter alla och allt. Den första ALL är för att tillåta alla användare, den andra ALL är för alla värdar, den tredje ALL är för att tillåta inloggning som vilken användare som helst, och den fjärde är att tillåta att alla kommandon körs. Men en annan konstruktion används mycket oftare:

%hjul ALLA = (ALLA) ALLA


Det betyder samma sak som den tidigare, bara här tillåter vi inte alla användare att använda sudo, utan bara de som är medlemmar i hjulgruppen.

%hjul ALLA = (rot) ALLA

Här har vi redan begränsat det möjliga valet av användare till endast rotanvändaren. Du kan också ange vilken användargrupp han kan utföra kommandon för:

%hjul ALLA = (root:admins) ALLA



Det betyder att du kan köra kommandot som root eller en annan användare från administratörsgruppen. Vi kan också ange kommandon som användaren kan utföra. Till exempel:
  • Runas_Alias- alias för användare på vars vägnar kommandon kommer att utföras;
  • Host_Alias- värdalias;
  • Cmnd_Alias- kommandoalias;
  • Låt oss till exempel skapa fyra alias och använda dem i vår regel:

    User_Alias ​​​​Användare = användare1,användare2,användare3
    Runas_Alias ​​​​Admins = root, admin
    Host_Alias ​​​​Hosts = host1,host2
    Cmd_Alias ​​​​Cmds = /bin/mount,/bin/umount

    Users Hosts = (Admins) Cmds

    Detta innebär att användare från användarlistan kommer att kunna utföra Cmds-kommandon på uppdrag av Amdins-användare på Hosts-värdar.
    Det finns fortfarande några ord kvar att säga om flaggor. NOPASSWD-flaggan talar om för dig att inte fråga efter ett lösenord när du kör denna regel. Låt till exempel alla användare prestera mount kommando med sudo utan lösenord:

    ALLA ALLA = (root) NOPASSWD: /bin/mount

    Du kan också förhindra att just det här kommandot exekveras alls med NOEXEC-flaggan:

    ALLA ALLA = (root) NOEXEC /bin/mount

    Du kan kontrollera om filen /etc/sudores var korrekt konfigurerad och se alla skapade regler med kommandot:


    Alla installerade flaggor och inställningar visas här, såväl som den här användarens behörigheter.

    Slutsatser

    I den här artikeln tittade vi på hur man konfigurerar sudo i Linux. Som du kan se, trots att detta är ett väldigt enkelt verktyg, döljer det många användbara inställningar som du kan använda på ditt system. Om du har några frågor, fråga i kommentarerna!

    Som Linux-administratör har jag alltid använt och sudo, Och su. Och som systemadministratör är det väldigt viktigt att du vet skillnaden mellan dem. För dem som inte har någon allmän uppfattning om skillnaden mellan de två eller som alltid förväxlar dem - här är en lista med 12 frågor och svar (frågor och svar) som syftar till att hjälpa dig förstå krångligheterna med sudo och su.

    NOTERA- Den här artikeln är endast specifik för Ubuntu. Även om viss information kan gälla för de flesta populära distributioner.

    Sudo vs Su

    Den här serien av frågor och svar bör förtydliga några av funktionerna i sudo vs su för många Ubuntu-användare.

    Q1. Hur används sudo och su? Vad är skillnaden mellan dem?

    Svar.Sudo används för att köra ett visst kommando med root-behörighet. Det intressanta är att när du använder sudo för ett specifikt kommando kommer systemet att be dig om den aktuella användarens lösenord. Efter att ha angett lösenordet startas kommandot med superanvändarprivilegier.

    Här är ett exempel:

    $ apt-get install skype E: Kunde inte öppna låsfilen /var/lib/dpkg/lock - öppen (13: Tillstånd nekad) E: Kan inte låsa administrationskatalogen (/var/lib/dpkg/), är du rot ? $ sudo apt-get install skype-lösenord för mylinuxbook: Läser paketlistor... Klart Byggande av beroendeträd Läser tillståndsinformation... Klart ... ...

    Som du kan se försökte jag först installera Skype med kommandot apt-get men jag fick tillstånd nekad fel. Sedan använde jag sudo tillsammans med samma kommandosystem och lösenordssystem för mylinuxbook-användaren. Efter att ha angett rätt lösenord slutförs kommandot framgångsrikt.

    Å andra sidan används su för att byta vilken användare som helst. Välj lösenord motsvarande användare är aktiverad. Om su används utan alternativ, faller det på root-användarkontot. I det här fallet begär systemet superanvändarlösenordet.

    Här är ett exempel:

    $ su mylinuxbook Lösenord: mylinuxbook@mylinuxbook-Inspiron-1525:~$

    I exemplet ovan använde jag su för att byta till mylinuxbook-användarkontot och efter att ha angett lösenordet för mylinuxbook kunde jag göra detta.

    Här är ett annat exempel:

    $ su Lösenord: su: Autentiseringsfel

    I exemplet ovan körde jag su för att aktivera root-kontobehörigheter för en normal användare, men det kunde inte eftersom jag inte hade ett root-lösenord konfigurerat. Distributioner som Ubuntu har inte superanvändarlösenord konfigurerade som standard. När det är konfigurerat kommer du att kunna använda detta lösenord.

    Q2. Vad händer om jag inte vill konfigurera ett administratörslösenord i min Ubuntu, men ändå vill byta till superanvändare?

    Svar. I det här fallet kan du prova kommandot " sudo su". Här är ett exempel:

    $ sudo su lösenord för mylinuxbook: root@mylinuxbook-Inspiron-1525:/home/mylinuxbook#

    När sudo har använts för att starta su, frågar systemet dig om den nuvarande användarens lösenord snarare än superanvändarlösenordet. När detta väl hade angetts överfördes det aktuella kontot till kontot.

    Q3. Vad händer om jag vill använda su för att navigera till andra användarkonton, men inte vill komma ihåg varje användarlösenord?

    Svar. Tja, i så fall, använd bara kommandot su, ange administratörslösenordet och byt till kontot. Härifrån kan du, med su, byta till vilket användarkonto som helst utan att använda lösenord.

    Q4. Om sudo används för att göra något med root-privilegier, varför behövs då den nuvarande användarens lösenord och inte root-lösenordet?

    Svar. Tja, det är inte precis som vilken normal användare som helst kan göra sudo och köra kommandon som kräver superanvändarprivilegier. Det måste du som användare vara sudoer Samma. Det betyder att du måste ha privilegier för att använda sudo. Om du är en giltig sudoer, ber systemet bara om ett lösenord för att se till att du förstår att du utför något arbete som kräver root-privilegier, och du bör dubbelkolla allt innan du faktiskt gör det.

    Nu uppstår frågan om sudoers. Hur man blir en användare sudoer? En användare kan bli en sudoer om de läggs till i sudogruppen. Här är ett exempel:

    $ sudo adder sudo

    Ersätt bara med det faktiska användarnamnet för kontot. Observera att gruppen tidigare (före Ubuntu 12.04) måste anropas administration, men nu är detta inte nödvändigt.

    Du kan använda kommandot " grupp" för att kontrollera alla grupper som den här användaren ingår i. Här är ett exempel:

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

    Så du ser att användaren " mylinuxbook" är en del av alla dessa grupper, inklusive sudogrupperna, och därför sudoer.

    F5. Jag märkte att så fort jag använde sudo fanns mina rootbehörigheter kvar länge, även om allt efter ett tag återgick till det normala. Vad är detta?

    Svar. Ubuntu kommer ihåg lösenordet för sudo i cirka 15 minuter. Det betyder att när du väl har använt sudo för att köra ett kommando, kommer systemet inte att fråga dig om ett lösenord om du kör andra kommandon som kräver root-privilegier för att köras. Även om du måste använda " sudo" före varje lag.

    F6. Vilka är fördelarna med sudo framför su?

    Svar. Sudo har många fördelar jämfört med su.

    Här är listan:

  • Sudo säkerställer att privilegier finns för ett specifikt kommando (eller under en specifik tidsperiod) och inte för en hel session, eftersom detta kan leda till oavsiktlig missbruk av superanvändarprivilegier.
  • Du kan använda sudo för att begränsa användarrättigheter. Detta är användbart när du inte vill att användaren ska ha kontroll över alla superanvändarrättigheter när du arbetar med suda.
  • Det finns en logg (auth.log) som underhålls för varje sudoer. Den här filen innehåller information om de kommandon som kördes med sudo och den tid de exekverades. Detta hjälper administratören att spåra även betrodda användare (sudoers).
  • Den största fördelen är att suda kräver användarens eget lösenord för att logga in, snarare än root-lösenordet. Detta hjälper till att hålla root-lösenordet privat och det finns inget behov av att ändra det även när användaren (sudoer) lämnar det.
  • F7. Kan vilken användare som helst utföra sudo-operationer?

    Svar. Nej, endast betrodda användare eller sudoers kan utföra sudo-operationer. Här är den officiella sidan som beskriver hur och vad en sudoer-användare kan göra.

    F8. Jag är intresserad av su. Hur kan jag konfigurera användningen av su på ett sätt som uppnår funktionalitet som liknar suda?

    Svar. Om du kör su betyder det att du redan har ett superanvändarlösenord konfigurerat. För att uppnå funktionalitet liknande sudo, d.v.s. för att köra bara ett kommando med root-privilegier med su, allt du behöver göra är att använda alternativet -c från su-teamet.

    Här är ett exempel:

    $ su -c "apt-get install skype" Lösenord:

    Ange bara lösenordet och endast detta kommando kommer att fungera med superanvändarprivilegier. Även om detta är samma sak som sudo, är den enda skillnaden att du måste ange superanvändarlösenordet istället för det nuvarande användarlösenordet.

    F9. Jag jobbar med sudo. Hur kan jag anpassa min användning av sudo på ett sätt som uppnår liknande funktionalitet som su?

    Svar. För att uppnå su-funktionalitet via sudo, prova alternativet -jag sudo-kommandon.

    Här är ett exempel:

    $ sudo -i lösenord för mylinuxbook: root@mylinuxbook-Inspiron-1525:~#

    Du ser det med " sudo -i", byttes rotkontot även om lösenordet som angavs var för den aktuella användaren (mylinuxbook i det här fallet).

    Q10. Mitt kontos root-lösenord har ännu inte aktiverats. Kan jag använda sudo för att aktivera superanvändarlösenordet?

    Svar. För att aktivera superanvändarlösenordet kan du använda kommandot passwd på följande sätt:

    $ sudo passwd rot

    Detta kommando kräver root-privilegier, så du måste använda sudo.

    Q12. Kan jag använda sudo för att ge speciella rättigheter till användare?

    Svar. Konfigurationsfil för sudo - /etc/sudoers. Det kan inte redigeras manuellt med en editor. För detta ändamål rekommenderas att använda kommandot visudo.

    Här är det exakta kommandot:

    $sudo visudo

    och det här är vad du får:

    Detta kommando öppnar en temporär fil /etc/sudoers.tmp i nanoredigeraren för redigering. Visudo ser till att det inte uppstår någon konflikt när flera kopior av samma fil redigeras.

    För att förstå hur man beviljar begränsade rättigheter, förstå utformningen av denna konfigurationsfil, .

    Ibland, för att lösa ett problem, måste du öppna en terminal och utföra kommandon som en superanvändare (sudo eller su), även kallad ROOT. Även om vissa av dem kan göras med ett GUI.

    Du kan ta reda på varför Root behövs och används i Unix-system från, och vi kommer vidare att diskutera hur sudo eller su används i Linux-system.

    Låt oss anta att vi behöver utföra en icke-standarduppgift där grafiska verktyg inte hjälper oss. Dessutom är kommandoraden ett mycket flexibelt verktyg; här kan du se resultatet av kommandon och förstå vad som går fel. Och viktigast av allt, kommandona i terminalen är standard för alla Linux-distributioner.

    Så det finns två huvudsakliga sätt att få superanvändarrättigheter (Root) - sudo eller su

    Kommandot sudo används på Debianliknande system eller den mer populära Ubuntu, "su" används på nästan alla andra Linux-distributioner.

    För att ange sudo i Ubuntu-operativsystemet måste du ange root-lösenordet och sedan, efter framgångsrik inmatning, ges superanvändarrättigheter så länge exekveringen av bara ett kommando pågår. Före alla efterföljande kommandon som kräver Rooträttigheter på Debian-liknande system måste du ange "sudo" igen. Och i andra Linux-distributioner, där kommandot "su" används, ger det komplett Root-åtkomst, efter att ha angett ditt lösenord, tills du anger "logga ut" eller stänger terminalen.

    På Debian-liknande (Ubuntu) system finns det ett knep som kan ge full root-åtkomst tills du stänger terminalen. Detta är nödvändigt om du kommer att köra många kommandon som Root, och du behöver inte ange "sudo" före varje kommando. För att göra detta, kommando:

    Till exempel måste vi hitta alla befintliga användare i systemet, se deras kataloger och tilldela rättigheterna för den önskade katalogen från en användare till en annan. För att göra detta, om jag använde Ubuntu, skulle kommandot i terminalen vara:

    Sudo du -sch /home/*

    Detta skulle följas av root-lösenordet:

    16K /home/lost+found 27G /home/pavel 34G /home/pavelubuntu 50G /home/pavelzen 110G totalt

    Jag vet att jag är användare av katalogen /home/pavelzen, men jag måste också bli ägare till katalogen /home/pavelubuntu. För att göra detta måste jag återigen ange "sudo" före kommandot.

    Och för andra system: först skulle jag befalla

    lösenord och sedan

    Du-sch /home/*

    Chown -R pavelzen: /home/pavelubuntu

    Så här in Linux-system terminaler och superanvändare visas.

    Vilket är korrekt att använda: su eller sudo?

    Sedan urminnes tider har många blivit förvirrade av de olika säkerhetsalternativen när de utför operationer med maximala privilegier. Till exempel i tjänstemannen Ubuntu dokumentation som ett redigeringskommando rekommenderas att använda något liknande sudo nano , och i många amatörmanualer (i stil med "5 tricks in kommandorad, som kommer att överraska din mormor") för att få ett rotskal rekommenderas att skriva sudo su - . Jag ska försöka förklara varför detta tillstånd verkar fel för mig.

    OCH historiskt sett den enda på ett universellt sätt exekvera ett kommando som en annan användare i Unix fanns ett program som heter su. Startad utan parametrar, bad den om superanvändarlösenordet och, om det lyckades, ersatte det helt enkelt det nuvarande användarnamnet med root, vilket lämnade nästan alla miljövariabler från den gamla användaren (förutom PATH, USER och ett par andra, se nedan). man su från din distribution). Det vore mer korrekt att köra det som su - - i det här fallet fick skalet också rätt miljö. Med parameter-c du kan köra kommandot: su -c "vim /etc/fstab" .

    I det här fallet var betrodda användare tvungna att komma ihåg root-lösenordet, och alla användare som listades i "wheel"-gruppen (det vill säga i gruppen vars medlemmar kunde köra su-kommandot och bli en superanvändare) hade samma obegränsade åtkomst till hela systemet, vilket var ett allvarligt säkerhetsproblem.

    Sedan kom sudo-kommandot och det blev ett genombrott. Nu kunde administratören specificera en lista med tillåtna kommandon för varje användare (eller grupp av användare), filer tillgängliga för redigering, speciella miljövariabler och mycket mer (all denna prakt styrs från/etc/sudoers , se man sudoers från din distribution). När sudo startas ber användaren om sitt eget lösenord, inte root-lösenordet. Ett fullt skal kan erhållas med " sudo -i"

    Speciallag värda speciellt omnämnande sudoedit , som säkert startar redigeraren som anges i miljövariabeln$REDAKTÖR . Med ett mer traditionellt schema gjordes redigering av filer ungefär så här:

    sudo vi /etc/fstab

    Vi lanserade på detta sätt ärvde skalet med oinskränkta rättigheter och genom:! användaren kunde köra vilket kommando som helst (såvida inte administratören tog hand om detta i förväg) och öppna vilken fil som helst.

    sudoedit kontrollerar om denna användare kan ändra den här filen, kopierar sedan den angivna filen till en temporär katalog, öppnar den i en editor (som ärver användarens rättigheter, inte root), och efter redigering, om filen har ändrats, kopieras den tillbaka med särskilda försiktighetsåtgärder.

    På Debian-baserade distributioner har root-användaren inget lösenord, utan i stället måste alla administrativa åtgärder utföras via sudo eller dess grafiska analog gksudo . Att vara en komplett ersättare su, sudo bör vara det enda kommandot för att växla mellan användare, men som sades i början, i för närvarande detta är inte sant och av någon anledning hittar alla på vilda sekvenser av sudo, su, vi och streck.

    Därför föreslår jag att alla kommer ihåg en gång för alla:

    Efter första publiceringen Jag fick flera frågor under detta inlägg. Från svaren lyckades vi göra en mini-FAQ.

    F: hur man gör det med sudosu -c "echo 1 > /etc/privileged_file"? sudo echo 1 /etc/privileged_filesvär på "tillstånd nekad"

    S: Detta händer eftersom endast echo-kommandot exekveras med förhöjda rättigheter, och resultatet omdirigeras till filen med rättigheterna för en vanlig användare. För att lägga till något till privileged_file måste du köra följande kommando:

    $ echo 1| sudo tee -a privileged_file >/dev/null

    Eller tillfälligt bli en rot:

    $ sudo -i

    # echo 1 > privileged_file

    # utgång

    F: sudo -i är längre än su -, men det verkar inte vara någon skillnad mellan dem, varför skriva ut mer?

    S: sudo har flera fördelar som är värda besväret med att skriva några extra tecken:

    • som standard registrerar sudo all användaraktivitet i authpriv syslog-kanalen (som regel placeras resultatet i filen /var/log/auth.log), och i så fall måste en liknande funktion aktiveras genom att ställa in en speciell parameter i inställningsfilen, som varierar från distribution till distribution (SULOG_FILE i /etc/login.defs i Ubuntu Linux, /etc/login.conf och /etc/pam.d/su på FreeBSD, etc.)
    • i fallet su kan systemadministratören inte begränsa kommandona som körs av användare, men i sudo - han kan
    • om användaren skulle fråntas administrativa rättigheter, i fallet med su, efter att ha tagit bort honom från hjulgruppen, måste han glömma root-lösenordet; om sudo används räcker det att ta bort honom från motsvarande grupp (till exempel, wheel eller admin) och/eller sudoers-filen, om den var ytterligare anpassad.

    F: Jag är den enda användaren på mitt system och jag är van vid su, varför behöver jag sudo?

    S: Jag ska svara på frågan med en fråga: om det finns korrekt sudo, varför använda den föråldrade su?

    
    Topp