Vad är skillnaden mellan sudo och su?

För några dagar sedan fick jag en fråga från Miguel, en vanlig bloggläsare och tvångsmässig kommentator, angående vad exakt är skillnaden mellan sudo y su. I synnerhet var Miguel bekymrad över huruvida en metod var säkrare än den andra. Det händer att jag hade läst det där sudo var inte tillräckligt säker och ville veta mer. Detta är ett annat inlägg tillägnad dem som bad om fler artiklar om terminal mysterier.

Su

Programmet su låter dig använda en annan användares skal utan att logga ut från den aktuella sessionen. Det används vanligtvis för att få rootbehörigheter för administrativa operationer utan att behöva logga ut och komma in i systemet igen. Vissa skrivbordsmiljöer, inklusive GNOME och KDE, har program som grafiskt ber om ett lösenord innan användaren kan utföra ett kommando som vanligtvis kräver sådan åtkomst.

Namnet su kommer från engelska substitut uvara (ersättare). Det finns också de som får det att härleda från superuser (superanvändare, det vill säga rot- eller administratörsanvändaren) eftersom det vanligtvis används för att anta rollen som systemadministratör.

När du springer, su Den frågar efter lösenordet för kontot du vill komma åt, och om det accepteras ger det åtkomst till det kontot.

[guy @ localhost] $ ditt lösenord: [root @ localhost] # exit logout [guy @ localhost] $

Genom att inte sätta en användare nås den som administratör. Det är dock också möjligt att skicka ett annat användarnamn som en parameter.

[kille @ localhost] $ su mongo Lösenord: [mongo @ localhost] # avsluta utloggning [kille @ localhost] $

När lösenordet har angetts kan vi utföra kommandona som om vi vore den andra användaren. I skrift avsluta, vi återvänder till vår användare.

En mycket använd variant är att använda su följt av ett streck. För att logga in som root måste du ange su - och att logga in som en annan användare din - andra användare. Skillnaden mellan att använda skriptet eller inte? Det rekommenderas att använda skriptet eftersom det simulerar att du loggar in med den användaren. därför kör den alla startfiler för den användaren, ändrar den aktuella katalogen till den användarens HOME, ändrar värdet på vissa systemvariabler som anpassar dem till den nya användaren (HEM, SHELL, TERM, USER, LOGNAME, bland andra) och andra fler saker.

En sysadmin måste vara mycket försiktig när du väljer ett lösenord för root / administratörskontot, för att undvika en attack av en ogriven användare som kör su. Vissa Unix-liknande system har en användargrupp som heter hjul, som består av de enda som kan köra su. Detta kan eventuellt minska säkerhetsproblemen, eftersom en inkräktare helt enkelt kan ta över en av dessa konton. han su GNU stöder dock inte användningen av den gruppen; detta gjordes av filosofiska skäl.

sudo

Ett relaterat kommando, kallat sudo, kör ett kommando som en annan användare, men respekterar en serie begränsningar för vilka användare kan utföra vilka kommandon för vilka andra användare (vanligtvis anges i filen / etc / sudoers).

Å andra sidan, till skillnad från su, sudo uppmanar användare om sitt eget lösenord istället för den användare som krävs; Detta gör det möjligt att delegera kommandon till användare på andra maskiner utan att behöva dela lösenord, vilket minskar risken för att lämna terminaler utan uppsikt.

Sudo-problem: respitperioden

Fördelen med sudo med tanke på su är att den bara kör det begärda kommandot som låtsas vara den andra användaren utan att faktiskt ändra den aktuella användaren. Detta innebär att man kan utföra ett kommando som administratör och nästa sekund kommer de att ha behörigheten för användaren de använde tidigare ... eller nästan.

Vissa ser som ett säkerhetsbrott det faktum att sudo bevilja en "respitperiod" som tillåter användaren att köra kommandon som en annan användare utan att behöva ange sudo upprepade gånger framför kommandot och lösenordet efter att ha kört det. Efter den "nådeperioden", sudo kommer att fråga oss lösenordet igen.

Detta är "dåligt", i huvudsak för att någon skulle kunna ta över vår dator efter att ha angett sudo-lösenordet och medan "respitperioden" är aktiv, gör en KATALOG.

Lyckligtvis är det möjligt att inaktivera "respitperioden", vilket kommer att förbättra ditt systems säkerhet. Lägg bara till en rad i filen / etc / sudoers:

sudo nano / etc / sudoers

Och lägg till följande rad i slutet av filen:

Standardvärden: ALL timestamp_timeout = 0

Ändringen träder i kraft omedelbart utan att systemet behöver startas om.


Innehållet i artikeln följer våra principer om redaktionell etik. Klicka på för att rapportera ett fel här.

25 kommentarer, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras.

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   helq sade

    I själva verket, om du kan gå in med administratörsrättigheter med sudo och stanna där som du gör med su -, för detta måste du skriva: sudo -s och därmed ändra den nuvarande användaren och lämna nådstid som ett skämt (sedan Du kan stanna så länge du vill, som med din)

  2.   Miquel Mayol i Tur sade

    Tack för omnämnandet, men den verkliga krediten går till Sabayon-chatten - som jag inte längre använder för att min hårddisk bröt och jag föredrog att gå tillbaka till Ubuntu -.

    Anledningen till att de gav mig var att de ibland inte får absoluta behörigheter när de gör sudo vissa konfigurationer och de förblir felaktigt konfigurerade. Och att genom att "logga in" med su som root för uppdaterings- och underhållsuppgifter förhindrar du att detta händer.

    Då skickade jag e-post till dig för att jag lovade att dela med mig av denna upptäckt som inte verkade trivial för mig.

    Eftersom Ubuntu är installerat som standard utan root-användare, kör bara

    "Sudo passwd root"

    ange lösenordet, bekräfta det och därefter
    "Su root"
    för underhållsoperationer, förutom att undvika att lägga sudo i varje beställning.

    I princip tas root-kontot bort i Ubuntu så att du inte alltid loggar in med det här kontot, men eftersom jag fick råd nästan i tonen att använda sudo var sakrilege, bara om jag har följt det.

  3.   Nill pekare sade

    Du kan komma åt / etc / shadow-filen och ändra hash för root-lösenordet till hash för det vanliga användarlösenordet och sedan göra en lösenordsändring för root ??? Vid en annan tidpunkt försöker jag samma ....

  4.   Låt oss använda Linux sade

    Klar. Det är inte exklusivt för Fedora.

  5.   mfcollf77 sade

    Sedan av de två kan de installeras? Jag trodde att «SU» bara fanns i FEDORA.

  6.   Diego Kisai Alba Gallart sade

    Mycket bra information, med detta kommer säkerligen många tvivel att försvinna, för jag känner flera som har den tviveln.

  7.   Alex sade

    I ubunto tror jag att jag kommer ihåg att du inte kan använda kommandot su (för att ange som root-användare)

  8.   Hazan Perez sade

    För att "återställa" rotlösenordet (i själva verket något annat lösenord) kan du göra en "attack" på systemlösenordsfilen med John The Ripper. Jag kommer inte att säga mer om detta.

    Kanske finns det andra metoder ... Kanske ändra lösenordet genom att skriva in med "sudo su" och sedan kommandot "passwd". Det vore intressant att se vad andra svarar ...

  9.   Låt oss använda Linux sade

    Exakt!

  10.   Låt oss använda Linux sade

    Det stämmer ... Jag måste tacka Miguel Mayol i Tur ... han var den med idén. 🙂
    Skål! Paul.

  11.   Boss sade

    Tack, som alltid ett bra bidrag. Vi uppskattar det.

  12.   Låt oss använda Linux sade

    Tack chefen! En kram! Paul.

  13.   Jerome Navarro sade

    Skillnaden mellan 'su' och 'sudo' är 'gör'

  14.   Erick sade

    Jag har glömt root-lösenordet, lyckligtvis kan jag använda sudo, och för att använda su använder jag 'sudo su' och det ber inte om pass (?)
    Vet någon hur man hittar rotlösenordet (jag har tillgång till root via sudo)?

    1.    marvergarab sade

      sudo passwd

  15.   Låt oss använda Linux sade

    ha! Väldigt smart!

  16.   Fabians land sade

    den som vill återställa root-lösenordet skulle vara "sudo passwd root" och där kommer det att be dig att ange ett nytt

  17.   alex-pilloku@hmail.com sade

    hej hur är ditt liv

  18.   SynFlagga sade

    Tyvärr, men med kommandot su, så här:

    su -c "kommando", är detsamma som att använda sudo utan respitperioden. Jag ser inte behovet av sudo.

    Den VERKLIGA användningen av sudo är att ge vissa användare möjligheten att använda detta eller det här kommandot, det används mer i företag, för att inte behöva tappa, något som inte kan göras med su.

  19.   yacardis sade

    Kära, jag måste göra en Linux TP, och jag måste svara på några enkla frågor. Kanske kan de hjälpa mig. Tack sedan nu:

    Vilket kommando är det som gör att vi kan installera / ta bort / ändra debianpaket?
    Vad är kommandot som gör att vi lättare kan hantera installationen
    paket i debian?
    Vad är kommandot för att kunna installera rpm-paketen?
    Vilket alternativ använder vi för att avinstallera ett paket?
    Vilken är katalogen där yum-förvaren finns?
    Vad är yum för?
    Vilket alternativ använder vi för att söka efter ett paket med yum?
    Vilket alternativ använder vi för att ta bort ett paket?
    Vilket alternativ kan vi använda för att uppdatera systemet?
    Vilka bokstäver identifierar tillstånden?
    Vad betyder var och en av dem?
    Vilka kommandon visar behörigheterna för en fil?
    Vilka är de tre grupperna där behörigheterna är uppdelade?
    Vilka två sätt finns det att implementera behörigheter?
    Vilket nummersystem använder tillstånden?
    Vilken vikt har dessa bokstäver?
    Vad är speciella tillstånd?
    Vilka är de befintliga specialbehörigheterna och vad är användarna för?
    Vilka kommandon använder jag för att ändra behörigheterna?
    Vilka parametrar använder jag för att utföra behörigheter till en fil?
    Vilka parametrar används för att endast ge läsbehörigheter till en grupp?
    Vilka parametrar används för att ge läs- / skrivbehörigheter till gruppen andra och ta bort skrivning från användaren som äger filen?
    Vilka behörigheter skapas som standard för filer och kataloger?
    Vilket kommando använder vi för att verifiera det?
    Hur ändrar vi standardmasken?
    Hur gör vi masken som används annorlunda? (Använd en standardmask som bara lämnar ägare med alla behörigheter.)
    Vilket kommando listar processerna? Nämn olika parametrar och deras användning.
    Vad är processen som startar allt?
    Lista de processer som motsvarar den inloggade användaren.
    Lista alla processer i systemet.
    Vilka alternativ använder jag för att få extra information?
    Lista alla processer som används i en terminal
    Vilket alternativ listar processerna och deras beroenden?
    Förklara vad en förälder-barn-process är och hur man identifierar den
    Vilket kommando listar processerna i form av träd?
    Vilket kommando övervakar processerna i realtid?
    Övervaka bara en process
    Vilket kommando visar minnesanvändning?
    Vilken parameter visar minnet i megabyte?
    Vilken parameter gör den i intervaller?
    Vilket kommando visar information om tiden ett team är uppe?
    Vilket kommando använder jag för att döda processer?
    Vad hanterar dessa processer för att kunna slutföras?
    Vilka typer av signaler är de vanligaste?
    Lista de typer av signaler som stöds.
    I en terminal, gör vi-testet och gå sedan till en annan terminal, leta efter processen och döda den med en signal 15. Ditto men med en 9-signal.
    Vad är skillnaden mellan signal 9 och 15?
    Vilken fungerar som standard?
    Varför körs en process i bakgrunden? Och i förgrunden?
    Kör vi-test och tryck sedan på ctrl + z, vad hände?
    Upprepa vi test, ctr + z, 4 gånger, hur avslutar jag det jag misslyckades?
    Skicka en av processerna till förgrund och stängning vi.
    Vilken parameter för ett kommando utför vi så att det inte upptar skalet?
    Vilket kommando ändrar prioriteringarna för en process som redan körs? Hur skulle du ändra prioriteten för den terminal som körs?
    Vilka nivåvärden finns och vad är deras hierarki?
    Öppna filen / etc / passwd och se vilken prioritetsnivå den har.
    Ändra prioritetsnivån till 4 och sedan till 25 Kan du tilldela båda? Varför?
    Lista processerna med deras prioriterade värden.
    Vilket kommando övervakar alla pågående processer?

  20.   ecc sade

    Hej, jag vill inaktivera sudo, som jag gör. Jag får detta:
    [sudo] lösenord för xxx:
    xxx finns inte i sudoers-filen. Denna incident kommer att rapporteras.

    eftersom jag inaktiverar det, eftersom jag använder su i debian

    1.    låt oss använda Linux sade

      Hej ecc!

      Jag tror att det skulle vara bättre om du tar upp denna fråga i vår fråga- och svarstjänst Fråga FromLinux så att hela samhället kan hjälpa dig med ditt problem.

      En kram, Pablo.

  21.   Berthold sade

    Hej. Jag har använt kommandot för hårddiskens temperatur i Linux Mint: 'sudo hddtemp / dev / sda', det ber om lösenordet och det ger mig det förväntade resultatet.
    men när jag kör i samma terminal 'hddtemp / dev / sda' berättar det mig att Permission Denied.
    Så, respitperioden fungerar inte på mig, varför är det?

  22.   Berthold sade

    Hej blogg.
    Jag fann också att när distro är installerad (ex: ubuntu, linux mint), ber den om ett administratörslösenord.
    Och i kontrollcentrets grafiska gränssnitt använde jag alternativet för att ändra min användares lösenord.
    Så nu använder du "su -" det frågar efter ett lösenord, som inte är det för min nuvarande användare, utan det jag använde när jag installerade distro, det är fortfarande rot- eller administratörsanvändaren.
    Detta skulle resultera i att många användare glömmer det verkliga administratörslösenordet.

  23.   Kendall Davila sade

    Hej, din förklaring är utmärkt, mycket tydlig, kort och koncis. Tack för inmatningen