'sudo su -' vs 'sudo -i' vs 'sudo / bin / bash' - mikor számít, mit használsz, vagy egyáltalán számít?

200

Ha tennem valamit, amihez root szükséges több tucatszor egymás után beírni, jobban szeretném átállítani a munkamenetemet egy gyökér munkamenetre. Az interneten használt különböző útmutatókat és utasításokat asudo su, asudo su -, asudo -i és asudo /bin/bash -ot használtam egy gyökér munkamenet megnyitásához, de nem világos a különbség ezekről és mikor vagy ha ez a különbség.

Lehet valaki kitisztítani ezt nekem?

    
készlet Paul 13.11.2013 00:30
forrás

1 válasz

262

Ennek magyarázatához tudnia kell, hogy a programok hogyan:

su - A (z)su parancsot egy másik felhasználóra váltja ( s boszorkány u ser), de a root felhasználóra meghívja a parancsot paraméter nélkül. su kéri a felhasználó jelszavának átváltását, miután beírta a jelszót a felhasználó környezetébe.

sudo -sudo egy parancsot futtat root jogosultságokkal. De asu -tól eltérően az aktuális felhasználó jelszavát kéri. Ennek a felhasználónak a sudoers fájlban kell lennie (vagy a sudoers fájlban lévő csoportnak). Alapértelmezés szerint az Ubuntu 15 percig "emlékszik" a jelszóra, így nem kell minden alkalommal felvennie a jelszavát.

bash - Szöveges felület a számítógéphez való kapcsolódáshoz. Fontos megérteni a különbséget a bejelentkezés, a bejelentkezés nélküli, az interaktív és a nem interaktív héjak között:

  • login héj: A bejelentkezési héj bejelentkezik a rendszerbe meghatározott felhasználóként, ehhez szükséges egy felhasználónév és jelszó. Amikor egy virtuális terminálra bejelentkezik a ctrl + alt + F1
  • bejelentkezés nélküli shell: A bejelentkezéshez szükséges shell, amelyre szükség van, jelenleg egy bejelentkezett felhasználó. Ha grafikus terminált nyit meg a gnómban, ez egy nem bejelentkezési shell.
  • interaktív shell: Héj (bejelentkezés vagy nem bejelentkezés), ahol interaktíven írhatja vagy megszakíthatja a parancsokat. Például egy gnome terminál.
  • nem interaktív shell: Az (al) shell, amely valószínűleg egy automatizált folyamatból indul ki. Nem fog megjelenni sem bemenet, sem kimenet.

sudo su sudo -kal hívja asu parancsot. A Bash-ot interaktív, nem bejelentkezési shellnek nevezik. Tehát a bash csak a.bashrc parancsot hajtja végre. Láthatja, hogy a gyökérváltás után még mindig ugyanabban a könyvtárban van:

user@host:~$ sudo su
root@host:/home/user#

sudo su - Ezúttal egy bejelentkezési héj, így a/etc/profile, a.profile és a.bashrc végrehajtásra kerül, és gyökér környezetben megtalálja magát a root gyökérkönyvtárában.

sudo -i Szinte ugyanaz, mint asudo su - A -i (szimulálja a kezdeti bejelentkezési) opciót a célkalauz jelszó-adatbázis-bejegyzésében megadott héjként jelentkezzen be. Ez azt jelenti, hogy a bejelentkezési specifikus erőforrásfájlokat, például a.profile, a.bashrc vagy a.login -ot a shell fogja olvasni és végrehajtani.

sudo /bin/bash Ez azt jelenti, hogy asudo parancsot/bin/bash paranccsal hívja. A (z)/bin/bash nem bejelentkezési lekérdezéssel kezdődik, így az összes pontfájl nem kerül végrehajtásra, de a bash maga elolvassa a hívó felhasználó.bashrc -át. Az Ön környezete ugyanaz marad. Otthona nem lesz gyökér otthona. Így te vagy root, de a hívó felhasználó környezetében.

sudo -s elolvassa a$SHELL változót, és végrehajtja a tartalmat. Ha a$SHELL/bin/bash -ot tartalmaz, akkorsudo /bin/bash (lásd fent).

Ellenőrizze: Annak ellenőrzése, hogy bejelentkezési shell-e vagy sem (csak a bash-ben működik, mertshopt beépített parancs):

shopt -q login_shell && echo 'Login shell' || echo 'No login shell'
    
válasz adott chaos 13.11.2013 10:43
forrás