Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.

Autor Téma: X11 aplikace pod rootem a "xhost +"  (Přečteno 1491 krát)

Martin B.

  • Návštěvník
  • *
  • Příspěvků: 11
    • Zobrazit profil
X11 aplikace pod rootem a "xhost +"
« kdy: 02 Březen 2020, 16:07:43 »
Zdravím, chci se zeptat jaké je bezpečnostní riziko příkazu "xhost +"? mluví se o tom na zahraničních webech. Používám vzdáleně (připojení přes NX - Nomachine) radioamatérský program Linrad a ten potřebuje běžet pod rootem. Jenže, když se v terminálu přihlásím jako root (su), tak program nejde spustit, terminál hodí hlášku, že nemá přístup k X serveru. Opravit se to dá tím
Kód: [Vybrat]
xhost + před přepnutím na roota, potom to funguje. Je nějaké riziko při tomto postupu, nebo se to dá řešit jinak? Nic jiného, co je na tento problém doporučované mi nefunguje. Na počítači je jenom jeden normální uživatel a jeden root.
Děkuji

JirkaZ

  • Stálý člen
  • ***
  • Příspěvků: 683
    • Zobrazit profil
Re:X11 aplikace pod rootem a "xhost +"
« Odpověď #1 kdy: 02 Březen 2020, 18:59:41 »
1) Linrad je konzolový program, ne?

2) proč musí běžet pod rootem? Pokud se nedostane k USB, tak je třeba pro dané zařízení vytvořit a uložit pravidlo do /etc/udev/rules.d/

3) Linrad je hodně starý a nejspíš už nepodporovaný. Pro SDR jsou mnohem novější programy. Nebylo by to řešení? O jaké konkrétně jde zařízení?

Martin B.

  • Návštěvník
  • *
  • Příspěvků: 11
    • Zobrazit profil
Re:X11 aplikace pod rootem a "xhost +"
« Odpověď #2 kdy: 02 Březen 2020, 19:34:00 »
1) Linrad běží v grafickém prostředí X11.
2) Ano, nejen že se bez roota nedostane k USB, ale jsou tam i další omezení. Sám autor Linradu doporučuje používat to pod rootem.
3) Možná je starý, ale stále je vyvíjený a podporovaný. Jeho autor na něm stále pracuje. Nenašel jsem nic jiného, co by s přijímačem Perseus fungovalo tak skvěle jako Linrad. Včetně pořizování širokých nahrávek pásma apod. Perseus v něm funguje / jde s ním dělat více věcí snad ještě lépe než v originálním programu pro Windows.

juwa2

  • Závislák
  • ****
  • Příspěvků: 3717
    • Zobrazit profil
Re:X11 aplikace pod rootem a "xhost +"
« Odpověď #3 kdy: 02 Březen 2020, 21:00:28 »
A jedeš tedy na X nebo waylandu?
Pokud na X, tak proč to jednoduše nespustíš pomocí pkexec?

JirkaZ

  • Stálý člen
  • ***
  • Příspěvků: 683
    • Zobrazit profil
Re:X11 aplikace pod rootem a "xhost +"
« Odpověď #4 kdy: 02 Březen 2020, 21:27:32 »
1) Linrad běží v grafickém prostředí X11.
2) Ano, nejen že se bez roota nedostane k USB, ale jsou tam i další omezení. Sám autor Linradu doporučuje používat to pod rootem.
3) Možná je starý, ale stále je vyvíjený a podporovaný. Jeho autor na něm stále pracuje. Nenašel jsem nic jiného, co by s přijímačem Perseus fungovalo tak skvěle jako Linrad. Včetně pořizování širokých nahrávek pásma apod. Perseus v něm funguje / jde s ním dělat více věcí snad ještě lépe než v originálním programu pro Windows.

1) xlinrad(64) ano, linrad sám ne, takže šlo o nepřesnou definici programu

2) zřejmě jde o http://www.sm5bsz.com/linuxdsp/install/all/distro-independent.htm - no budiž, ale program vyžadující práci pod rootem bych asi nechtěl

3) Perseus je high end SDR, takže pokud jsou opravdu zkušenosti dle popisu, tak se asi nedá nic dělat. Nicméně pořád bych to vnímal jako potenciální bezpečnostní riziko a snažil bych se zjistit, proč (kromě práv k USB portu) to nejde pod uživatelem... Ten autorův článek je z roku 2009 a od té doby se mohlo leccos změnit (především na straně OS).

Martin B.

  • Návštěvník
  • *
  • Příspěvků: 11
    • Zobrazit profil
Re:X11 aplikace pod rootem a "xhost +"
« Odpověď #5 kdy: 02 Březen 2020, 21:46:37 »
Jirko,
1) ano omlouvám se za nepřesnost, opravdu se jedná o xlinrad64.
2) Poslední verze je z 2018: http://www.sm5bsz.com/linuxdsp/linrad.htm
3) Pro Persea se mi to opravdu jeví jako to nejlepší. Je to možná tím, že sám autor toho programu je vášnivý DXer (to je označení pro člověka - radioamatéra, který se věnuje příjmu vzdálených a slabých signálů) a tak se snaží dát tomu programu maximum. Např. na SDR Cloud IQ od RF Space (který by v tom sice tak měl jít) zase ale používám jiný software.

Je tu možnost zkusit kontaktovat přímo autora, který prý v pohodě komunikuje, to ale beru až jako tu úplně poslední možnost.

Poradíte prosím tedy jak vložit to pravidlo pro Persea, aby k němu byl přístup i mimo root? Pak bych ještě asi musel změnit cesty ke složce s nahrávkami, která by se přesunula do /home běžného uživatele, ale to bych už zvládl sám.

Otázka je ale pořád stejná, jak moc je nebezpečné to xhost + ? Běžně se to na tento problém doporučuje.


JirkaZ

  • Stálý člen
  • ***
  • Příspěvků: 683
    • Zobrazit profil
Re:X11 aplikace pod rootem a "xhost +"
« Odpověď #6 kdy: 02 Březen 2020, 22:22:11 »
...
Poradíte prosím tedy jak vložit to pravidlo pro Persea, aby k němu byl přístup i mimo root?

Tímto se změní pouze přístup k USB portu Persea tak, aby tam mohl jakýkoliv uživatel:

1) připojit Perseus k USB

2) v konzoli zjistit jeho VID a PID pomocí

Kód: [Vybrat]
lsusb
Pravděpodobně bude VID=04b4 a PID=325c; toto je použito v příkladu níže. Pokud budou hodnoty jiné, je třeba je v textu z příkladu změnit.

3) v adresáři /etc/udev/rules.d/ vytvořit textový soubor s názvem třeba 50-SDR_perseus.rules a obsahem

Kód: [Vybrat]
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="325c", GROUP="users", MODE="0660"
Předpokládá se přitom, že uživatel je ve skupině users. Bod 3) je možné udělat pouze jako root (vytváří se soubor v systémovém, uživateli pro zápis nepřístupném adresáři).

4) nejlépe odpojit Perseus, restartovat PC a připojit ho znovu, i když by pomocí udevadm měl udev jít restartovat samostatně, ale nemusí to být spolehlivé a hlavně je to pokaždé jinak...

« Poslední změna: 02 Březen 2020, 22:41:00 od JirkaZ »

Martin B.

  • Návštěvník
  • *
  • Příspěvků: 11
    • Zobrazit profil
Re:X11 aplikace pod rootem a "xhost +"
« Odpověď #7 kdy: 05 Březen 2020, 12:47:59 »
Děkuji, vyzkouším.
Jinak, všiml jsem si, že to jde i když jsem to vyzkoušel takto:
Kód: [Vybrat]
xhost +local:rootTím se X server zpřístupní jenom rootovi a jenom jako lokálnímu (nebo přes vzdálenou plochu), nikoliv přes síť.
To by snad mohlo být dostatečně bezpečné. Tím spíše když na routeru je do širokého internetu u tohoto konkrétního PC povolen jenom port na kterém běží NoMachine a UDP port pro synchronizaci hodin. Nic víc. Na známé WAN IP je pak povolen ještě SSH port. Teoreticky to tedy ani nemá jak kdo napadnout? Navíc právo přístupu x serveru jde opět vždy odebrat příkazem xhost - pro všechny anebo xhost - local:root pro roota. Po každém restartu je stejně x server pro uživatele nepřístupný, pokud se zmíněným příkazem přístup nepovolí. Možná nějaké závažné bezpečnostní riziko přehlížím, ale asi bych to také tolik zbytečně nehrotil.
« Poslední změna: 06 Březen 2020, 11:42:29 od Martin B. »

Martin B.

  • Návštěvník
  • *
  • Příspěvků: 11
    • Zobrazit profil
Re:X11 aplikace pod rootem a "xhost +"
« Odpověď #8 kdy: 08 Březen 2020, 17:49:53 »
Jenom mimo téma ještě upřesním tu aktualizaci Linradu. Vypadá to, že autor SW do toho šťourá a Linrad aktualizuje a vylepšuje doslova každý týden. Pro mě samotného je to překvapení. Já jsem včera na zmíněném PC dělal reinstal OS a pak jsem si stahoval aktuální zdroják Linradu pomocí SVN.
Kód: [Vybrat]
./configure i make proběhlo bez problému. Bohužel po nastavení parametrů a před otevřením okna se spektrem Linrad vždy spadl (systém ho shodil kvůli neoprávněného přístupu do paměti - sigsegv). Začal jsem pátrat a zjistil jsem, že poslední aktualizace byly před třemi a šesti dny a nejspíš je tam v nich tedy chyba. Nakonec jsem tedy tuto verzi smazal a stáhl zdroje z 23.2 (revize 949)
https://sourceforge.net/p/linrad/code/949/tree tato verze chodí bez problému.

« Poslední změna: 08 Březen 2020, 17:52:01 od Martin B. »

Martin B.

  • Návštěvník
  • *
  • Příspěvků: 11
    • Zobrazit profil
Re:X11 aplikace pod rootem a "xhost +"
« Odpověď #9 kdy: 08 Březen 2020, 18:07:03 »
jinak ještě doplním, že Linrad se neinstaluje. Spouští se ./(x)linrad(64) přímo v té složce se zdrojovým kódem, kde předtím proběhlo ./configure a make (x)linrad(64). Jediné co je potřeba nainstalovat do systému jsou ovladače k SDR, knihovny USB a nějaké pomocné programy (gcc, nasm atd...) O to, co je ke spuštění potřeba si Linrad během ./configure  --with-help sám řekne. To se mi na tom také líbí, že je to jednoduché a přehledné:-)