Systemctl als nicht Root ausführen - Sudoers anpassen

Alles rund um sicherheitsrelevante Fragen und Probleme.
scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Systemctl als nicht Root ausführen - Sudoers anpassen

Beitrag von scientific » 17.06.2017 19:42:43

Btw. Initskripte in /etc/init.d sind Geschichte. Heute macht man das mit systemd Units.

Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Schoolisoutfan
Beiträge: 13
Registriert: 16.06.2017 21:05:19

Re: Systemctl als nicht Root ausführen - Sudoers anpassen

Beitrag von Schoolisoutfan » 17.06.2017 20:15:21

Code: Alles auswählen

root # systemctl enable --now Server.service
Wenn ich das probiere bekomme ich die Meldung: --now Unbekannte Option

Das man initskripte nicht mehr nutzt ist an mir vorbei gegangen. Mein TS nutzt es noch. aber warum sollte ich das auch ändern.

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Systemctl als nicht Root ausführen - Sudoers anpassen

Beitrag von scientific » 17.06.2017 22:36:56

1) welche Version von systemd läuft bei dir?
2) Mit systemd (das offenbar auf deinem Rechner läuft) sind die Initskripte obsolet geworden. Wenn ein Programm noch ein initskript statt einer systemd-unit hat, so wird das mittels Generator oft schlecht, meist recht in eine systemd-Unit űbersetzt.

Lass mich zusammenfassen:
Du bastelst also an systemd-Units und systemctl dass du mit sudo ohne passwort ausführen möchtest, hast aber noch nie davon gehört, dass da in den letzten paar Jahren mit systemd eine GRUNDLEGENDE Änderung im initsystem und der Diensteverwaltung bei Linux im Gange ist.
Da du nichts davon mitbekommen hast, versuchst du dein althergebrachtes Wissen einzusetzen, obwohl das so nicht mehr wirklich angebracht ist.

Ich denke einmal, es wäre gut für dich, wenn du dich einmal näher mit systemd auseinandersetzt.

Da macht man heute einiges anders, als mit initv.

Lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Schoolisoutfan
Beiträge: 13
Registriert: 16.06.2017 21:05:19

Re: Systemctl als nicht Root ausführen - Sudoers anpassen

Beitrag von Schoolisoutfan » 17.06.2017 22:56:09

Ich bin ja dankbar für die hilfe, aber für den TS bin ich mittel eines Tutorials vorgegangen. Davon ab, auch wenn man 60 oder ähnlich sein mag, man findet genug tutorials wo- man auf entsprechende Skripte stößt. Ich finde es nicht ok jemandem vorzuwerfen er würde das geschehen nicht verfolgen. Ich muss leider sagen das dies mein Hobby ist in das ich mich mehr rein arbeiten möchte. Jedoch bleibt ein Hobby gegen Familie und anderen dingen auf der Strecke..

Ich schweife ab....,

Wie wäre es wenn du mir den richtigen (nach aktuellen Maßstäben) weg erläuterst. Ich dachte mit den letzten posts wären Wir zumindest in der richtigen Richtung. Wie dem auch seih. Die Version ist
systemd 215
+PAM +AUDIT +SELINUX +IMA +SYSVINIT +LIBCRYPTSETUP +GCRYPT +ACL +XZ -SECCOMP -APPARMOR


Im übrigen habe ich nur angemerkt das ich 1-2 Programme noch mit script in init.d ausführe - es funktioniert. Habe ich nun einen Nachteil? Wenn du schon meinst es ist Mist, dann wäre es gut zu wissen wo der Nachteil liegt.

Trotztem Danke, ich bin heute etwas genervt.

Gruß

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Systemctl als nicht Root ausführen - Sudoers anpassen

Beitrag von scientific » 18.06.2017 02:28:31

Sorry, für mich hat es so geklungen, als hättest du noch nie etwas von systemd gehört...

Die Transformation von init-Skripten mittels automatischem Generator in systemd-units funktioniert zwar prinzipiell nicht schlecht, kann aber doch die eine oder andere Hürde aufwerfen. Das liegt aber primär nicht an dir, sondern an den Paketbetreuern oder Programmentwicklern, die noch keine Units für ihr Paket zur Verfügung stellen.

In deinem Fall ist es so, dass die [Install]-Section in der Unit fehlt. Damit kannst du diese Service-Unit nicht mit systemctl so aktivieren, dass sie bei jedem Boot automatisch gestartet wird.

Du hast dir jetzt versucht so zu helfen, dass du systemctl mittels sudo ohne Passwort ausführen können willst und ziehst einen Rattenschwanz an Unsicherheiten damit an.

Füge bei der erstellen Unit am Ende noch (wie schon oben erwähnt) folgendes ein:

Code: Alles auswählen

[Install]
WantedBy=multi-user.target
dann reloade systemd neu

Code: Alles auswählen

systemctl daemon-reload
und dann aktiviere die Unit mit

Code: Alles auswählen

systemctl enable Server.service
Ich glaube, das hattest du eh schon gemacht. Die Option "--now" hat dein systemctl offenbar nicht gemocht - warum auch immer.

Nach einem Reboot kontrolliere mit

Code: Alles auswählen

systemctl status Server.service
und mit

Code: Alles auswählen

journalctl -b -u Server.service
ob dein Server aktiv ist und ohne Probleme automatisch gestartet wurde.

Vielleicht postest du auch die Ausgaben der letzten beiden Befehle...

Es war kein Vorwurf, es war nur eine Feststellung, dass bei dir offenbar Lücken genau dort klaffen, wo du gerade versuchst mit kopieren und einfügen aus irgendwelchen Tutorials etwas in Gang zu bringen, und du dabei bist, dir damit möglicherweise gröbere Probleme einzuhandeln, als dir momentan bewusst ist - weil eben genau dort, wo du es jetzt bräuchtest, Lücken im Wissen vorhanden sind. Konkret bei systemd.

Ich helfe gerne, wenn ich es kann. Wenn du vor Jahren gelernt hast, in einem KFZ den vollmechanischen Motor zu reparieren, wirst du heute wohl auch zum Fachmann gehen, wenn deine Karre streikt... oder dir das Wissen aneignen wie man einen vollelektronisch gesteuerten Wagen repariert. Wenns in deiner Freizeit nicht geht, wirst du das wohl nicht mehr selber machen... Warum sollt es bei Computern anders sein?
Linux verändert sich momentan massiv. Und wenn man es als Hobbyadmin betreiben will und so Dinge wie du gerade machen willst, machen will, dann bin nicht ich schuld, und im Forum sonst auch niemand, dass du deine Wissenslücken wieder auffüllen musst. Ob du jetzt 60 oder 20 bist... Veränderungen finden statt. Willst du mithalten, musst du mitlernen.
Daran bin aber nicht ich schuld. Aber ich helfe gerne in meiner eigenen Freizeit hier im Forum, wenn ich wo helfen kann.

Gut?

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Schoolisoutfan
Beiträge: 13
Registriert: 16.06.2017 21:05:19

Re: Systemctl als nicht Root ausführen - Sudoers anpassen

Beitrag von Schoolisoutfan » 18.06.2017 20:39:32

Vielen Dank, für deine Hilfe.
Auch wenn es jetzt vielleicht so klang, aber ich bin noch keine 60 ;)
Aber du hast natürlich Recht man muss immer lernen. Wie dem auch sei, ich weis zwar immer noch nicht warum --now nicht funktionier,t aber ich wusste anhand deines letzten posts zumindest wo mein Fehler lag.
Ich hatte schlicht und ergreifend [install] über dem WantedBy=multi-user.target vergessen.

Schade das wir noch nicht beamen können, sonst würde ich dir jetzt nen kühles Blondes rüber schieben. Bei mir im Dachgeschoss ist es auf jeden Fall die richtige Temperatur dafür :D

Vielen Dank nochmal!

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Systemctl als nicht Root ausführen - Sudoers anpassen

Beitrag von scientific » 19.06.2017 01:42:29

Schoolisoutfan hat geschrieben:Vielen Dank, für deine Hilfe.
Auch wenn es jetzt vielleicht so klang, aber ich bin noch keine 60 ;)
Aber du hast natürlich Recht man muss immer lernen. Wie dem auch sei, ich weis zwar immer noch nicht warum --now nicht funktionier,t aber ich wusste anhand deines letzten posts zumindest wo mein Fehler lag.
Ich hatte schlicht und ergreifend [install] über dem WantedBy=multi-user.target vergessen.

Schade das wir noch nicht beamen können, sonst würde ich dir jetzt nen kühles Blondes rüber schieben. Bei mir im Dachgeschoss ist es auf jeden Fall die richtige Temperatur dafür :D

Vielen Dank nochmal!
Gerne!

Dass du [Install] vergessen hast, lag an meiner fehlerhaften Anweisung auf der ersten Seite. Ich habs dort soeben korrigiert, weil [Install] dort fehlte, damit es für die Nachwelt korrekt archiviert bleibt.

Hast du die Befehlszeile mit Copy&Paste eingefügt? ev. wurden aus -- ein langer Gedankenstrich dabei... Tippe die Zeile einmal manuell ein. (statt enable nimm reenable)

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Schoolisoutfan
Beiträge: 13
Registriert: 16.06.2017 21:05:19

Re: Systemctl als nicht Root ausführen - Sudoers anpassen

Beitrag von Schoolisoutfan » 24.06.2017 19:06:19

So, mir ist heute beim updaten des Spieleservers ein Problem aufgefallen.
Der Service startet zwar beim boot den Servers, jedoch lässt er sich nicht manuel mit dem nicht su Benutzer starten, mit dem Root geht es.
Einzigste Lösung war den kompletten Server zu rebooten, aber das ist ja auch nicht Sinn des ganzen.
Probiert hatte ich:

Code: Alles auswählen

factorio # systemctl start factorio.service
So schaut die factorio.service aus:

Code: Alles auswählen

[Unit]
Description=Factorio Headless Server

[Service]
Type=simple
User=factorio
ExecStart=/opt/factorio/bin/x64/factorio --start-server-load-latest /opt/factor$
Restart=always
[Install]
WantedBy=multi-user.target

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Systemctl als nicht Root ausführen - Sudoers anpassen

Beitrag von scientific » 29.06.2017 00:59:11

Naja... systemctl wird auch von root bedient. Damit startest/stoppst und reloadest du Services, welche das ganze System betreffen.

Das ist so gedacht, dass du als ein User nicht die Prozesse eines anderen Users abschießen kannst (Außer du bist eben root. Der darf die Prozesse eines jeden Users beenden...).

Wenn du den Spieleserver neu starten willst, kannst du das nur als root.
Du hast auch die Option "Restart=always" drin. Damit könntest du als Root auch den Prozess des Spieleservers mit kill beenden, dann startet systemd den neu unter dem User factorio.

Mit InitV kannst du normalerweise Startskripte unter /etc/initl.d/ auch nur als root neu starten...

Einen (diesen) Service startest du neu mit

Code: Alles auswählen

# systemctl stop factorio.service
# systemctl start factorio.service
oder schneller mit

Code: Alles auswählen

# systemctl restart factorio.service
Und ob der Service läuft, und was er so tut siehst du mit

Code: Alles auswählen

# systemctl status factorio.service
oder

Code: Alles auswählen

# journalctl -b -u factorio.service
Zuschauen kannst du ihm mit

Code: Alles auswählen

# journalctl -f -u factorio.service
lg scientific

PS: Es würde wirklich nicht schaden, wenn du dich in die Materie systemd einarbeitest.
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Schoolisoutfan
Beiträge: 13
Registriert: 16.06.2017 21:05:19

Re: Systemctl als nicht Root ausführen - Sudoers anpassen

Beitrag von Schoolisoutfan » 29.06.2017 06:07:47

Wie ich den Service starte, stoppen und deren Status einsehen kann weiß ich auswendig. Mir ist nur nicht ganz klar ob der in der Service eingetragene User den Service ausführt oder aber ob der Service als Router läuft wenn er von rot gestartet wurde. Sollte der letztere Fall richtig sein wäre ja alles in Ordnung. Das würde auch heißen das ich es von Anfang an richtig hatte. Denn der Service wurde immer mit einem in der Service hinterlegten Benutzer ausgeführt. Ich hoffe das ganze war halbwegs verständlich. Ich bin anhand des Wiki über systemctl davon ausgegangen das der User der im Service steht und Besitzer der Dateien ist auch gleichzeitig die Rechte zum ausführen des Service hat.

Gruß

scientific
Beiträge: 3020
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: Systemctl als nicht Root ausführen - Sudoers anpassen

Beitrag von scientific » 02.07.2017 12:05:23

Wenn in der Unit ein User= angegeben ist, wird der Befehl von ExecStart= mit dieser UID ausgeführt. Dementsprechend müssen die Dateien die dieser Prozess benötigt auch für diesen User Schreib/Leserechte haben. Systemctl wird zwar von root ausgeführt, aber die tatsächlichen Prozesse der Services laufen als der angegebene User.
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Schoolisoutfan
Beiträge: 13
Registriert: 16.06.2017 21:05:19

Re: Systemctl als nicht Root ausführen - Sudoers anpassen

Beitrag von Schoolisoutfan » 04.07.2017 11:37:57

Vielen Dank, dann ist ja alles so wie es sein soll :THX:

Antworten