Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - kouli

Stran: [1]
1
Software / Re:FreeCAD: vybraný objekt nelze použít
« kdy: 20. 01. 2025, 09:39:57 »
Zhruba před rokem jsem "přešel" z FreeCadu na OnShape a kdykoliv ho používám, tak lituju těch desítek zmařených hodin, které jsem marně bojoval s FreeCadem. Nepřeháním. Používám oba hodně podobně, ale prostě tam, kde ve FreeCadu vznikaly nesmyslné chyby, tak v tom samém to prostě v OnShape funguje. Je to (FreeCad) první software, kde jsem musel dát přednost komerční variantě (pro moje potřeby stačí licence zdarma) před OS. A myslím, že tento dotaz je podobný: ve FC jsem udělal sketch, z něj vytáhl těleso, na jedné z takto vzniklých stěn další sketch, další těleso.  A pak se vrátím k tomu prvnímu tělesu, udělám malou změnu v "jeho" sketchi a vše se rozbije... Nebo tyhle závislosti už vylepšili v té ostré verzi 1.0?

2
Bash umí asociativní pole. Takže stačí jedním spuštěním jq načíst "datový soubor" do asociativního pole (kde klíčem bude english_title a hodnotou ostatní data) a pak druhým spuštěním jq načíst "soubor s klíči" a v cyklu přes všechny klíče se podívat do toho asociativního pole a vypsat jeho hodnoty. I pro tisíce knih to bude trvat zlomek vteřiny.

Pokud není english_title unikátní, tak se to musí ohlídat a při načítání datového souboru ty hodnoty v asociativním poli přidávat (a nikoli jen přepisovat).

3
Server / Re:Volby pro SSH, aby vydržel dlouhodobě NAT
« kdy: 21. 02. 2023, 23:08:12 »
Jestli má to SSH spojení vydržet přes noc, tak je naopak potřeba ty TCP keep-alive nebo SSH alive vypnout, zachovat dostatečné time-outy na TCP a vedle toho eliminovat NATy a stavové firewally po cestě: buď pomocí tunelu (který ten keep-alive bude používat pro udržení NATu) nebo IPv6 (pokud po cestě není stavový firewall). Takto spojení s SSH serverem vydrží nejen přes noc, ale přežije třeba i usnutí notebooku, přenos do jiné lokality a pod. Když ten keep-alive uděláte v SSH a/nebo TCP, tak se to spolehlivě rozpadne třeba i při krátkém výpadku internetu.

4
Software / Cookie consent plugin?
« kdy: 21. 04. 2022, 09:36:02 »
Dnes už v podstatě každá návštěva webové stránky začíná aspoň jedním odkliknutím souhlasu s použitím cookies. Případně několika kliknutími, pokud si dám tu práci s jejich odmítnutím. Doporučíte mi prosím nějaký plugin (nejlépe Chrome), který ten nesouhlas "odkliká" za mne? Nebo neexistuje na to vyjádření (ne)souhlasu nějaký standard - třeba hlavička v HTTP? Nějaké pluginy jsem sice našel, ale třeba tu s tím má někdo více zkušeností, tak ať to zbytečně netestuji znovu...

5
Citace
Nginx root slozka pro daneho uzivatele prava 2750, user:www-data.
Nastavit php(etc), aby bezelo pod danym uzivatelem.

Díky za návrh, ale to je řešení "level 1", tak to mám v podstatě teď. Problém, že by aplikační uživatel (pod kterým je třeba to PHP) mohl při zapisování vytvořit soubory, které nebudou přístupny programátorovi (Pepa), to řeší tak, že oba uživatele sloučí do jednoho - PHP běží pod účtem Pepa. Ale já jsem nechtěl, aby aplikace (PHP) měla stejná práva jako programátor. Nechci, aby aplikace mohla třeba modifikovat sama sebe:

Citace
... že jeden Pepa administruje jednu aplikaci, ale i té musí umět omezit třeba zápis do souborů, které na server Pepa sám zapsal, tj. Pepa nemůže být přímo uživatelem app

6
Ahoj,

po nedávném článku o sandboxingu pomocí systemd jsem se vrátil k řešení jednoho staršího problému s přístupovými právy na linuxovém filesystému (dále FS). Pro tuto diskusi to ještě o něco zjednoduším:

  • na serveru má účet uživatel Pepa (pepa), klidně s plnohonotným přístupem přes SSH, domovský adresář /home/pepa,
  • Pepa provozuje na serveru www stránky, celou webovou aplikaci má třeba v /home/pepa/www,
  • provoz té aplikace zajišťuje nějaký HTTP server (Apache atd.) běžící pod účtem www-data,
  • Pepa chce uvnitř adresáře nastavit přístupová práva pro HTTP server (přesněji: pro uživatele www-data, dále už jen "uživatel Webdata"), a to odlišně pro různé soubory/složky: k některým souborům nemá Webdata přístup vůbec, některé může jen číst, některé i zapisovat atd.,
  • kromě Pepy a Webdata nemá do /home/pepa/www nikdo jiný přístup.

Výše uvedené lze obecně zajistit i pomocí "obyčejných" práv FS, nejjenoduššeji asi tak, že se uživateli www-data přidá doplňková skupina (supplementary group) pepa a uživatel Pepa si ve své složce www ohlídá přístupová práva pro skupinu.

Problém ale nastává v případě, že chceme uživateli Webdata povolit vytvářet soubory (třeba ve složce /home/pepa/www/upload). Povolit to lze, ale Pepa tím ztratí kontrolu nad touto složkou. Vlastníkem nově vytvořených souborů pak bude uživatel www-data a ten si jako vlastník může dělat se svými soubory cokoliv, včetně toho, že k nim Pepovi zamezí přístup (vytvoří složku /home/pepa/www/upload/not-for-pepa, uloží do ní nějaký soubor a zakáže k ní přístup všem kromě vlastníka - Pepa pak se složkou už nic neudělá.

Proti tomu nepomohou třeba ani posixové ACL, protože ať je na /home/pepa/www vytvoříme libovolně včetně těch default,  tak jakmile v nich povolíme uživateli Webdata vytvářet soubory, může si on (Webdata) se svými nově vytvořenými soubory jako vlastník dělat co chce, včetně toho, že všechna ACL odstraní.

Jediný, kdo dokáže takto vytvořené soubory obecně odstranit (nebo aspoň zpřístupnit), je uživatel root. Jenže původní myšlenka byla umožnit Pepovi správu svého domovského adresáře včetně jeho webové aplikace.

Napadá vás, jak to řešit? V Linuxu je v tomto jen dvoúrovňová hierarchie: uživatel root je nadřazený všem ostatním. Já bych potřeboval, aby byl Pepa nějak "nadřazen" uživateli Webroot. Neuniklo mi nějaké jiné řešení? Vlastníka souboru při jeho vytváření podle mne nelze nijak ovlivnit (na rozdíl od skupiny - set-gid).

Dalo by se to nějak hezky řešit právě přes systemd a jeho sandboxing? Třeba takový Docker to vlastně umí (hierarchie: root na fyzickém serveru -> root v kontejneru -> ostatní uživatelé v kontejneru) a stačí mu na to jen jmenné prostory jádra.

Příklad jsem původně zjednodušil pro lepší vysvětlení. Ve skutečnosti to ale většina z nás provozuje na serverech složitěji: například běží jeden Nginx (uživatel www-data, jediný Nginx je zde např. kvůli sdílení jedné IP adresy pomocí TLS SNI) a ten komunikuje s několika dalšími "aplikačními" procesy (třeba WSGI, CGI), z nich by měl idálně každý běžet pod odděleným uživatelem (app1, app2, ...), aby se co nejméně ovlivňovaly (čti: aby si vzájemně neviděly do svých dat). A kód/data těch několika webů spravuje jeden nebo více uživatelů jako byl Pepa (ještě se dá zjednodušit, že jeden Pepa administruje jednu aplikaci, ale i té musí umět omezit třeba zápis do souborů, které na server Pepa sám zapsal, tj. Pepa nemůže být přímo uživatelem app). Další zjednodušení může být v tom, že uživateli www-data nebude potřeba povolit vytváření souborů, to budou smět jen (dle nastavení) uživatelé app.

7
A víte o tom, že stačí napsat mezeru na začátku příkazu, aby se tento příkaz neuložil do historie? Tedy při "běžném" nastavení $HISTCONTROL. To používám častěji, než mazání historie celé session.

Stran: [1]