Nejasnosti ohledně suoders

Re:Nejasnosti ohledně suoders
« Odpověď #15 kdy: 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í?


Re:Nejasnosti ohledně suoders
« Odpověď #16 kdy: 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.
« Poslední změna: 19. 02. 2019, 21:12:19 od Mirek Prýmek »

Re:Nejasnosti ohledně suoders
« Odpověď #17 kdy: 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).

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Nejasnosti ohledně suoders
« Odpověď #18 kdy: 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"

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Nejasnosti ohledně suoders
« Odpověď #19 kdy: 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..


Re:Nejasnosti ohledně suoders
« Odpověď #20 kdy: 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

Re:Nejasnosti ohledně suoders
« Odpověď #21 kdy: 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.
« Poslední změna: 19. 02. 2019, 22:02:47 od Filip Jirsák »

Re:Nejasnosti ohledně suoders
« Odpověď #22 kdy: 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 :)

k3dAR

  • *****
  • 2 838
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Nejasnosti ohledně suoders
« Odpověď #23 kdy: 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" :-)