Milyen különbségek vannak a "su", "sudo -s", "sudo -i", "sudo su"?

133

Már olvastam a kézikönyvből, de nem látok különbséget.

su - a felhasználó azonosítójának megváltoztatása vagy felettesfelhasználóvá válása

sudo -s [command]

A-s (shell) opció a SHELL környezeti változó által megadott héjot futtatja, ha be van állítva, vagy a shell (passwd) (5) által megadott shell. Ha egy                    parancsot ad meg, akkor a parancsértelmezőnek a végrehajtásra kerül. Ellenkező esetben egy interaktív shell fut.

sudo -i a leírás leírása manuálisan

    
készlet Smile.Hunter 22.10.2011 08:11
forrás

5 válasz

109

A fő különbség a parancsok között olyan, ahogyan korlátozzák funkcióik elérését.

su (azaz "helyettesítő felhasználó" vagy "kapcsoló felhasználó") - pontosan ezt teszi, akkor egy másik shell példányt indít a jogosult felhasználó jogosultságaival. Annak biztosítása érdekében, hogy Önnek joga van ahhoz, hogy megkapja a a célfelhasználó jelszavát. Ezért gyökérnek kell lennie, tudnia kell a root jelszót. Ha a gépén több felhasználó van, akiknek parancsokat kell futtatni rootként, mindenkinek tudnia kell a root jelszót - vegye figyelembe, hogy ugyanaz lesz a jelszó. Ha meg kell szüntetnie az adminisztrátori jogosultságokat az egyik felhasználó részéről, módosítania kell a root jelszavát, és csak azokat az embereket kell megmondania, akiknek meg kell tartaniuk a hozzáférést - rendetlen.

sudo (hmm ... mi a mnemonikus? Super-User-DO?) teljesen más. Konfigurációs fájlt (/ etc / sudoers) használ, amely felsorolja, hogy mely felhasználóknak vannak jogaik bizonyos műveletekhez (parancsok futtatása gyökérként stb.) A híváskor a felhasználó indításának jelszavát kérte - annak biztosítása, hogy a terminálon lévő személy valóban ugyanaz a "joe", aki szerepel a (z)/etc/sudoers -ban. Az adminisztrációs jogosultságok visszavonása egy személytől csak a konfigurációs fájlt kell módosítania (vagy távolítsa el a felhasználót az adott konfigurációban felsorolt ​​csoportból). Ez a kiváltságok sokkal tisztább kezelését eredményezi.

Ennek eredményeképpen sok Debian-alapú rendszerbenroot felhasználó nem rendelkezik jelszóval - tehát nem lehet közvetlenül rootként bejelentkezni.

A/etc/sudoers lehetővé teszi további opciók megadását is - azaz a X felhasználó csak Y programot futtathat.

A gyakran használtsudo su kombináció a következőképpen működik: az elsősudo az jelszavadat kér, és ha erre engedélyt kapott, a következő parancsot hívja (% co_kde %) mint szuperfelhasználó. Mivel asusu meghívja, nem kell megadnia a célfelhasználó jelszavát. Tehát aroot lehetővé teszi, hogy egy másik felhasználó (beleértve a rootet is) megnyithasson egy shellet, ha asudo su fájl engedélyezi a szuperfelhasználói hozzáférést.

    
válasz adott Sergey 22.10.2011 09:21
forrás
48

sudo lehetővé teszi, hogy parancsokat futtasson a saját felhasználói fiókjába root jogosultságokkal. Asu lehetővé teszi a felhasználók átkapcsolását, így ténylegesen bejelentkezve rootként.

sudo -s futtat egy shell-et root jogosultsággal. Asudo -i megszerzi a root felhasználó környezetét is.

Ha látni szeretné a különbséget asu és asudo -s között, acd ~, majd apwd után mindegyiküket. Az első esetben a gyökér főkönyvtárában lesz, mert root vagy. A második esetben a saját főkönyvtárában lesz, mert Önöknek root jogosultságai vannak.

A kérdés pontosabb kérdése itt .

    
válasz adott Mike Scott 22.10.2011 08:28
forrás
27

Ez a válasz a válaszom szétszóródott a egy kérdést a kérdésről , tedd fel a kanonikus választ, hogy az emberek megtalálhassák!

A legfontosabb különbség asudo -i és asudo -s között:

  • sudo -i megadja a gyökér környezetet, azaz a~/.bashrc figyelmen kívül hagyja.
  • Asudo -s megadja a felhasználó környezetét, ezért tiszteletben tartja~/.bashrc értékét.

Íme egy példa, láthatod, hogy alsl könyvtárban van~/.bin/, amely elérhető asudo -s -on keresztül, de nem elérhető asudo -i -al. Vegye figyelembe azt is, hogy a Bash parancs asudo -i -kal változik, de nem asudo -s -al:

dotancohen@melancholy:~$ ls .bin
lsl

dotancohen@melancholy:~$ which lsl
/home/dotancohen/.bin/lsl

dotancohen@melancholy:~$ sudo -i

root@melancholy:~# which lsl

root@melancholy:~# exit
logout

dotancohen@melancholy:~$ sudo -s
Sourced .bashrc

dotancohen@melancholy:~$ which lsl
/home/dotancohen/.bin/lsl

dotancohen@melancholy:~$ exit
exit

Bár asudo -s kényelmesen megadja a környezettudatos ismeretet, Ajánlom asudo -i használatát két okból:

  1. A vizuális emlékeztető, hogy "gyökér" munkamenetben tartózkodik.
  2. A gyökérkörnyezet sokkal kevésbé valószínű, hogy rosszindulatú programokkal mérgeződött meg, például a.bashrc -ban egy gazember vonalat.
válasz adott dotancohen 08.11.2014 15:07
forrás
6

su kéri a felhasználó "root" jelszavát.

sudo kéri a saját jelszavát (és ellenőrzi, hogy a parancsok rootként működnek-e, amely a/etc/sudoers -on keresztül van konfigurálva - alapértelmezés szerint minden, az "admin" csoporthoz tartozó felhasználói fiók engedélyezett a sudo használatához.

Asudo -s shellt rootként indít, de nem változtatja meg a munkakönyvtárat. Asudo -i szimulálja a bejelentkezést a gyökérkönyvtárba: a munkakönyvtár/root lesz, és a root.profile stb. a bejelentkezéskor származik.

    
válasz adott Marius Gedminas 22.10.2011 21:38
forrás
2

Az Ubuntuban vagy egy kapcsolódó rendszerben nem találok sok hasznot asu számára a hagyományos, szuperfelhasználós értelemben. sudo sokkal jobban kezeli az ügyet. A (z)su azonban nagyszerű abban az esetben, ha egy másik felhasználó egyszeri helyzetben van, ahol a sudoerek beállítása ostobaság lenne.

Például, ha rendszeremből frissítem a rendszert egy élő CD-ről / USB-ről, gyakran csatlakoztatom a merevlemezt és más szükséges anyagokat, és achroot -ot a rendszerbe. Ilyen esetben az első parancsom általában:

su - myuser  # Note the '-'. It means to act as if that user had just logged in.

Így nem gyökérként dolgozom, hanem normál felhasználóval, és asudo -ot megfelelő módon használom.

    
válasz adott Scott Severance 26.10.2011 09:23
forrás