Fórum Root.cz

Hlavní témata => Software => Téma založeno: whatistheuniverse 17. 02. 2019, 23:54:22

Název: Nejasnosti ohledně suoders
Přispěvatel: whatistheuniverse 17. 02. 2019, 23:54:22
Dobrý den.

Snažím se pochopit Linux a momentálně jsem u sudoers.

root ALL=(ALL) ALL
Co přesně se stane, když tuhle řádku smažu? Přestane v tu chvíli existovat root a já už nebudu nikdy dělat akce, kde potřebuji být root?

username ALL=(ALL) ALL
Pokud je tahle syntaxe stejná jako u řádku nahoře, znamená to, že username má v tuhle chvíli právo spustit jakýkoliv příkz. Znamená to tedy, že má stejný práva jako root? Pokud ne, v čem se liší jejich práva, když zápis je stejný?

%sudo ALL=(ALL) ALL
Proč mám možnost přidat uživatele do skupiny sudo, ale v listu skupin skupinu sudo nevidím? A pokud má stejný zápis syntaxe jako dva příklady nad touto otázkou, je rozdíl mezi tím, že bych měl uživatele ve skupině kde může spouštět všechny příkazy nebo že bych ho měl zvlášť?
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Miroslav Šilhavý 18. 02. 2019, 07:52:16
Soubor sudoers vyjmenovává uživatele, kteří se mouhou změnit na roota.

root ALL=(ALL) ALL se přidává pro jistotu, aby mohl root změnit sám sebe na roota. To vypadá na první pohled nesmyslně, ale účel to má. Můžete mít sepsané scripty, které sudo využívají. Kdyby tento řádek chyběl, tak by scripty paradoxně fungovalo ostatním uživatelům v sudoers, ale rootovi ne :). Někdy se přidává NOPASSWD, pak rootovi mohou volání sudo projít bez zdržování.

Zbytek uživatelů je na Vás, jestli je přidáte do skupiny sudo, nebo jestli je vyjmenujete ručně. Některé systémy (distribuce) ani skupinu sudo nemají, takže je nutné umět se podle situace zorientovat.
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Filip Jirsák 18. 02. 2019, 07:54:50
Konfigurační soubor sudoers konfiguruje chování programu sudo, který umožňuje spustit program s oprávněním jiného uživatele. sudoers nijak neovlivňuje, jací uživatelé a jaké skupiny v systému existují. Zkoumání sudo a sudoers bych klidně nechal na později, důležitější je pochopit systém uživatelů, skupin a přístupových práv. sudo není pro používání Linuxu nezbytné, je to spíš módní záležitost a často se používá špatně – na internetu je mnoho příkladů, kde někdo mechanicky před každý příkaz píše sudo, aniž by to bylo nutné a a niž by dotyčný přemýšlel nad tím, proč to dělá.

V prvním případě se tedy v seznamu uživatelů nic nemění, uživatel root bude dál existovat a akce, kde potřebujete být root, můžete dělat dál – stačí se jako root přihlásit. Pokud neznáte heslo roota, je rozumné mu nějaké bezpečné heslo nastavit (a poznamenat si ho), ale na roota se můžete dostat i bez hesla, např. při startu systému v jednouživatelském režimu.

Druhý příklad – podstatné je to, že se každý program spouští v kontextu nějakého uživatele. Spuštění stejného programu, jaký může spustit root, tedy ještě neznamená, že mám práva roota – ten program spouštím pod svými právy. Ten druhý příklad říká, že uživatel username může spustit libovolný příkaz (poslední ALL) jménem jakéhokoli uživatele (to je to (ALL)). Pokud ho spustí jménem uživatele root, poběží příkaz s právy roota, ale pokud ho spustí jménem uživatele třeba apache, poběží s právy uživatele apache.

K třetímu případu – sudo a skupiny jsou nezávislé, obojí se konfiguruje pomocí nezávislých textových souborů, nic vám tedy nemůže zabránit do sudoers přidat skupinu, která neexistuje, nebo z /etc/group odebrat skupinu, která je použitá v sudoers. Pokud skupinu sudo nemáte, to pravidlo v sudoers se nikdy nemůže uplatnit – ale třeba jí v budoucnosti vytvoříte a pak se to pravidlo začne používat. Pro uživatele by neměl být rozdíl v tom, jestli pravidlo v sudoers přidáte přímo jemu nebo skupině, do které patří. Nejsem si ale jist, jak se uplatňují priority, jak by to fungovalo v případě nějakých konfliktů – jestli v takovém případě nemá vliv to, zda jde o pravidlo pro uživatele nebo skupinu.
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Filip Jirsák 18. 02. 2019, 07:58:06
Soubor sudoers vyjmenovává uživatele, kteří se mouhou změnit na roota.
Nikoli, je to oprávnění spouštět programy jménem jiného uživatele – nemusí to být jenom root.

root ALL=(ALL) ALL se přidává pro jistotu, aby mohl root změnit sám sebe na roota.
Tenhle řádek hlavně umožní rootovi spouštět pomocí sudo jakýkoli příkaz jménem jakéhokoli jiného uživatele. Třeba když chce root editovat nějaký soubor uživatele a nechce převzít jeho vlastnictví (protože pak už by se k němu ten uživatel nedostal).
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Miroslav Šilhavý 18. 02. 2019, 08:00:39
root ALL=(ALL) ALL se přidává pro jistotu, aby mohl root změnit sám sebe na roota.
Tenhle řádek hlavně umožní rootovi spouštět pomocí sudo jakýkoli příkaz jménem jakéhokoli jiného uživatele. Třeba když chce root editovat nějaký soubor uživatele a nechce převzít jeho vlastnictví (protože pak už by se k němu ten uživatel nedostal).

Na to rootovi stačí daleko jednodušší a s heslem neotravující: su
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Filip Jirsák 18. 02. 2019, 08:38:28
Na to rootovi stačí daleko jednodušší a s heslem neotravující: su
Které ovšem dělá něco jiného (mimo jiné přepne kontext trvale), a je to jiná aplikace z jiného balíčku než sudo, např. nemusí být nainstalovaná.
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Miroslav Šilhavý 18. 02. 2019, 09:19:41
Na to rootovi stačí daleko jednodušší a s heslem neotravující: su
Které ovšem dělá něco jiného (mimo jiné přepne kontext trvale), a je to jiná aplikace z jiného balíčku než sudo, např. nemusí být nainstalovaná.

Tady jste si to asi zaměnil. Su je naopak standardní, neodinstalovatelná součást systému. Např. v debianu je to součást balíku "login" (který nejde odinstalovat). Na BSD je to součást base systemu (bez které se nedá systém instalovat).

Oproti tomu sudo je naopak balíček, který vůbec nemusí být nainstalován. Pokud nainstalujete debiana holého, nebo čisté FreeBSD, sudo v něm není.

Su nepřepíná práva trvale, běžně se volá:
Kód: [Vybrat]
su - uzivatel -c "prikaz k vykonani"
Rozdílem je, že su k elevaci práv potřebuje zadat heslo roota.
Sudo k elevaci práv potřebuje mít záznam v sudoers + (volitelně) zadat heslo volajícího uživatele.
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Filip Jirsák 18. 02. 2019, 09:45:41
Su je naopak standardní, neodinstalovatelná součást systému.
Ve světe linuxu, kde si každý může sestavit distribuci jakou chce, je dost ošemetné psát o „standardní součásti systému“.

Rozdílem je, že su k elevaci práv potřebuje zadat heslo roota.
Záleží na konfiguraci, obvyklá je i konfigurace, kdy vybraní uživatelé/skupiny mohou používat su bez hesla roota. root pak může mít silnější heslo.

Su nepřepíná práva trvale, běžně se volá:
Kód: [Vybrat]
su - uzivatel -c "prikaz k vykonani"Sudo k elevaci práv potřebuje mít záznam v sudoers + (volitelně) zadat heslo volajícího uživatele.
Což stále znamená jen to, že se daný příkaz předá shellu, který su spustí.

Sudo k elevaci práv potřebuje mít záznam v sudoers + (volitelně) zadat heslo volajícího uživatele.
sudo lze nakonfigurovat i tak, že vyžaduje zadání hesla roota nebo hesla cílového uživatele.

Primární rozdíl mezi su a sudo je v tom, že su slouží pro přepnutí na daného uživatele – používá se tehdy, když dál chci pracovat jako jiný uživatel a chová se stejně, jako kdybych se jako daný uživatel přímo přihlásil (s tou výjimkou, že můžu udělat su na uživatele, jehož heslo neznám nebo který má zakázané přihlášení). sudo bylo původně zamýšleno pro spouštění konkrétních příkazů s oprávněními jiného uživatele – takový suid bit na steroidech. Např. aby správce webového serveru mohl bez oprávnění roota restartovat webový server, který při startu oprávnění roota potřeboval. sudoers s příkazem ALL jde proti původnímu smyslu sudo a je to taková divná a zbytečná náhrada za su.
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Miroslav Šilhavý 18. 02. 2019, 10:55:21
Su je naopak standardní, neodinstalovatelná součást systému.
Ve světe linuxu, kde si každý může sestavit distribuci jakou chce, je dost ošemetné psát o „standardní součásti systému“.
To já bych zase opatrný nebyl. Su patří do základu systému jak v Unixech (od verze 1, rok 1974), tak i podle LSB: https://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Common/LSB-Common/rcommands.html, zatímco sudo je obyčejný balík, který v systému být může, ale taky nemusí. Na některých systémech je alternativou pro sudo program doas.

Záleží na konfiguraci, obvyklá je i konfigurace, kdy vybraní uživatelé/skupiny mohou používat su bez hesla roota. root pak může mít silnější heslo.
To už není vlastnost su, ale PAM. PAM je ale také volitelný, nejde spoléhat na to, že je k dispozici.

Což stále znamená jen to, že se daný příkaz předá shellu, který su spustí.
Nehraje to moc velkou roli. Prostředí se buďto zachová původní, nebo se nastaví podle nového uživatele (parametrem). Volání přes shell je bezpečnostní pojistka, aby měl uživatel validní shell z /etc/shells. V sudo můžete stejnou kontrolu (validního shellu uživatele) nastavit konfigurací přes PAM, ale ten nemusí být všude k dispozici. Se špatně nakonfigurovaným sudo / PAM můžete kontrolu shellu obejít, což bych považoval za potenciální bezpečnostní riziko.

Primární rozdíl mezi su a sudo je v tom, že su slouží pro přepnutí na daného uživatele – používá se tehdy, když dál chci pracovat jako jiný uživatel a chová se stejně, jako kdybych se jako daný uživatel přímo přihlásil (s tou výjimkou, že můžu udělat su na uživatele, jehož heslo neznám nebo který má zakázané přihlášení).
Zde velmi nesouhlasím. Podívejte se např. do instalačních scriptů software, nebo do initscriptů. Su -c "příkaz" se volá často. Sudo se ve scriptech používá spíš zřídka, resp. nepamatuji se, kde bych to potkal.

sudoers s příkazem ALL jde proti původnímu smyslu sudo a je to taková divná a zbytečná náhrada za su.
Souhlasím bezvýhradně.
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: whatistheuniverse 19. 02. 2019, 14:34:35
Děkuji moc pánové za rozepsání a objasnění pár věcí.

Rád bych si to shrnul.

Sudoers dává tedy schopnost uživateli nebo skupině spustit příkaz za jiného uživatele. V praxi tedy můžu jako john (při téhle konfiguraci john ALL=(ALL) ALL) spustit příkaz za johna, kde dostanu zamítnutí, protože nemám oprávnění, ale protože john může spustit příkaz i za jiného uživatele a já mám možnost ALL, spustím příkaz třeba jako root a v tu chvíli už dostanu zelenou. Zatím nemám možnot testovat, proto se zeptám. Ověřují se nějak dané konfigurace? Třeba kdybych nastavil, že john může spustit nějaký příkaz a může ho spustit buď za sebe (logicky) nebo za uživatele andrew, no bohužel ani andrew k tomuto příkazu nemá práva. Dostanu chybovou hlášku nebo je to moje hloupost? A chápu to dobře, že služby jsou také uživatelé? Tedy můžu nastavit uživateli john možnost spouštět za službu (uživatele)? Pokud ano, kde zjistím, která služba má jaké oprávnění?
K tomu sudo a skupině: napsal jste, že jsou nezávislé, ale pokud nemám skupinu sudo, pravidla se neuplatní. Nejsou tyhle věci v rozporu? Nebo můžu uživateli přidat skupinu, kterou vytvořila konfigurace sudoers bez toho, abych ji vytvořil v groups?

A ještě jednou moc děkuji, važím si toho!
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Miroslav Šilhavý 19. 02. 2019, 15:04:13
Dekuji ze mas jeste silu opravovat ty nesmysly kolegy Jirsaka - prosim, ignorujte toho trotla, co to ma max vyctene z knih, ale zrejme to nikdy sam nedelal

Sice se ke vsemu ma potrebu vyjadrovat, ale to, ze je Guru fora, nic o jeho kvalitach nevypovida
Předně, díky.

Kolega Jirsák možná nevyužívá tolik historických znalostí, přesto se vyjádřil k tématu. Já jsem za jeho příspěvek rád, protože mi to nabízí vhled do myšlení "méně konzervativních" správců. Mě by nikdy nenapadlo užít ACL, abych nahradil funkci, kterou mohu zajistit daleko jednoduššími způsoby. Jsem ještě generace vychovaná otázkou: "a co se stane, když tento mechanismus selže?" a díky tomu vymýšlím možná složitější, přesto (snad?) bezpečnější řešení.

Přiznám se, že mě, v mé stařecké zaslepenosti ještě nenapadlo, že už existuje garda uživatelů, kteří považují sudo za standard a su za něco zvláštního.
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Vilith 19. 02. 2019, 15:11:46
sudo zacalo propagovat Ubuntu, osobne nechapu, proc ho vsude cpou a preferuji

Linux ma tu vyhodu, ze jde udelat stejna vec mnoha zpusoby. Ne kazde reseni je ale alegantni a "ciste"
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Miroslav Šilhavý 19. 02. 2019, 15:22:42
sudo zacalo propagovat Ubuntu, osobne nechapu, proc ho vsude cpou a preferuji

Sudo byl ve své době určitý odklon od stereotypu. Stereotypem pre-Ubuntu doby bylo přihlašování jako root. Dokonce nebylo ani zvykem přihlášení na neprivilegovaného uživatele + su. Mementem doby je OpenSSH direktiva PermitRootLogin, která z Yes přešla na Without-password, a teprve po letech na No.

Sudo proti tomu zbořilo konvence a řeklo: stačí obyčejný uživatel a elevovat oprávnění budeme až podle potřeby. Bylo to v době, kdy Windows zavedly UAC. Sudo v počátku snažení bylo vyvinutějším mechanismem než UAC: UAC vycházelo z práv administrátora, ale snižovalo je směrem dolů. Sudo vycházelo z práv uživatele a povyšovalo je nahoru. Čistě teoreticky je sudo-cesta čistší. V praxi ale UAC funguje lépe. Proč? Protože sudo vyžaduje heslo u každého uprdnutí a technicky s tím nejde nic dělat. UAC, oproti tomu, může pracovat s tím, co je "téma doby".

Pokud si můžu vybrat, tak na server mi sudo nepatří, tam mi stačí su a správné metody správy. Naopak, na pracovní stanici mám raději UAC, než sudo.
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: whatistheuniverse 19. 02. 2019, 16:59:16
Jsem rád, že se zde rozvíjí takáto diskuze.

Mohl by mi někdo prosím odpovědět na můj souhrn? Zda to chápu správně?
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Miroslav Šilhavý 19. 02. 2019, 17:03:41
Jsem rád, že se zde rozvíjí takáto diskuze.

Mohl by mi někdo prosím odpovědět na můj souhrn? Zda to chápu správně?

john ALL=(ALL) ALL

Dává možnost uživateli "john" vykonávat jakýkoliv příkaz, za jakéhokoliv uživatele (včetně roota). Jediné, na co bude tázán je heslo uživatele "john" (jen pro jistotu, jestli je "john" stále u klávesnice). Není vyžadováno heslo roota, není vyžadováno heslo žádného jiného uživatele.

Co se týče skupiny, kolega měl na mysli, že toto pravidlo se neuplatní, dokud skupina neexistuje. Pokud založíte skupinu "sudo" a do ní přídáte uživatele "john", bude chování stejné, jako v prvním případě. Pokud do skupiny "sudo" přidáte ještě uživatele "jack", bude totéž platit i pro Jacka.
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: whatistheuniverse 19. 02. 2019, 17:37:28
Citace
A chápu to dobře, že služby jsou také uživatelé? Tedy můžu nastavit uživateli john možnost spouštět za službu (uživatele)? Pokud ano, kde zjistím, která služba má jaké oprávnění?
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Mirek Prýmek 19. 02. 2019, 21:08:30
Dává možnost uživateli "john" vykonávat jakýkoliv příkaz, za jakéhokoliv uživatele
Aby to tazatel úplně dobře pochopil, asi by se slušelo říct, jak to funguje:
1. jsem přihlášený jako uživatel "mirda"
2. když napíšu do shellu "sudo -u lojza x", tak se prostě spustí program "sudo" s parametry "-u lojza x"
3. sudo má nastavenou takovou zvláštní vlastnost*, že ať ho spustí jakýkoli uživatel, běží sudo s právy roota - tj. jako kdyby ho spustil root
4. sudo se podívá do své konfigurace (sudoers), jestli má "mirda" právo spustit příkaz "x" pod účtem uživatele "lojza"
5. pokud ano, tak se sudo (běžící pod rootem) přepne, aby že běžel pod uživatelem "lojza"
6. když běží pod uživatelem "lojza", spustí program "x"

Tj. konečný efekt je úplně stejný, jakoby se uživatel lojza přihlásil do systému a do shellu napsal "x".

Z toho taky plyne, že pro účely konfigurace sudo je úplně jedno, jestli program "x" existuje nebo ne. Pokud neexistuje, tak se stane přesně to stejné, jako kdyby lojza napsal do shellu "x" - shell (resp. sudo) mu řekne, že program neexistuje.

Kód: [Vybrat]
$ sudo x
[sudo] password for mprymek:
sudo: x: command not found

Takže kdybysme chtěli být přesní, příkaz se nevykonává "za jiného uživatele", ale skutečně POD tím jiným uživatelem - sudo se na něj prostě přepne.

Taky z toho plyne odpověď na otázku "co se stane, když mám právo X spustit pod uživatelem Y, ale Y nemá právo spustit X" - no stane se přesně to, co se stane, když se Y pokusí spustit X. Protože přesně to se pod kapotou sudo děje.

* v tomhle kontextu to není důležité, proto to dál nerozvádím

A chápu to dobře, že služby jsou také uživatelé?
Ne. Unixové systémy znají uživatele a procesy. Každý proces běží pod nějakým uživatelem (typicky pod tím, který ten proces spustil, spíš výjimečně pod jiným).

"Služba" nemá v unixovém světě přesně daný význam, může být implementována různě. Každopádně je to proces.

kde zjistím, která služba má jaké oprávnění?
To už jsme si řekli, že je blbost, ale pokud by otázka byla "jak zjistím, jaký uživatel má jaké oprávnění", tak to je otázka, která nedává v unixovém světě moc smysl. Jednotlivé spustitelné soubory na disku mají u sebe poznačeno, kdo je může spustit. To je celé. (Resp. to je ten základ, na který se ptáš, kromě něj existují ještě úplně jiné světy, ale ty teď ignoruj)

K tomu sudo a skupině: napsal jste, že jsou nezávislé, ale pokud nemám skupinu sudo, pravidla se neuplatní. Nejsou tyhle věci v rozporu? Nebo můžu uživateli přidat skupinu, kterou vytvořila konfigurace sudoers bez toho, abych ji vytvořil v groups?
Nejsou v rozporu. Sudoers žádné skupiny nevytváří. Do sudeoers se dívá program sudo, nikdo jiný. A program sudo se dívá jestli uživatel "mirda" má právo něco udělat. Popřípadě se dívá, jestli má právo něco udělat někdo, kdo je členem nějaké skupiny a jestli je mirda jejím členem. Pokud tam bude pravidlo, že člen skupiny "admins" může spustit X, tak se sudo podívá, jestli je mirda členem admins. Pokud ta skupina neexistuje, tak logicky mirda jejím členem není -> mirda nemá právo spustit X (jinými slovy: tohle pravidlo se neuplatní pro nikoho).



Neber si to prosím osobně, ale silně bych doporučoval, aby ses tyhle věci snažil nastudovat sám a ptal ses až v případě, že něčemu nebudeš rozumět - tj. stylem:

Přečetl jsem si v knize tohle [...], pochopil jsem to takhle [...], když si to zkusím, stane se tohle [...] a přitom jsem čekal, že by se mělo stát [...]. Co jsem špatně pochopil?

Tohle je daleko lepší způsob, který ušetří čas tazateli i odpovídajícím.
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Mirek Prýmek 19. 02. 2019, 21:18:22
5. pokud ano, tak se sudo (běžící pod rootem) přepne, aby že běžel pod uživatelem "lojza"
Tady jsem jeste zapomnel dodat, ze prave a jedine root ma pravo se prepnout na jineho uzivatele. Tj. sudo tenhle krok muze udelat prave proto, ze bezi pod rootem (at uz ho spusti jakykoliv uzivatel).
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: k3dAR 19. 02. 2019, 21:23:02
Na to rootovi stačí daleko jednodušší a s heslem neotravující: su
to NEni preci pravda, su zada heslo uzivatele root a napr. v Debianu(kterej si zminoval), kdyz pri instalaci nezadam heslo pro roota tak se root ucet deaktivuje a nasledne zadaveneho uzivatele instalator pridava do skupiny sudo, tato varianta je totozna z tim jak to dela *buntu, tedy v takovem pripade se su nejen pta na heslo ale zadne heslo ten root nema a je deaktivovan...
samozrejme k aktivaci root uzivatele (a pouziti su) staci mu nastavit heslo (nebo jen unlocknout ucet pokud byl pretim rucne zamknut a heslo uz mel) pomoci "sudo passwd root"
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: k3dAR 19. 02. 2019, 21:27:17
sudo zacalo propagovat Ubuntu, osobne nechapu, proc ho vsude cpou a preferuji

Ubuntu sice zacalo propagovat, ale urcite nebylo prvni co s tim prislo, koneckoncu sudo je tu od roku 1980:
https://en.wikipedia.org/wiki/Sudo

Linux ma tu vyhodu, ze jde udelat stejna vec mnoha zpusoby. Ne kazde reseni je ale alegantni a "ciste"
spis ne kazde reseni muze pripadat elegantni tobe a naopak ;-)
pouzival sem su v minulem stoleti, ale prechod na sudo mi prisel elegantni, ma to vice moznosti nastaveni/privilegovani, moznosti automatickeho pusteni konkretniho programu bez nutnosti heslo zadat, atd, atd..
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Mirek Prýmek 19. 02. 2019, 21:37:38
su zada heslo uzivatele root
Su pozaduje heslo uzivatele, na ktereho se chces prepnout. Muzes si to sam vyzkouset:

Kód: [Vybrat]
$ sudo adduser test
Adding user `test' ...
Adding new group `test' (XXXX) ...
Adding new user `test' (XXXX) with group `test' ...
Creating home directory `/home/test' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:                                  <-  "abcdefg"
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for test
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y

$ su - test
Password:                                        <-  "abcdefg"
$ whoami
test
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Filip Jirsák 19. 02. 2019, 21:57:22
Tady jsem jeste zapomnel dodat, ze prave a jedine root ma pravo se prepnout na jineho uzivatele.
Ve skutečnosti to může udělat proces, který má capability CAP_SETUID (resp. CAP_SETGID pro změnu skupiny). Ale to už jsme opravdu světelné roky za původním dotazem.

A pak se ještě hodí dodat, že binárky su i sudo mají nastavený setuid bit, který znamená „spusť pod uživatelem, který je vlastníkem souboru“. Tím je zařízené, že su i sudo se vždy spustí pod rootem, ať je spustí kdokoli, a proto pak mohou provádět ty „kejkle“ a přepínat kontext uživatele. Není to tedy žádná speciální vlastnost těchto programů, že by měly nějaké speciální výsady vůči linuxovému jádru. Jenom využívají setuid bit a toho, že jsou díky němu vždy spuštěny pod rootem. Programy jako su nebo sudo si může napsat každý – ale setuid (a setgid) bit jsou velmi nebezpečná hračka, zejména pokud tu binárku vlastní root.
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: Mirek Prýmek 19. 02. 2019, 22:07:43
Ve skutečnosti to může udělat proces, který má capability CAP_SETUID (resp. CAP_SETGID pro změnu skupiny). Ale to už jsme opravdu světelné roky za původním dotazem.

A pak se ještě hodí dodat, že binárky su i sudo mají nastavený setuid bit, který znamená „spusť pod uživatelem, který je vlastníkem souboru“. Tím je zařízené, že su i sudo se vždy spustí pod rootem, ať je spustí kdokoli, a proto pak mohou provádět ty „kejkle“ a přepínat kontext uživatele. Není to tedy žádná speciální vlastnost těchto programů, že by měly nějaké speciální výsady vůči linuxovému jádru. Jenom využívají setuid bit a toho, že jsou díky němu vždy spuštěny pod rootem. Programy jako su nebo sudo si může napsat každý – ale setuid (a setgid) bit jsou velmi nebezpečná hračka, zejména pokud tu binárku vlastní root.
Do tehle veci jsem zamerne nezabihal, protoze to tazateli jenom zamota hlavu :)
Název: Re:Nejasnosti ohledně suoders
Přispěvatel: k3dAR 20. 02. 2019, 01:21:06
su zada heslo uzivatele root
Su pozaduje heslo uzivatele, na ktereho se chces prepnout. Muzes si to sam vyzkouset:
jasne, vychazel sem z toho ze tazatel resi jak byt/neby root a take ze "su" bez uvedeni konkretniho uzivatele se prepina na root, tedy pta se na heslo roota... nicmene pointa byla v tom ze nebyla pravda "heslem neotravující: su" :-)