Atsutane's Bloghttps://freethoughts.de/2020-12-26T16:07:00+01:00polkit und systemd System Units2020-12-26T16:07:00+01:002020-12-26T16:07:00+01:00Thorsten Töppertag:freethoughts.de,2020-12-26:/polkit-und-systemd-system-units.html<p>Was in diesem Post als System Unit bezeichnet wird, ist eine systemd Unit deren Prozesse im <code>system.slice</code> laufen, was den meisten Service Units entspricht.
Unter systemd haben Benutzer standardmäßig nicht die Rechte den Status solcher Units via systemd selbst zu beeinflussen.
Es ist jedoch möglich Benutzern oder Gruppen für …</p><p>Was in diesem Post als System Unit bezeichnet wird, ist eine systemd Unit deren Prozesse im <code>system.slice</code> laufen, was den meisten Service Units entspricht.
Unter systemd haben Benutzer standardmäßig nicht die Rechte den Status solcher Units via systemd selbst zu beeinflussen.
Es ist jedoch möglich Benutzern oder Gruppen für bestimmte Befehle dies mittels polkit zu erlauben.</p>
<p>systemd prüft bei der Ausführung der meisten Befehle mittels polkit, ob der den Befehl initierende Benutzer dies darf, bei Befehlen wie <code>systemctl status</code> oder <code>systemctl show</code> geschieht dies nicht.
Für die Befehle zum Start, Stop oder Neustart einer Unit kann man diese Befugnis sehr spezifisch erteilen, bei Befehlen die über eine andere Policy gehandhabt werden ist eine spezifische Einschränkung nicht möglich, zum Beispiel das De-/Aktivieren von Units.
Bei <code>systemctl start|stop|restart</code> wird <code>org.freedesktop.systemd1.manage-units</code> verwendet, für <code>systemctl enable|disable</code> ist es <code>org.freedesktop.systemd1.manage-unit-files</code>, auch wird im systemd Code letzterer beider Befehle nicht nach so vielen spezifischen Details gefragt wie bei den ersten drei.</p>
<p>Ein beispielhafter Anwendungsfall für solche Regeln wäre es, wenn eine Benutzergruppe auf einem Entwicklungsserver in keiner Form als root operieren darf.
Den Entwicklern soll es jedoch möglich sein, die von ihnen entwickelte Software auf den Server zu deployen und exakt in der Form auszuführen, in der die Software später in einer produktiven Landschaft operiert.
Hierzu bedürfe es also einer globalen Service Unit und einer polkit Regel, die es den Benutzern erlaubt den Service via <code>systemctl start|stop|restart</code> zu handhaben.
Ob dies nun menschliche Benutzer oder der Benutzer einer continuous integration Lösung ist, der die Ergebnisse des Builds deployed sei dahingestellt, auf magische Art und Weise geschieht das Deployment natürlich auch immer absolut korrekt.</p>
<p>Die Service Unit <code>foobar.service</code></p>
<div class="highlight"><pre><span></span><code><span class="k">[Unit]</span>
<span class="na">Description</span><span class="o">=</span><span class="s">foobar is the most creative name for anything in the whole universe.</span>
<span class="k">[Service]</span>
<span class="na">Type</span><span class="o">=</span><span class="s">simple</span>
<span class="na">ExecStart</span><span class="o">=</span><span class="s">/opt/foobar/executable</span>
<span class="na">User</span><span class="o">=</span><span class="s">foobar</span>
<span class="na">Group</span><span class="o">=</span><span class="s">foobar</span>
<span class="c1"># Imagine lots of other useful settings here</span>
<span class="k">[Install]</span>
<span class="na">WantedBy</span><span class="o">=</span><span class="s">multi-user.target</span>
</code></pre></div>
<p>Die dazugehörige polkit Regel <code>/etc/polkit-1/10-foobar.rules</code></p>
<div class="highlight"><pre><span></span><code><span class="nx">polkit</span><span class="p">.</span><span class="nx">addRule</span><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">action</span><span class="p">,</span> <span class="nx">subject</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">action</span><span class="p">.</span><span class="nx">id</span> <span class="o">==</span> <span class="s2">"org.freedesktop.systemd1.manage-units"</span> <span class="o">&&</span>
<span class="p">(</span><span class="nx">subject</span><span class="p">.</span><span class="nx">isInGroup</span><span class="p">(</span><span class="s2">"developer"</span><span class="p">)</span> <span class="o">&&</span> <span class="nx">action</span><span class="p">.</span><span class="nx">lookup</span><span class="p">(</span><span class="s2">"unit"</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"foobar.service"</span> <span class="o">&&</span>
<span class="p">(</span><span class="nx">action</span><span class="p">.</span><span class="nx">lookup</span><span class="p">(</span><span class="s2">"verb"</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"start"</span> <span class="o">||</span>
<span class="nx">action</span><span class="p">.</span><span class="nx">lookup</span><span class="p">(</span><span class="s2">"verb"</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"stop"</span> <span class="o">||</span>
<span class="nx">action</span><span class="p">.</span><span class="nx">lookup</span><span class="p">(</span><span class="s2">"verb"</span><span class="p">)</span> <span class="o">==</span> <span class="s2">"restart"</span><span class="p">)))</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">polkit</span><span class="p">.</span><span class="nx">Result</span><span class="p">.</span><span class="nx">YES</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">});</span>
</code></pre></div>
<p>Der für granularere Restriktion ist neben der Gruppen auch der Benutzername als <code>subject.user</code> verfügbar.</p>X4: Foundations - Notizen2019-12-31T13:12:00+01:002019-12-31T13:12:00+01:00Thorsten Töppertag:freethoughts.de,2019-12-31:/x4-foundations-notizen.html<p>Zwar liegen hier seit Monaten mehrere fertige Artikel technischer Natur auf der Platte, nur kann ich davon noch nichts veröffentlichen, daher zu Abwechslung mal etwas aus dem Unterhaltungssektor.</p>
<p>Vor einigen Tagen habe ich mir X4: Foundations gekauft, da der Einstieg im ersten Szenario etwas anstrengend ist stelle ich nun als …</p><p>Zwar liegen hier seit Monaten mehrere fertige Artikel technischer Natur auf der Platte, nur kann ich davon noch nichts veröffentlichen, daher zu Abwechslung mal etwas aus dem Unterhaltungssektor.</p>
<p>Vor einigen Tagen habe ich mir X4: Foundations gekauft, da der Einstieg im ersten Szenario etwas anstrengend ist stelle ich nun als Backup meiner Notizen die - subjektiv betrachtet - wichtigsten in den Blog. Wahrscheinlich ist es wie mit den Vorgängern, in ein paar Wochen ist die Luft mit einem millionenschweren Selbstläuferunternehmen raus und Ende des Jahres wird dann von Grund auf neu angefangen. Nur muss ich mit diesem Post nach der nächsten längeren Pause nicht ewig in meinen Notizbüchern/Dateien suchen.</p>
<p>Hinweis: Alle Informationen meinerseits beziehen sich auf Version <em>2.60 HOTFIX 2</em> (GOG) und können mit vorherigen oder folgenden Versionen völlig nutzlos sein.</p>
<ul>
<li>Der wichtigste Hinweis zu Beginn des Spiels: Über die Taste <strong>H</strong> erreicht man die Hilfstutorials die man zu Beginn braucht und die man auch spielen sollte. In den Patch Notes für die kommende Version 3.00 an wird an mehreren Stellen eine Verbesserung der Einführung und der Tutorials aufgeführt.</li>
<li>Zu Beginn sind Missionen der Argonen wichtig um schnell ein Ansehen von 10 zu erreichen und günstiger effektive Mining Schiffe kaufen zu können.</li>
<li>Einstieg ins Mining: Es lohnt sich kleine Schürfer der Klasse M zum sammeln von Methan Gas zu nutzen und diese über die Gebiete der verschiedenen großen Fraktionen zu verteilen. Dadurch steigt langsam mit jeder dieser Fraktionen das Ansehen und eine Marktsättigung tritt nicht zu schnell ein. Manche Schiffe können auch nur im selben Sektor Ressourcen abbauen und verkaufen, andere Nachbarsektoren mitversorgen und im Bestfall global operieren, wegen des ersten Falles wäre ein Schiff der Klasse L zu Beginn gefährlich, da es schnell zu einer Marktsättigung führt. Warum man mal auch zu Beginn des Spiels einen absoluten Experten, dann aber etliche Male einen Neueinsteiger bekommt scheint ein generell offenes Fragezeichen zu sein.</li>
<li>Fortgeschrittenes Mining: Wenn Schiffe später in der Lage sind in multiplen Sektoren Bergbau und Handel zu betreiben lohnen sich Schiffe der Kategorie L zum sammeln von Nvidium und Silizium. Erz bringt nur wenig Gewinn, dafür ist die Menge der möglichen Abnehmer größer. Damit eine Fraktion eine stabile Flottenstärke hat kann man dies mit Erz unterstützen, ansonsten lohnt es sich nur für eigene Stationen im späteren Spiel.</li>
<li>Wer zu Beginn fix ein paar Millionen möchte für den kann ich den Beitrag <a href="https://x4.my-promotion.at/die-ersten-millionen/">Die ersten Millionen</a> empfehlen. Eine kurze Anleitung wie man im Xenon Sektor <em>Fehlerhafte Logik VII</em> (zu erreichen durch die Verbindung von <em>Gesegnete Vision</em> zu <em>Fehlerhafte Logik I</em> und dort einem Highway im Süden), im "westlichen" Teil, ein größeres Schlachtschiff findet und es kapert. (Achtung: Es kann auch links "außerhalb" der initialen Karte liegen). Ich rate jedoch davon ab, das Schiff umgehend zu verkaufen. Es ist besser es zur Schiffswerft in Argon Prime zu schicken, dort die Marine Einheit wieder an Bord zu nehmen und die Ausstattung(Antrieb/Software) <em>und</em> die Verbrauchsgüter zuerst zu verkaufen. Der Wert solcher Dinge, wurde zumindest bei mir nicht bei jedem Schiff dem Verkaufspreis angerechnet, bei diesem Schiff geht einem dann doch ein siebenstelliger Betrag durch die Finger. Damit das Schiff das Ziel erreicht am Besten speichern und nicht auf die Karte schauen, so nutzt man die Spielmechanik aus, dass unbeachtete Schiffe sich nicht "normal" Verhalten sondern ungebremst durch Sprungtore/Verbindugen rasen.</li>
</ul>
<h2>Sektoren für das Mining</h2>
<ul>
<li>In Profitabler Handel (TEL kontrolliert) gibt es viele Xenon und Kha'ak Angriffe, allerdings hatte ich hier mit einem Mangel an Abnehmern für Methan und Silizium noch keine Probleme.</li>
<li>Dreieinigkeit VII ist ein PAR kontrollierter Sektor in dem ein Klasse M Mineralienschürfer in Ruhe mit Silizium für eine Verbesserung der Beziehung zur Fraktion arbeiten kann.</li>
<li>Gesegnete Vision ist ein HOP kontrollierter Sektor, welcher mit <em>Fehlerhafte Logik</em> verbunden und stark umkämpft ist. Hier lohnt es sich sowohl mit Mineralien als auch Methan zu arbeiten.</li>
<li>Zweiter Kontakt II Unruheherd ist mit mehreren Fraktionen versorgt, ein kleiner Händler mit Energiezellen ist hier recht zu Beginn zwecks Gewinn von Ansehen praktisch.</li>
<li>Ianamus Zura IV ist der Teladi Hauptsektor direkt in dem eigentlich durchgehend mit Xenon gekämpft wird. Es lohnt sich hier ein billiges Schiff in die Handelsstation zu stellen, schlicht um mit der später zur Verfügung stehenden Teleportation die Fraktionsvertretetung unkompliziert zu erreichen.</li>
</ul>
<h2>Nach den ersten zehn Millionen: Konstruktionsaufträge</h2>
<p>Wenn man mindestens zehn Millionen Credits auf dem Konto hat kommt man mit Bauaufträgen schnell voran.</p>
<ul>
<li>Es lohnt sich sehr die Hauptquest mit dem freundlichen Boronen Boso Ta früh abzuschließen, die Belohnungen führen hier zu einer gewissen Kostenreduktion bzgl. Pläne für künftige Stationen und generell entspannterem Vorgehen im Spiel.</li>
<li>Regelmäßig auf dem Superhighway zwei Runden drehen und jeden Auftrag annehmen auch wenn man die Teile noch nicht alle bauen kann. Anschließen nach Möglichkeit direkt die notwendigen Bauplätze in der Nähe von Toren kaufen, schlicht damit dort später nicht eine andere Station den Platz blockiert. <strong>Achtung:</strong> Man mag die Karte von oben sehen und glauben, das richtige Gebiet eingegrenzt zu haben, aber das Spiel spielt in einem dreidimensionalen Raum insofern die Y-Achse nicht vergessen und die Karte drehen.</li>
<li>Bei den Ressourcen nicht sparen und das globale Limit für den Einkaufspreis bei 100% lassen und lieber 10k Credits nehr hinterlegen als vorgeschlagen wird. Bei mir sind schon mehrere Male Bauaufträge hängen geblieben weil für die letzte Energiezelle ein Credit gefehlt hat (95% Limit und passgenau Credits hinterlegt). Bemerkt man dies nicht darf man dann wieder 50k für das Mieten des Bauschiffs zahlen.</li>
<li>Der Abschluss der Konstruktionen dauert natürlich seine Zeit, aber wenn man 5,5 Millionen Gewinn machen kann ohne viel aktiven Aufwand ist es eine wertvolle Angelegenheit. Die Höhe der Belohnungen nimmt auch zu, ich habe gerade mehrere Aufträge für Verteidigungsstationen, die mich je 2 Millionen Credits gekostet haben, für die ich jedoch mehr als 15 Millionen ausgezahlt bekommen werde.</li>
<li>Meiner Meinung nach lohnt sich ein eigenes Konstruktionsschiff zu Beginn nicht. Verteilt man über die Sektoren hinweg an jeder kritischen speziellen Station Satelliten findet man immer eines, welches man für 50K Credits anheuern kann. Mehrere Millionen für ein eigenes auszugeben, das auch nur an einer Stelle gleichzeitig arbeiten kann ist vielleicht im späten Spiel sinnvoll, wenn regelmäßig eine Station erweitert werden muss.</li>
<li><strong>Vorsicht:</strong> Wenn die Stationen fertig sind sie Eigentum des Auftraggebers, eine Station zur Produktion von Waren muss man also nicht mit umfangreichen Verteidigungsmaßnahmen versorgen, sofern dies nicht gewünscht ist.</li>
<li><strong>Eigene Stationen</strong>: Eine kleine Werft in umkämpften Gebieten anzubieten lohnt sich, vor allem wenn man mit den sich bekämpfenden Fraktionen befreundet ist. <em>*hüstel*</em>
Es dauert zwar eine Weile bis man die Credits wieder hat, aber solange sich mindestens zwei Streiten kommt kontinuierlich Geld, meist aber auch zusätzlich von unbeteiligten Fraktionen. Hierzu muss man neben den Blaupausen der Schiffe auch die der Ausrüstungsteile besitzen, je größer die Auswahl, desto mehr wird ausgegeben. Da die Einkäufe, Reparaturen und Bauaufträge komplett von der KI Situation abhängen lässt sich hier natürlich keine regelmäßiger Gewinn-/Umsatz berechnen.</li>
<li>Bei einer Werft sollte man zur Gewinnmaximierung auch zeitnah nach und nach die Ressourcen selbst bereitstellen können und die Module an der selben Station oder in deren Nähe anbringen. Ohne diese Eigenproduktion geht doch viel Geld verloren. Man kann natürlich den Spieß auch umdrehen und mit den Modulen zur Ressourcenverarbeitung anfangen.</li>
</ul>Postfix: Reduzieren von eingehenden Spam-Mails2018-06-13T20:42:00+02:002018-06-13T20:42:00+02:00Thorsten Töppertag:freethoughts.de,2018-06-13:/postfix-reduzieren-von-eingehenden-spam-mails.html<p>Der SMTP Server <a href="http://www.postfix.org">Postfix</a> bietet sehr umfangreiche Möglichkeiten zur Reduzierung der Anzahl von Spam-Mails die es bis zum User-Account schaffen. Dieser Artikel befasst sich mit dem Szenario wie man bei verschiedenen Diensten im Internet eine spezielle E-Mail Adresse verwenden und nach einem Leak schon durch Postfix an diese Adresse gesendete …</p><p>Der SMTP Server <a href="http://www.postfix.org">Postfix</a> bietet sehr umfangreiche Möglichkeiten zur Reduzierung der Anzahl von Spam-Mails die es bis zum User-Account schaffen. Dieser Artikel befasst sich mit dem Szenario wie man bei verschiedenen Diensten im Internet eine spezielle E-Mail Adresse verwenden und nach einem Leak schon durch Postfix an diese Adresse gesendete E-Mails verwerfen lassen kann.</p>
<p>Mit der Einstellung <code>recipient_delimiter = -</code> in der <strong>/etc/postfix/main.cf</strong> entsteht die Möglichkeit E-Mail Adressen nach dem Schema <em>user-foobar@domain.tld</em> zu verwenden. E-Mails welche an diese Adresse gesendet werden, landen im Postfach von <em>user</em>, das <em>-foobar</em> in diesem Schema wird an dieser Stelle ignoriert. Die E-Mail selbst verliert dies in ihrem Empfängerfeld jedoch nicht. Dies ermöglicht es mit den meisten E-Mail Clients recht unkompliziert eingehende E-Mails von unterschiedlichen Accounts, welche man im Netz hat, zu filtern. Die E-Mails können automatisch in gesonderte Ordner im Postfach verschoben oder direkt gelöscht werden.</p>
<p>Angenommen man registriert sich beim Onlineshop <em>https://alles-viel-zu-teuer.tld</em> und verwendet als E-Mail Adresse <em>user-vielzuteuer@domain.tld</em>. Nun lassen sich im E-Mail Client mit Filterregeln an diese Adresse gesendete E-Mails wie z.B. Bestellbestätigungen direkt in einen separaten Ordner verschieben. Kommt es nun dazu, dass diese E-Mail Adresse nicht länger allein dem Unternehmen hinter dem Onlineshop bekannt ist, dauert es ja sicherlich nicht lange bis die ersten Spam-Mails ankommen.</p>
<p>Um gegen dieses Problem vorzugehen muss man im Onlineshop die E-Mail Adresse des Accounts ändern, zum Beispiel zu <em>user-vielzuteuernachdemleak@domain.tld</em>. Anschließend kann man auf Server Ebene E-Mails, welche an die ursprüngliche Adresse gesendet werden, umgehend verwerfen. Hierzu legt man eine Textdatei <strong>/etc/postfix/reject_rules</strong> an und fügt solch eine Regel ein:</p>
<div class="highlight"><pre><span></span><code>/^\s*To:.*user-vielzuteuer@/ DISCARD
</code></pre></div>
<p><em>DISCARD</em> legt fest, dass eingehende E-Mails, welche an <em>Max Mustermann <user-vielzuteuer@domain.tld></em>, <em>user-vielzuteuer@domain.tld</em> oder die Adresse in einer Liste von Empfängern gesendet wurden akzeptiert aber umgehend verworfen werden. Der sendende Server "glaubt" die E-Mail wurde zugestellt und entfernt sie aus der Liste der zu sendenden E-Mails. Alternativ kann man statt <em>DISCARD</em> die Aktion <em>REJECT</em> festlegen, die E-Mail wird abgewiesen und an die E-Mail Adresse von welcher die Spam E-Mail (angeblich) kam wird eine entsprechende E-Mail geschickt.</p>
<p>Hat man die Regel festgelegt lässt mit <code>postmap -q "To: Foo Bar <user-vielzuteuer@domain.tld>" regexp:/etc/postfix/reject_rules</code> in der Shell prüfen ob der Reguläre Ausdruck dieses Header Feld erkennt und die Regel funktioniert.</p>
<p>Als Nächstes fügt man in der <strong>/etc/postfix/main.cf</strong> diese Zeile hinzu:</p>
<div class="highlight"><pre><span></span><code>header_checks = regexp:/etc/postfix/reject_rules
</code></pre></div>
<p>Abschließend startet man den Postfix Daemon neu oder lädt mit dem Befehl <code>postfix reload</code> die Konfiguration direkt neu.</p>Neuanfang mit Pelican2018-05-12T21:00:00+02:002018-05-12T21:00:00+02:00Thorsten Töppertag:freethoughts.de,2018-05-12:/neuanfang-mit-pelican.html<p>Die letzten Jahre war es hier recht ruhig. Das hatte verschiedene Gründe, unter anderem weil ich mich mit dem zuvor verwendeten <a href="http://octopress.org/" title="octopress">octopress</a> nicht wirklich anfreunden konnte. Ruby ist keine Sprache, welche ich häufig verwende und da octopress nach Aktualisierungen auf meinen Systemen leider häufiger Probleme mit inkompatiblen Gems hatte, war …</p><p>Die letzten Jahre war es hier recht ruhig. Das hatte verschiedene Gründe, unter anderem weil ich mich mit dem zuvor verwendeten <a href="http://octopress.org/" title="octopress">octopress</a> nicht wirklich anfreunden konnte. Ruby ist keine Sprache, welche ich häufig verwende und da octopress nach Aktualisierungen auf meinen Systemen leider häufiger Probleme mit inkompatiblen Gems hatte, war mir dann irgendwann auch die Lust vergangen.</p>
<p>Nun ein Neuanfang, diesmal mit <a href="https://getpelican.com" title="Pelican">Pelican</a>, welches auf Python setzt, eine Sprache die ich deutlich häufiger verwende. Wenn es hier zu Inkompatibilitäten kommt muss ich hoffentlich deutlich weniger Zeit investieren. Abgesehen davon war es hier mit dem Standardtheme auch recht einfach Aufrufe externer HTTP Server zu entfernen.</p>irssi, screen and urxvt - the urgency hint2013-05-14T22:12:00+02:002013-05-14T22:12:00+02:00Thorsten Töppertag:freethoughts.de,2013-05-14:/irssi-screen-and-urxvt-the-urgency-hint.html<p>A lot of i3 users miss a workspace notification when they are being highlighted in an IRC channel, in order to prevent people from getting tired of explaining this short setup over and over again I wrote this article in my old blog. As it's still visited a lot it …</p><p>A lot of i3 users miss a workspace notification when they are being highlighted in an IRC channel, in order to prevent people from getting tired of explaining this short setup over and over again I wrote this article in my old blog. As it's still visited a lot it obviously survives the server move and enters also this blog.</p>
<p>For screen you only have to disable the vbell in the ~/.screenrc:</p>
<div class="highlight"><pre><span></span><code>vbell off
</code></pre></div>
<p><strong>UPDATE 20131027:</strong> nille made me aware of the fact, that it's possible to change the vbell state in a screen session using the <strong>C-a C-g</strong> key combo.</p>
<p>When you use urxvt as a terminal the urgentOnBell option has to be activated in the Xdefaults file. In case you use an other terminal take a look at the respective documentation.</p>
<div class="highlight"><pre><span></span><code>URxvt*urgentOnBell: true
</code></pre></div>
<p>For irssi there are two ways to handle this. If you have a running instance you can set this by using these commands:</p>
<div class="highlight"><pre><span></span><code>/set bell_beeps on
/set beep_when_away on
/set beep_when_window_active on
/set beep_msg_level HILIGHT INVITES MSGS NOTICES CTCPS DCC DCCMSGS
/save
</code></pre></div>
<p>Or alternatively by editing the configuration:</p>
<div class="highlight"><pre><span></span><code>settings = {
#...
"fe-common/core" = {
bell_beeps = "yes";
beep_when_away = "yes";
beep_when_window_active = "yes";
beep_msg_level = "HILIGHT INVITES MSGS NOTICES CTCPS DCC DCCMSGS"
}
}
</code></pre></div>