Ablakok.  Vírusok.  Jegyzetfüzetek.  Internet.  hivatal.  Segédprogramok.  Drivers

Ősidők óta sokakat megzavartak a különféle biztonsági lehetőségek, amikor maximális jogosultságokkal hajtanak végre műveleteket. Például a hivatalosban Ubuntu dokumentáció Javasoljuk a sudo nano-hoz hasonló szerkesztési parancsot használni, és számos amatőr kézikönyvben (a "5 trükk a parancssorban, amivel meglepi a nagymamát" stílusban) javasolják a sudo su írását - hogy megkapja a root "új shell. Megpróbálom elmagyarázni, miért tűnik számomra ez az állapot helytelennek.

Történelmileg az egyetlen univerzális módon futtasson egy parancsot, mivel a Unix másik felhasználója volt a su program. Paraméterek nélkül futtatva a root jelszót kérte, és ha sikerült, egyszerűen megváltoztatta az aktuális felhasználónevet root-ra, így szinte minden megmarad Környezeti változók a régi felhasználótól (kivéve PATH, USER és még néhány, lásd a man su-t a disztribúciódból). Helyesebb volt su - -ként futtatni, ebben az esetben a shell is megkapja a megfelelő környezetet. A -c kapcsolóval a következő parancsot lehetett végrehajtani: su -c "vim /etc/fstab" .

Ugyanakkor a megbízható felhasználóknak emlékezniük kellett a root jelszóra, és a kerékcsoportban felsorolt ​​összes felhasználó (vagyis abban a csoportban, amelynek tagjai végrehajthatják a su parancsot és szuperfelhasználóvá válhatnak) ugyanolyan korlátlan hozzáféréssel rendelkeztek a teljes rendszerhez. , ami komoly biztonsági problémát jelentett.

Aztán jött a sudo parancs, és ez volt az áttörés. Mostantól az adminisztrátor megadhat egy listát az engedélyezett parancsokról minden felhasználóhoz (vagy felhasználócsoporthoz), szerkeszthető fájlokat, speciális környezeti változókat és még sok minden mást (ezt a pompát az /etc/sudoers vezérli, lásd a man sudoers a disztribúciójában) . Amikor a sudo fut, a saját jelszavát kéri a felhasználótól, nem a root jelszót. A teljes shell a "sudo -i" paranccsal érhető el

Külön említésre méltó a speciális sudoedit parancs, amely biztonságosan elindítja a $EDITOR környezeti változóban megadott szerkesztőt. Egy hagyományosabb sémával a fájlok szerkesztése a következőképpen történt:
sudo vi /etc/fstab

Az így elindított Vi egy héjat örökölt korlátlan jogokkal és ezen keresztül:! a felhasználó bármilyen parancsot futtathat (kivéve persze, ha az adminisztrátor előre gondoskodott róla), és megnyithat bármilyen fájlt.

A Sudoedit ellenőrzi, hogy ez a felhasználó szerkesztheti-e adott fájl, majd átmásolja a megadott fájlt egy ideiglenes könyvtárba, megnyitja egy szerkesztőben (ami a felhasználói jogokat örökli, nem a root "a"-t), majd szerkesztés után, ha a fájl megváltozott, speciális óvintézkedésekkel visszamásolja.

Debian-alapú disztribúciókon a root felhasználónak nincs jelszava, ehelyett minden adminisztrációs műveletet a sudo-n vagy annak grafikus megfelelőjén, a gksudo-n keresztül kell végrehajtani. A sudo teljes helyettesítőjeként a sudo legyen az egyetlen parancs a felhasználók közötti váltáshoz, azonban, mint az elején említettük, ez jelenleg nem így van, és valamilyen okból mindenki kitalálja a sudo, su, vi és kötőjelek vad sorozatait. .

Ezért mindenkinek azt javaslom, egyszer s mindenkorra ne feledje:

E jegyzet első közzététele után számos kérdést tettem fel nekem. A válaszokból kiderült, hogy mini-GYIK-t kell készíteni.

K: hogyan lehet a su -c "echo 1 > /etc/privileged_file" parancsot sudo-val csinálni? A sudo echo 1 /etc/privileged_file "engedély megtagadva" esküszik
V: Ennek az az oka, hogy csak az echo parancsot hajtják végre emelt jogokkal, és az eredményt a rendszer átirányítja egy már normál felhasználói jogosultságokkal rendelkező fájlba. Ha hozzá szeretne adni valamit a privileged_file fájlhoz, futtassa a következő parancsot:
$echo 1| sudo tee -a privileged_file >/dev/null
Vagy ideiglenesen root lesz:
$ sudo -i # echo 1 > privileged_file # kilépés $
K: A sudo -i hosszabb, mint a su -, és úgy tűnik, nincs köztük különbség, miért nyomtatna többet?
V: A sudo-nak számos előnye van, amelyek megérik a fáradságot néhány extra karakter beírásával:

  • alapértelmezés szerint a sudo az összes felhasználói tevékenységet az authpriv syslog csatornába írja (az eredmény általában a /var/log/auth.log fájlba kerül), és egy hasonló szolgáltatást kell tartalmaznia a su-ban egy speciális paraméter beállításával a beállítási fájl, amely terjesztésenként különbözik (SULOG_FILE az /etc/login.defs fájlban ubuntu linux, /etc/login.conf és /etc/pam.d/su FreeBSD-n stb.)
  • su esetén a rendszergazda nem korlátozhatja a felhasználók által végrehajtható parancsokat, de sudo esetén igen
  • ha a felhasználót meg kell fosztani az adminisztrátori jogoktól, su esetén a kerékcsoportból való eltávolítása után el kell felejtenie a root jelszót; ha sudo-t használunk, akkor elég eltávolítani a megfelelő csoportból (pl. kerék vagy admin) és/vagy sudoers fájl ha kiegészítőleg konfigurálva lett.
K: Én vagyok az egyetlen felhasználó a rendszeremen, és hozzászoktam a su-hoz, miért van szükségem a sudo-ra?
V: A kérdésre egy kérdéssel válaszolok: ha van megfelelő sudo, akkor miért használjuk az elavult sudot?

Paradox módon a sudo parancs nem zárja ki a rendszergazdai munkamenet futtatását egy normál felhasználói munkameneten belül. Mert ugyanaz a su parancs futtatására használható:

$ sudo su

És ez még az Ubuntuban is megvan, ahol nincs root fiók; pontosabban alapértelmezés szerint nincs jelszó. De a sudo használata szükségtelenné teszi még a su parancshoz sem. De nem tilos beállítani a szuperfelhasználói jelszót - végül is ehhez elég a parancsot megadni

$ sudo passwd

hogy a su-t a szokásos módon használjuk. Sőt, ha szükséges, jelentkezzen be rootként, amikor regisztrál a rendszerbe.

A sudo parancs azonban itt is „ideológiailag helyes” módszert ad, és nem is egyet. Ezek az -s és -i opciók, amelyek, bár kissé eltérő módon, korlátlanul meghosszabbítják a sudo parancs működését, amíg a „másodlagos munkamenet” az exit paranccsal véget nem ér.

A -s kapcsoló egy másodlagos root munkamenet megnyitásakor megőrzi az eredeti felhasználó összes környezeti változóját. Ha azonban hozzáadjuk a -H kapcsolót, akkor ezek a változók újra beolvasásra kerülnek az adminisztrátor kezdőkönyvtárának, vagyis a /root profilfájljaiból, mint egy interaktív shell-példány indításakor. A parancs megadásakor aktuális könyvtár azonban nem változik, és a prompt megjelenése sem. parancs sor.

Az -i opció teljesen reprodukálja a gyökérkörnyezetet azáltal, hogy a shell-jét bejelentkezési shellként futtatja. Természetesen ez az aktuális könyvtárat is /root-ra változtatja, és a parancssori prompt az adminisztrációs shell profilfájljában (bash-ban - PS1) a megfelelő változóban leírt formában jelenik meg.

A gyakorlatban nincs sok különbség az állandó adminisztrátori jogok megszerzésének két formája között, különösen a bash-ban. De a zsh-ben a profilfájlok megfelelő beállításaival, ha szükséges, ezekben az esetekben jelentősen eltérő környezeteket érhet el. Igaz, hogy a felhasználónak mennyi kell, az nagy kérdés. De az a tény, hogy a -H opciók használatakor az állandó adminisztrációs mód kívülről semmilyen módon nem jelenik meg, tele van hibákkal. Ez a legtöbb esetben előnyösebbé teszi az -i opciót.

A sudo képességei egyébként nem korlátozódnak a parancsok adminisztrátorként való futtatására: az -u username opció beállításával azok annak a felhasználónak a nevében is végrehajthatók, akinek a bejelentkezési neve van beállítva értékként. Ez hasznos lehet egy másik felhasználó pontfájljainak és pontkönyvtárainak megtekintésekor vagy másolásakor, amelyeket gyakran csak a tulajdonos olvashat és szerkeszthet.

A sudo parancs egyébként úgy is futtatható, hogy annak a felhasználónak a jelszavát kéri, akinek a nevében a parancs végrehajtásra kerül (például rendszergazda), nem pedig annak a felhasználónak, aki a jogosultságát igényli. Erre van egy -targetpw opció. És ahhoz, hogy a root jelszó követelménye állandó legyen, elegendő például egy aliast megadni, mint pl.

Alias ​​sudo -targetpw

A root jelszó megkövetelése a sudo futtatásakor az alapértelmezett viselkedés egyes disztribúciókban, például a Suse-nak mondják.

A sudo parancsnak sokkal több lehetősége van - fent csak azokat adtam meg, amelyeket használnom kellett. A többi könnyen látható a man sudo-ban. A fel nem soroltak közül megemlítem a -b kapcsolót is, amely arra utasítja, hogy a háttérben futtassuk a „jogosult” parancsot. Hasznos lehet hosszú távú feladatok elvégzésekor, például USB-képek flash meghajtóra másolásakor a dd paranccsal.

Ahogy az imént láttuk, a sudo parancs szinte korlátlan jogkört ad a felhasználónak bármilyen rendszerszintű művelethez, valamint mások felhasználói adatainak manipulálásához. Ezt szem előtt tartva tegyük fel magunknak a következő kérdéseket:

  • hogy bármelyik felhasználó szerezhet-e rendszergazdai jogokat a sudo paranccsal, és
  • Minden adminisztratív tevékenységet el tud végezni rajta?

Ha az Ubuntu családról beszélünk, amelyben ezt a mechanizmust először „dobozból”, majd „dobozból” használták, az első kérdésre a válasz negatív, a másodikra ​​pozitív lesz. Általában a sudo program beállításaitól függ, amelyek az /etc/sudoers fájlban vannak leírva. És ebben olyan szabályokat állíthat be, amelyek csak bizonyos felhasználók számára engedélyezik bizonyos parancsok végrehajtását. Összefoglalva így néz ki:

felhasználónév host=parancs

Itt, ahogy sejtheti, a felhasználónév annak a felhasználónak a neve, akinek ez a szabály be van állítva, a host annak a gépnek a neve, amelyről ezt a szabályt használhatja, a parancs pedig az a konkrét parancs, amelynek használata engedélyezett adott felhasználó ettől a géptől. A parancsot a teljes abszolút elérési úttal kell megadni (azaz /sbin/fdisk , nem fdisk). A parancsleíró mező több értéket is tartalmazhat vesszővel elválasztva, például:

Felhasználónév ALL = /sbin/fdisk,/bin/mount

Az Ubuntu alapértelmezett szabályai az adminisztrátori jogosultságokhoz való felhasználói hozzáférésre vonatkozóan a következők:

# Felhasználói jogosultság specifikáció root ALL=(ALL) ALL # Az admin csoport tagjai root jogosultságokat kaphatnak %admin ALL=(ALL) ALL

Vagyis a root felhasználó, ahogy kell, bármilyen parancsot végrehajthat bármely gazdagépről. De csak az adminisztrációs csoporthoz tartozó felhasználók (a kerékcsoport analógja, amelyet említettünk) kaphatnak jogokat. Egy tipikus telepítés során létrehozott felhasználó automatikusan ennek a csoportnak a tagjává válik, így minden adminisztrátori jog minden további beállítás nélkül rendelkezésére áll. Más felhasználók azonban, akiknek fiókja később jön létre, megfosztják ezt a jogosultságot. Kivéve persze, ha kifejezetten az admin csoportba kerültek.

Más disztribúciókban, amelyek nem használják a sudo out of the box-ot, szerkeszteni kell a konfigurációs fájlját – ugyanazt az /etc/sudoers fájlt, amelyet fent említettünk.

Az /etc/sudoers fájl egy normál szövegfájl, és ennek megfelelően bármilyen szövegszerkesztőben szerkeszthető (vagy mondjuk ed vagy sed segítségével). Ugyanakkor fennáll annak a veszélye, hogy valamit elrontanak (a szokásos elírások miatt), akár teljesen blokkolják a szuperfelhasználói jogosultságokhoz való hozzáférést. Természetesen ezek a helyzetek javíthatók – például egyfelhasználós módban történő újraindítással. A legjobb azonban nem ütni őket. Ezért az /etc/sudoers módosításának megbízhatóbb módja egy speciálisan ehhez tervezett segédprogram - visudo .

A visudo segédprogram nem csinál semmi különöset - csak megnyitja az /etc/sudoers fájlt a szuperfelhasználó EDITOR változója által leírt szövegszerkesztőben (ha nincs megadva, akkor ismét klasszikus vi lesz - innen a név), és lehetővé teszi a szokásos módon történő szerkesztést , majd lépjen ki a szerkesztőből, és mentse az eredményeket a szokásos módon. Előtte azonban a szerkesztés eredményének helyességét ellenőrizzük. Ha pedig az /etc/sudoers esetében elfogadott szintaxis megsértését észleljük, megfelelő figyelmeztetést adunk ki. Ezt követően visszatérhet a szerkesztéshez, visszautasíthatja a változtatásokat, vagy továbbra is elfogadhatja azokat (természetesen saját felelősségére).

A visudo segédprogram nem garantálja a 100%-os szerkesztési sikert. Mivel csak a szintaxis megfelelőségét ellenőrzi, de nem „maguk a szabályok helyességét”. Ez azt jelenti, hogy ha hiba történik a szabályhoz szükséges parancs elérési útjának megadásakor, ez a parancs nem fog működni a sudo-n keresztül.

A valóságban azonban általában sokkal egyszerűbbnek tűnik, és egyáltalán nem ijesztő. Tehát a Fedora 11-ben a példaszerű /etc/sudoers konfigurációban csak a sor megjegyzését kellett törölnöm.

%wheel ALL=(ALL) ALL

hogy a megadott csoportból a felhasználónak megadjam (és magam is oda előre bekerültem a leírás szerint) minden jogot, amivel az adminisztrátor rendelkezik. Ugyanakkor lehetőség lenne arra, hogy biztosítsuk magunknak a húzást és a jelszó nélküli sudo használat lehetőségét. Ehhez a sor megjegyzésének törlésére lenne szükség

# %wheel ALL=(ALL) NOPASSWD: ALL

De csak arra szorítkoztam, hogy a jelszóművelet hosszantartóbb legyen a beírással (kezdetben hiányzó sor

Az alapértelmezett timestamp_timeout=10

ahol az időtúllépési érték percben van megadva. Mellesleg, ha nullára változtatja -

Az alapértelmezett timestamp_timeout=0

akkor a jelszót a rendszer minden alkalommal kéri a sudo parancs elérésekor.

Alternatív megoldásként letilthatja az időtúllépést a sudo műveletnél negatív érték megadásával:

Alapértelmezett: timestamp_timeout=-1

Ebben az esetben a jelszó csak a parancs első meghívásakor lesz kérve.

Az /etc/sudoers fájl alapos vizsgálata könnyen feltárja annak lehetőségét, hogy bizonyos felhasználóknak vagy csoportoknak csak korlátozott jogokat adjunk. Azonban itt kezdődnek a valódi ügyintézés finomságai. Egyszerűen megfosztottam a kettős kísérletezőt attól, hogy hozzáférjen minden adminisztratív lépéshez, hogy megállítsam minden beavatkozását ezen a területen. Azonban még ez sem mindig teszi lehetővé, hogy megbirkózzam vele – ahogy Timur Shaov sem tud megbirkózni lírai hősével.

A sudo parancs nagyon fontos a hozzáférési jogok kezeléséhez operációs rendszer Linux. Ennek a kis parancsnak köszönhetően engedélyt adhat bizonyos műveletek végrehajtására az adminisztrátor nevében más felhasználóknak, miközben nem adja meg nekik magát a szuperfelhasználói jelszót. Ezenkívül nem kell mindig a szuperfelhasználói fiókhoz tartoznia ahhoz, hogy néha adminisztratív műveleteket hajtson végre.
Úgy tűnik, hogy egy ilyen kis csapat minimális funkciókkal és a lehető legegyszerűbb használattal, de valójában sokkal többre képes. Ebben a cikkben megvizsgáljuk, hogyan van beállítva a sudo Linuxban a rendszerfunkciókhoz és a felhasználói képességekhez való hozzáférés szabályozására.

Hogyan működik a sudo?

Mielőtt továbbmenne a sudo segédprogramhoz való hozzáférés beállításához, nézzük meg, hogyan működik. Linuxon kétféleképpen szerezhet rendszergazdai jogokat. A su paranccsal átválthatunk a root felhasználóra, vagy átadhatjuk a kívánt parancsot paraméterként a sudo segédprogramnak, amely rendszergazdai jogokkal hajtja végre. Sőt, a második módszer előnyösebb, mert nem felejti el, hogy root jogokat használ, és nem fog semmi extra.
A parancs neve azt jelenti helyettesítő felhasználó csinálja vagy szuper felhasználó csinálja. A segédprogram lehetővé teszi a programok futtatását egy másik felhasználó nevében, de leggyakrabban a gyökér nevében. A segédprogramot 1980-ban fejlesztette ki Bob Cogshell és Cliff Spencer. Ez idő alatt sok fejlesztő változott, és számos funkciót adtak hozzá.
A sudo a SUID hozzáférési jelzőjének köszönhetően működik. Ha ez a jelző be van állítva a programhoz, akkor nem az elindító felhasználó nevében fut le, hanem a tulajdonos nevében, mivel a sudo fájl tartozik, akkor a segédprogram rootként fut le. Ezután beolvassa a beállításait, bekéri a felhasználó jelszavát, és eldönti, hogy rendszergazdaként engedélyezheti-e a parancsok futtatását. Ha igen, akkor a paraméterben átadott parancs végrehajtásra kerül.
Most, hogy ismeri az elméletet, nézzük meg, hogyan kell beállítani a sudo-t Linuxon.

A sudo beállítása Linuxon

Az összes sudo beállítás az /etc/sudores könyvtárban található. Itt sok paramétert beállíthat, kezdve attól, hogy ki hajthat végre parancsokat a szuperfelhasználó nevében, és az elérhető parancsok készletének korlátozásáig.
Egy fájl szerkesztésre való megnyitásához írja be a következő parancsot szuperfelhasználóként:

Meg is adhatja szöveg szerkesztő ahol szerkeszteni szeretné a konfigurációs fájlt:

# EDITOR=nano vizudo

Ezután megvizsgáljuk a legérdekesebb beállításokat, amelyeket ebben a fájlban beállíthat. De először nézzük meg a fájl alapvető szintaxisát. Kétféle sorból áll, ezek az álnevek, amelyek lehetővé teszik a felhasználók és zászlók listájának létrehozását, valamint maguk a szabályok, amelyek meghatározzák a sudo parancs viselkedését. Az alias szintaxisa így néz ki:
írja be: alias_name = elem1, elem2, elem3
A típus határozza meg, hogy milyen típusú alizt kell létrehozni, a név adja meg a használandó nevet, az elemek listája pedig azokat az elemeket, amelyek a névre való hivatkozáskor utalni fognak rá.
A felhasználók engedélyeinek leírása kissé eltérő szintaxissal rendelkezik:
gazdagép felhasználó = (egyéb_felhasználó:csoport) csapatok
A felhasználó adja meg azt a felhasználót vagy csoportot, amelyre a szabályt létrehozzuk, a gazdagép az a számítógép, amelyre ez a szabály vonatkozik. Másik felhasználó - mely felhasználó leple alatt az első parancsokat hajthat végre, az utolsó pedig az engedélyezett parancsokat. Bármely paraméter helyett alias is használható. És most a sudo beállítása a Debianon és más disztribúciókon.

Fő beállítások

Az Alapértelmezett álnév lehetővé teszi, hogy szabványos paramétereket állítson be a segédprogram működéséhez, és ebben a részben ezeket is figyelembe vesszük. Az ilyen álnév a Defaults szóval kezdődik, amelyet a zászló neve követ. Ha a név előtt van egy ! szimbólum, az azt jelenti, hogy a zászlót be kell kapcsolni, ellenkező esetben pedig ki kell kapcsolni:
Intro letiltása első használatkor:

Alapértelmezések !előadás


A szuperfelhasználó nem tudja sudo:

Alapértelmezés: !root_sudo



Most, ha megpróbálod a sudo sudo-t, semmi sem fog működni:


Módosítsa a célfelhasználó kezdőkönyvtárát, alapértelmezés szerint az aktuális felhasználó mappája lesz a kezdőkönyvtár:

Alapbeállítások set_home



Mentse el az aktuális felhasználó csoportjainak listáját:

Az alapértelmezett !preserve_groups



Felhasználói jelszó helyett szuperfelhasználói jelszó kérése:



Ezután vegye figyelembe azokat a változókat, amelyek értékre állíthatók a kívánt beállítások megadásához:
Állítsa be a jelszóval kapcsolatos kísérletek számát a sudo kilépése előtt, alapértelmezés szerint 3:

alapértelmezett passwd_tries=5





Az alapértelmezés szerint 5 perc eltelik, mielőtt a sudo ismét jelszót kér. Ha 0-ra van állítva, akkor a jelszót mindig megkérdezi, függetlenül attól, hogy milyen régen használta a segédprogramot:

Az alapértelmezett timestamp_timeout=10



A következő paraméter határozza meg, hogy a sudo hány percet vár a jelszó újbóli megadására, ha azt helytelenül adta meg:

alapértelmezett passwd_timeout=10



Módosíthatja a jelszót kérő üzenetet:

Defaults passprompt="Az Ön jelszava:"


Erre a célra megadhat egy másik felhasználót, nem root felhasználót, akitől az összes parancs végrehajtásra kerül:

alapértelmezett runas_default="felhasználó"

A sudo-hoz való csatlakozás minden kísérletét naplózhatja:

Alapértelmezés: logfile=/var/log/sudo



Ezután megpróbáljuk ellenőrizni a napló működését:

$ sudo cat /var/log/sudo



Ezek voltak a legérdekesebb sudo konfigurációs lehetőségek, amelyekre szüksége lehet, a következő lépésben megnézzük, hogyan állíthatunk be sudo engedélyeket a felhasználók számára.

Sudo felhasználók beállítása

Fentebb már tárgyaltuk a felhasználók műveleteinek beállításának szintaxisát, itt minden bonyolultabb, mint az álneveknél, de kitalálható. Például bármely felhasználó számára engedélyezzük a sudo használatát bármely gazdagépről, és bármilyen parancs végrehajtását:

ALL ALL = (ALL) ALL



Egy ilyen parancs nagyon bizonytalan, mindenkit és mindent megenged. Az első az ALL, amely lehetővé teszi az összes felhasználót, a második az ALL az összes gazdagép számára, a harmadik az ALL, amely lehetővé teszi a bejelentkezést bármely felhasználóként, a negyedik pedig bármely parancs végrehajtását. De sokkal gyakrabban más konstrukciót használnak:

%wheel ALL = (ALL) ALL


Ugyanazt jelenti, mint az előző, csak itt nem engedélyezzük minden felhasználónak a sudo használatát, hanem csak azoknak, akik a kerékcsoport tagjai.

%wheel ALL = (gyökér) ALL

Itt már csak a root felhasználóra korlátoztuk a felhasználók lehetséges kiválasztását. Megadhatja azt a felhasználói csoportot is, amelynek nevében parancsokat hajthat végre:

%wheel ALL = (root:admins) ALL



Ez azt jelenti, hogy a parancsot root felhasználóként vagy egy másik felhasználóként futtathatja az adminisztrátorok csoportjából. Megadhatunk olyan parancsokat is, amelyeket a felhasználó végrehajthat. Például:
  • Runas_Alias- azon felhasználók álnevei, akik nevében a parancsokat végrehajtják;
  • host_alias- gazdagép álnév;
  • Cmnd_Alias- parancs álnév;
  • Például hozzunk létre négy álnevet, és alkalmazzuk őket a szabályunkra:

    User_Alias ​​> Users = user1,user2,user3
    Runas_Alias ​​​​Admins = root,admin
    Host_Alias ​​Hosts = host1,host2
    Cmd_Alias ​​​​Cmds = /bin/mount, /bin/umount

    Users Hosts = (Adminisztrátorok) parancsok

    Ez azt jelenti, hogy a Felhasználók listájában szereplő felhasználók Amdins-felhasználóként futtathatják a Cmds parancsokat a Hostokon.
    Marad néhány szó a zászlókról. A NOPASSWD jelző azt mondja, hogy ne kérjen jelszót a szabály végrehajtásakor. Például, hogy minden felhasználó végrehajthassa a mount parancsot sudo-val jelszó nélkül:

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

    Ezt a parancsot teljesen letilthatja a NOEXEC jelzővel:

    ALL ALL = (root) NOEXEC /bin/mount

    A paranccsal ellenőrizheti, hogy az /etc/sudores fájl megfelelően van-e konfigurálva, és megtekintheti az összes létrehozott szabályt:


    Itt megjelenik az összes zászló és beállítás, valamint a felhasználó engedélyei.

    következtetéseket

    Ebben a cikkben megvizsgáltuk, hogyan konfigurálható a sudo Linuxon. Mint látható, bár nagyon egyszerű segédprogram, sok hasznos beállítást rejt, amelyeket a rendszerében használhat. Ha kérdésed van, tedd fel kommentben!

    Minden Linux rendszerben mindig van egy kiváltságos felhasználó - a root. Ennek a felhasználónak jogában áll bármilyen műveletet végrehajtani, fájlokat törölni és beállításokat módosítani. Szinte lehetetlen valahogy korlátozni a gyökér cselekvési szabadságát. Másrészt a rendszer összes többi felhasználója általában nincs többségben szükséges jogokat, például a programok telepítésének jogait, mivel ez egy adminisztrációs művelet, amelyhez csak a root jogosult. Egy másik gyakori művelet, amely csak a szuperfelhasználó számára érhető el, a fájlok másolása és módosítása olyan rendszermappákban, amelyekhez a normál felhasználó nem fér hozzá.

    Korábban ezt a problémát egészen egyszerűen megoldották: ha megvolt a root jelszó, akkor bejelentkezhetett a rendszerbe az ő fiókjával, vagy ideiglenesen megszerezhette a jogait a su paranccsal. Ezután hajtsa végre az összes szükséges műveletet, és térjen vissza normál felhasználóként. Elvileg egy ilyen rendszer jól működik, de számos jelentős hátránya van, különösen az, hogy lehetetlen (pontosabban nagyon nehéz) korlátozni az adminisztratív jogosultságokat csak egy bizonyos feladatkörre.

    Ezért a modern Linux disztribúciók az adminisztrációhoz a root fiók helyett a sudo segédprogramot használják.

    Az Ubuntuban alapértelmezés szerint a root fiók általában le van tiltva, pl. nincs mód arra, hogy hozzáférjen a root-hoz anélkül, hogy engedélyezné. root pont az, ami le van tiltva, pl. jelen van a rendszerben, csak nem tudsz alámenni. Ha vissza szeretné adni a root használatának lehetőségét, olvassa el az alábbi, a root fiók engedélyezéséről szóló bekezdést.

    Mi az a sudo

    A sudo egy olyan segédprogram, amely root jogosultságokat ad a beállításoknak megfelelő adminisztrációs műveletek végrehajtásához. Lehetővé teszi a rendszer fontos alkalmazásaihoz való hozzáférés egyszerű szabályozását. Alapértelmezés szerint mikor az Ubuntu telepítése az első felhasználó (a telepítés során létrehozott) teljes jogot kap a sudo használatára. Azok. valójában az első felhasználónak ugyanaz a mérlegelési joga, mint a root. A sudo ezen viselkedése azonban könnyen megváltoztatható, lásd alább a sudo beállításáról szóló bekezdést.

    Hol használják a sudo-t

    A sudo akkor használatos, amikor a Rendszeradminisztráció menüből futtat valamit. Például a Synaptic indításakor meg kell adnia jelszavát. A Synaptic egy telepítéskezelő program, ezért futtatásához rendszergazdai jogokra van szükség, amelyeket a sudo-n keresztül a jelszó megadásával kaphat meg.

    Nem minden rendszergazdai jogosultságot igénylő program fut azonban automatikusan sudo-val. Általában manuálisan kell elindítani a rendszergazdai jogokkal rendelkező programokat.

    Grafikus programok futtatása rendszergazdai jogokkal

    Kezdésnek grafikus programok rendszergazdai jogokkal használhatja a programindító párbeszédpanelt, amelyet alapértelmezés szerint az Alt + F2 billentyűkombinációval hívunk meg.

    Tegyük fel, hogy futnunk kell fájl kezelő Nautilus rendszergazdai jogokkal a következőhöz GUI valahogy megváltoztatni a tartalmat rendszermappák. Ehhez írja be a parancsot az alkalmazásindító párbeszédablakban

    gksudo nautilus

    A gksudo helyettesíthető a gksu-val, és a KDE-felhasználóknak a gksudo helyett a kdesu-t kell írniuk. Meg kell adnia jelszavát, és ha van szükséges jogokat, a Nautilus rendszergazdaként fog futni. Bármilyen grafikus szoftver elindítható rendszergazdai jogosultságokkal, egyszerűen az indító párbeszédablakban

    gksudo<имя_команды>

    Legyen rendkívül óvatos, amikor rendszergazdai jogokkal futó alkalmazásokkal dolgozik. Bármilyen műveletet végrehajthat a rendszer figyelmeztetése nélkül, különösen a törlést rendszerfájlokatígy használhatatlanná teszi a rendszert.

    Rendszergazdai jogokkal rendelkező programok futtatása a terminálban

    Ha rendszergazdaként szeretne futtatni egy parancsot a terminálban, egyszerűen írja be elé a sudo-t:

    sudo<команда>

    A rendszer felkéri a jelszó megadására. Legyen óvatos, a jelszó belépéskor semmiképpen nem jelenik meg, ez normális és biztonsági okokból történik, csak írja be a végéig, és nyomja meg az Enter billentyűt. A jelszó megadása után a megadott parancs rootként fut le.

    A rendszer egy ideig megjegyzi a beírt jelszót (nyitva tartja a sudo munkamenetet). Ezért előfordulhat, hogy a következő sudo-futtatásokhoz nincs szükség jelszóra. A sudo munkamenet leállításának biztosításához írjon be egy terminált

    Ezen túlmenően a Linuxban a csövekkel kapcsolatos hibák gyakoriak. Parancs végrehajtásakor

    Sudo cat test.txt | grep szöveg > eredmény.txt

    Val vel gyökérként csak a macska lesz végrehajtva, tehát a fájl eredmény.txt nem jelentkezhet be. Minden parancs előtt meg kell írnod ​​a sudo-t, vagy ideiglenesen át kell váltanod superuserre.

    Superuser jogok megszerzése több parancs végrehajtásához

    Néha szükségessé válik több parancs egymás utáni végrehajtása rendszergazdai jogokkal. Ebben az esetben ideiglenesen szuperfelhasználóvá válhat a következő parancsok egyikével:

    sudo -s sudo -i

    Ezt követően belép a szuperfelhasználói módba (a sudo beállításokon keresztül meghatározott korlátozásokkal), amint azt a # szimbólum jelzi a parancssor végén. Az akcióparancs adatai hasonlóak a su -hoz, azonban:- sudo -s- nem változtatja meg a saját könyvtárat /root-ra, a saját könyvtár a hívó felhasználó saját könyvtára marad sudo -s ami általában nagyon kényelmes. - sudo -i- a saját könyvtárat is a /root értékre módosítja.

    A normál felhasználói módba való visszatéréshez írja be az exit parancsot, vagy egyszerűen nyomja meg a Ctrl + D billentyűkombinációt.

    A hagyományos root fiók és a su parancs használata

    Kinyit fiókot A root indokolatlan kockázatokat rejt magában (ha állandóan rootként dolgozik, 100 500 módja van annak, hogy „lábon lője magát”), és megkönnyíti a támadók számára a számítógéphez való hozzáférést.

    Ubuntu 11.04 és régebbi verziók

    Ha rootként szeretne bejelentkezni, csak állítson be egy jelszót:

    sudo passwd gyökér

    Ezután a bejelentkezési képernyőn kattintson az Egyéb... lehetőségre, és adja meg a beállított bejelentkezési nevet (root) és jelszót.

    Ubuntu 11.10 és régebbi

    A 11.10-es verzió óta telepítve van a lightdm bejelentkezéskezelő, és a root bejelentkezések kezelése kicsit bonyolultabb.

    1. Állítsa be a root jelszót. Írja be a terminálba:

    sudo passwd gyökér

    2. Kapcsolja be az "Adja meg bejelentkezési adatait" elemet. Írja be a terminálba:

    Gksu gedit /etc/lightdm/lightdm.conf

    A fájl végén add hozzá:

    Greeter-show-manual-login=true

    3. Indítsa újra a lightdm-et. Írja be a terminálba:

    sudo service lightdm újraindítás

    Ennyi, a bejelentkezési képernyőn megjelenik a "Bejelentkezés" elem. A bejelentkezési mezőbe írja be a "root" kifejezést, a jelszó mezőbe - az első szakaszban beállított jelszót.

    A root fiók visszazárásához vissza kell állítania a lightdm beállítások módosításait, valamint zárolnia kell a root fiókot a terminálban található paranccsal:

    sudo passwd -l gyökér

    Sudo beállítása és engedélyek különböző parancsok végrehajtásához

    A sudo lehetővé teszi, hogy engedélyezze vagy megtagadja a felhasználók számára egy adott programkészlet végrehajtását. A hozzáférési jogokkal kapcsolatos összes beállítás egy fájlban tárolódik /etc/sudoers. Ez nem egy közönséges fájl. Szerkeszteni szükséges(biztonsági okokból) használja a parancsot

    sudo visudo

    Alapértelmezés szerint azt írja ki, hogy a csoport összes tagja admin teljes hozzáférése van a sudo -hoz, amint azt a sor jelzi

    %admin ALL=(ALL) ALL

    A fájl szintaxisáról és testreszabási beállításairól a futtatással többet olvashat

    Ember sudoers

    Ha hibát követ el a fájl szerkesztése közben, nagyon valószínű, hogy teljesen elveszíti a hozzáférést az adminisztratív funkciókhoz. Ha ez megtörténik, akkor be kell indítania helyreállítási mód, és automatikusan rendszergazdai jogokat kap, és mindent meg tud javítani. Ezenkívül ezt a fájlt a LiveCD-ről is szerkesztheti.

    Lehetővé teszi a felhasználó számára, hogy jelszó megadása nélkül végrehajtson parancsot

    Ahhoz, hogy a rendszer ne kérjen jelszót bizonyos parancsoknál, a sor utáni sudoer-ben szükséges # Cmnd alias specifikáció adjunk hozzá egy sort, ahol vesszővel elválasztva listázzuk ki a kívánt parancsokat a teljes elérési úttal (a parancs elérési útját futással találhatja meg melyik parancsnév:

    # Cmnd alias specifikáció Cmnd_Alias ​​​​SHUTDOWN_CMDS = /sbin/shutdown, /usr/sbin/pm-hibernate, /sbin/reboot

    És add hozzá a sort a fájl végéhez

    Felhasználónév ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS

    Figyelem! A fenti lépések nem változtatják meg a sudo parancs beírásának szükségességét a parancs előtt

    Szinonimák létrehozása (alias)

    Annak érdekében, hogy ne csak ne adjon meg jelszót a sudo-hoz, hanem egyáltalán ne írja be a sudo-t, tegye a következőket: nyissa meg a saját könyvtárában található .bashrc fájlt

    nano ~/bashrc

    és add hozzá a sorokat a fájl végéhez

    alias reboot ="sudo reboot" alias poweroff ="sudo poweroff" alias pm-hibernate="sudo pm-hibernate" alias hibernate ="sudo pm-hibernate" alias shutdown ="sudo shutdown"

    A megadott jelszó érvényességi ideje

    Lehet, hogy módosítani szeretné a sudo futási idejét jelszó megadása nélkül. Ez könnyen elérhető, ha valami ilyesmit adunk az /etc/sudoers (visudo) fájlhoz:

    Alapértelmezések:foo timestamp_timeout=20

    Itt sudo a felhasználónak foo jelszó megadása nélkül érvényes 20 percig. Ha azt szeretné, hogy a sudo mindig jelszót kérjen, állítsa a timestamp_timeout értéket 0-ra.

    A sudo nem kér jelszót

    A jelszó nélküli sudo egy szörnyű biztonsági rés, bárki bármit megtehet. Ha szándékosan megengedte - sürgősen küldje vissza úgy, ahogy volt.

    Bizonyos esetekben azonban a sudo hirtelen abbahagyja a jelszó kérését. Ha a visudo , akkor valami ehhez hasonló sort láthat, amelyet a felhasználó úgy tűnik, nem adott hozzá:

    ALL ALL=(ALL) NOPASSWD:ALL

    Valószínűleg ezt a katasztrofális sort egy olyan program telepítésekor adták hozzá, mint például a Connect Manager az MTS-től vagy a Megafontól. Ebben az esetben meg kell változtatni egy olyan sorra, amely csak ez a Connect Manager futhat rootként, valami ilyesmi:

    Felhasználónév ALL= NOPASSWD: /program elérési útja

    Vannak más megoldások is a problémára, egy kis vita.

    Linux rendszergazdaként mindig az ill sudo, És su. ÉS rendszergazda nagyon fontos, hogy tudd a köztük lévő különbséget. Azok számára, akik alapvetően nem értik a kettő közötti különbséget, vagy mindig összekeverik őket, itt van egy lista a 12 kérdésről és válaszról (Kérdések és válaszok), amelyek célja, hogy segítsenek megérteni a sudo és a sudo finomabb pontjait.

    JEGYZET- Ez a cikk csak az Ubuntura vonatkozik. Bár az információk egy része a legnépszerűbb disztribúciókra vonatkozhat.

    sudo vs su

    A kérdések és válaszok sorozatának tisztáznia kell a sudo vs su néhány sajátosságát sok Ubuntu felhasználó számára.

    Q1. Hogyan használható a sudo és a su? Mi a különbség köztük?

    Válasz A .sudo néhány parancs futtatására szolgál root jogosultsággal. Az az érdekes, hogy amikor használod sudo egy adott parancshoz a rendszer bekéri az aktuális felhasználó jelszavát. A jelszó megadása után a parancs szuperfelhasználói jogosultságokkal fut le.

    Íme egy példa:

    $ apt-get install skype E: Nem sikerült megnyitni a zárolási fájlt /var/lib/dpkg/lock - nyitott (13: Engedély megtagadva) E: Nem lehet zárolni az adminisztrációs könyvtárat (/var/lib/dpkg/), root vagy ? $ sudo apt-get install skype jelszó a mylinuxbookhoz: Csomaglisták olvasása... Kész Függőségi fa felépítése Állapotinformációk olvasása... Kész ... ...

    Amint látja, először megpróbáltam telepíteni a Skype-ot a parancs segítségével apt-get de megkaptam engedély megtagadva hiba. Ezután a sudo-t használtam ugyanazzal a parancsrendszerrel és jelszórendszerrel a mylinuxbook felhasználó számára. A helyes jelszó megadása után a parancs sikeresen befejeződött.

    Másrészt a su bármely felhasználó váltására szolgál. Állítsd be a jelszót a megfelelő felhasználó engedélyezve van. Ha a su-t opciók nélkül használjuk, akkor a root felhasználói fiókra ugrik. Ebben az esetben a rendszer kéri a superuser jelszót.

    Íme egy példa:

    $ su mylinuxbook Jelszó: [e-mail védett]:~$

    A fenti példában én használtam su hogy váltsak a mylinuxbook felhasználói fiókra, és miután megadtam a mylinuxbook jelszavát, megtehettem.

    Íme egy másik példa:

    $ su Jelszó: su: Hitelesítési hiba

    A fenti példában bepereltem, hogy rootolja a fiókot a normál felhasználónak, de ő nem tudta, mert nem állítottam be a root jelszót. Az olyan disztribúciókban, mint az Ubuntu, nincs alapértelmezés szerint beállítva root jelszavak. Miután beállította, használhatja ezt a jelszót.

    Q2. Mi a teendő, ha nem akarok adminisztrátori jelszót beállítani az Ubuntu-mon, de mégis szeretnék váltani szuperfelhasználóra?

    Válasz. Ebben az esetben kipróbálhatja a " sudo su". Íme egy példa:

    $ sudo su jelszó a mylinuxbookhoz: [e-mail védett]:/home/mylinuxbook#

    Miután a sudo-t használtuk a su elindításához, a rendszer az aktuális felhasználó jelszavát kéri, nem a szuperfelhasználó jelszavát. Amint ezt megadta, a folyószámla átkerült a számlára.

    Q3. Mi a teendő, ha a su-val szeretnék navigálni más felhasználói fiókokhoz, de nem akarok emlékezni minden egyes felhasználói jelszóra?

    Válasz. Nos, ebben az esetben csak használja a su parancsot, írja be a rendszergazdai jelszót, és váltson át a fiókra. Innen a su használatával bármilyen felhasználói fiókra válthat jelszavak használata nélkül.

    Q4. Ha a sudo-t valami szuperfelhasználói jogosultságra használják, akkor miért van szükség az aktuális felhasználó jelszavára és nem a szuperfelhasználó jelszavára?

    Válasz. Nos, nem igazán minden normál felhasználó tud sudo-t csinálni, és olyan parancsokat futtatni, amelyekhez szuperfelhasználói jogosultságok szükségesek. Felhasználóként annak kell lennie sudoer Azonos. Ez azt jelenti, hogy a sudo használatához jogosultságokkal kell rendelkeznie. Ha Ön érvényes sudoer, akkor a rendszer csak jelszót kér, hogy megbizonyosodjon arról, hogy olyan munkát végez, amelyhez root jogosultság szükséges, és mindent ellenőriznie kell, mielőtt ténylegesen megtenné.

    Most jön a sudoer kérdése. Hogyan válhat felhasználóvá sudoer? A felhasználó akkor válhat sudoerré, ha felveszi a sudo csoportba. Íme egy példa:

    $ sudo adduser sudo

    Csak cserélje ki a fiók tényleges felhasználónevére. Vegye figyelembe, hogy korábban (az Ubuntu 12.04 előtt) a csoportot meg kellett hívni admin de ez most nem kötelező.

    Használhatja a "parancsot" csoport" az összes olyan csoport ellenőrzéséhez, amelyekben ez a felhasználó szerepel. Íme egy példa:

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

    Tehát látja, hogy a felhasználó " mylinuxbook" valamennyi csoport tagja, beleértve a sudo csoportokat is, ezért a sudoer.

    Q5. Észrevettem, hogy amint használtam a sudo-t, a root jogaim sokáig megmaradnak, bár egy idő után minden visszatér a normális kerékvágásba. Mi ez?

    Válasz. Az Ubuntu körülbelül 15 percig emlékszik a sudo jelszavára. Ez azt jelenti, hogy miután a sudo-t használta egy parancs végrehajtására, a rendszer nem kér jelszót, ha olyan parancsokat futtat, amelyek futtatásához szuperfelhasználói jogosultságokra van szükség. Bár használni kell majd sudo minden parancs előtt.

    Q6. Mik a sudo előnyei a su-val szemben?

    Válasz. A Sudo számos előnnyel rendelkezik a su-val szemben.

    Íme a lista:

  • A Sudo gondoskodik arról, hogy a jogosultságok egy adott parancsra (vagy egy meghatározott időtartamra) vonatkozzanak, és ne a teljes munkamenetre, mivel ez a szuperfelhasználói jogosultságokkal való véletlen visszaéléshez vezethet.
  • A sudo segítségével korlátozhatja a felhasználói engedélyeket. Ez akkor hasznos, ha nem szeretné, hogy a felhasználó irányítsa az összes szuperfelhasználói jogot a suda futtatásakor.
  • Minden egyes sudoerhez van egy naplófájl (auth.log). Ez a fájl információkat tartalmaz a sudo használatával végrehajtott parancsokról, azok végrehajtási idejéről. Ez segít a rendszergazdának nyomon követni még a megbízható felhasználókat (sudoers) is.
  • A legfontosabb előnye, hogy a suda-nak saját felhasználói jelszóra van szüksége a szuperfelhasználói jelszó helyett a suda-ba való bejelentkezéshez. Ez segít megőrizni a root jelszót, és nincs szükség annak megváltoztatására, még akkor sem, ha a felhasználó (sudoer) kilép.
  • Q7. Bármely felhasználó végrehajthatja sudo műveletek?

    Válasz. Nem, csak megbízható felhasználók vagy sudo-ok hajthatnak végre sudo műveleteket. Itt a hivatalos oldal, amely leírja, hogyan és mit tehet a sudoer felhasználó.

    Q8. Érdekel a su. Hogyan szabhatom testre a su használatát oly módon, hogy a suda-hoz hasonló funkciókat érjen el?

    Válasz. Ha su-t futtatsz, az azt jelenti, hogy már beállítottad a root jelszót. A sudo-hoz hasonló funkcionalitás eléréséhez, pl. csak egyetlen parancs futtatásához root jogosultságokkal a su használatával, csak az opciót kell használnia -c a su parancstól.

    Íme egy példa:

    $ su -c "apt-get install skype" Jelszó:

    Csak írja be a jelszót, és csak ez a parancs fog működni szuperfelhasználói jogosultságokkal. Bár ugyanaz, mint a sudo, az egyetlen különbség az, hogy az aktuális felhasználó jelszava helyett a root jelszót kell megadni.

    Q9. Sudo-val dolgozom. Hogyan módosíthatom a sudo használatát, hogy ugyanazokat a funkciókat érje el, mint a su?

    Válasz. A su funkcionalitás sudo-n keresztüli eléréséhez próbálja ki az opciót -én sudo parancsok.

    Íme egy példa:

    $ sudo -i jelszó a mylinuxbookhoz: [e-mail védett]:~#

    Látod, hogy " sudo -i", az áttérés a root fiókra megtörtént, bár az aktuális felhasználóhoz (jelen esetben mylinuxbook) beírták a jelszót.

    Q10. A fiókom root jelszava még nincs aktiválva. Használhatom a sudo-t a szuperfelhasználói jelszó engedélyezésére?

    Válasz. A szuperfelhasználó jelszavának aktiválásához használhatja a parancsot passwd a következő módon:

    $ sudo passwd root

    Ez a parancs root hozzáférést igényel, ezért a sudo-t kell használnia.

    Q12. Használhatok sudo-t speciális engedélyek megadására a felhasználóknak?

    Válasz. Konfigurációs fájl sudo- /etc/sudoers. Nem szerkeszthető manuálisan szerkesztővel. Erre a célra a parancs használata javasolt visudo.

    Itt van a pontos parancs:

    $sudo visudo

    és ezt kapod:

    Ez a parancs megnyit egy ideiglenes /etc/sudoers.tmp fájlt a nano szerkesztőben szerkesztés céljából. A Visudo gondoskodik arról, hogy ne legyen ütközés, ha ugyanannak a fájlnak több példányát szerkesztik.

    A korlátozott jogok biztosításának megértéséhez ismerje meg ennek a konfigurációs fájlnak a felépítését.

    Ha hibát észlel, jelöljön ki egy szövegrészt, és nyomja meg a Ctrl + Enter billentyűket
    OSSZA MEG: