Systemctl als nicht Root ausführen - Sudoers anpassen
-
- Beiträge: 13
- Registriert: 16.06.2017 21:05:19
Systemctl als nicht Root ausführen - Sudoers anpassen
Hi,
ich habe hier zuhause aktuell einen kleinen Spieleserver am laufen und dieser wird mit systemctl gestartet/beendet etc.
Dazu habe ich für das entsprechende Spiel einen eigenen Benutzer ohne Home und mit Passwort angelegt.
Der Benutzer ist über Chown Besitzer des Spieleordners und Inhaltes. Wenn ich jedoch den Befehl zum starten des Servers eingebe bekomme ich die Meldung, das ich nicht die nötigen Rechte dazu habe.
Ich wollte daher nun die entsprechenden Befehle für den Benutzer zulassen.
Unter etc/sudoers.d/ habe ich nun mit visudo -f /etc/sudoers.d/Benutzername eine Datei mit dem Benutzernamen angelegt und folgendes eingefügt:
%Benutzername ALL= NOPASSWD: systemctl start Server.service
%Benutzername ALL= NOPASSWD: systemctl status Server.service
%Benutzername ALL= NOPASSWD: systemctl restart Server.service
%Benutzername ALL= NOPASSWD: systemctl stop Server.service
Wenn ich nun mit dem Benutzer systemctl start. Server.service ausführen will, bekomme ich wieder Access denied. Bei su Benutzer systemctl stop Server.service bekomme ich noch eine Passwortabfrage aber danach ist auch Schluss. Dort erscheint dann: /bin/systemctl: /bin/systemctl: Kann die Datei nicht ausführen.
Wo liegt mein Fehler? Unter Root funktioniert der Befehl: systemctl start Server.service einwandfrei. :/
ich habe hier zuhause aktuell einen kleinen Spieleserver am laufen und dieser wird mit systemctl gestartet/beendet etc.
Dazu habe ich für das entsprechende Spiel einen eigenen Benutzer ohne Home und mit Passwort angelegt.
Der Benutzer ist über Chown Besitzer des Spieleordners und Inhaltes. Wenn ich jedoch den Befehl zum starten des Servers eingebe bekomme ich die Meldung, das ich nicht die nötigen Rechte dazu habe.
Ich wollte daher nun die entsprechenden Befehle für den Benutzer zulassen.
Unter etc/sudoers.d/ habe ich nun mit visudo -f /etc/sudoers.d/Benutzername eine Datei mit dem Benutzernamen angelegt und folgendes eingefügt:
%Benutzername ALL= NOPASSWD: systemctl start Server.service
%Benutzername ALL= NOPASSWD: systemctl status Server.service
%Benutzername ALL= NOPASSWD: systemctl restart Server.service
%Benutzername ALL= NOPASSWD: systemctl stop Server.service
Wenn ich nun mit dem Benutzer systemctl start. Server.service ausführen will, bekomme ich wieder Access denied. Bei su Benutzer systemctl stop Server.service bekomme ich noch eine Passwortabfrage aber danach ist auch Schluss. Dort erscheint dann: /bin/systemctl: /bin/systemctl: Kann die Datei nicht ausführen.
Wo liegt mein Fehler? Unter Root funktioniert der Befehl: systemctl start Server.service einwandfrei. :/
Re: Systemctl als nicht Root ausführen - Sudoers anpassen
Das %-Zeichen definiert den Eintrag als Gruppe. Wenn es sich nur um diesen einen Benutzer handelt, trage den Namen des Benutzer ohne "%" ein. Dann wird das wohl klappen.
%Benutzername ALL= NOPASSWD: systemctl start Server.service
%Benutzername ALL= NOPASSWD: systemctl start Server.service
-
- Beiträge: 13
- Registriert: 16.06.2017 21:05:19
Re: Systemctl als nicht Root ausführen - Sudoers anpassen
Okay, ich werde es gleich einmal ausprobieren. Wobei ich der Meinung war das ich den Benutzer in eine gleichnamige Gruppe gesteckt habe.
Re: Systemctl als nicht Root ausführen - Sudoers anpassen
Ja, mag sein... aber ich kann nur nehmen, was Du geschrieben hast... und %Benutzername (UID) kann identisch sein mit %Benutzergruppe (GID), muss aber nicht. So sieht das bei mir rein zufällig entstanden mit dem virtuellen Benutzer "inet" aus
Das heisst, mit dieser Konstellation würde das bei Deinen Parametern nicht funktionieren. Eindeutig wirds eben mit dem echten Benutzernamen. Dieses Beispiel hat bei mir ganz früher funktioniert:
ach so... nicht zu vergessen.... systemctl sollte heissen:
Code: Alles auswählen
id inet
uid=1001(inet) gid=1002(inet) Gruppen=1002(inet)
Code: Alles auswählen
thomas ALL=(ALL)NOPASSWD:/usr/local/bin/selnic
Code: Alles auswählen
/bin/systemctl
-
- Beiträge: 13
- Registriert: 16.06.2017 21:05:19
Re: Systemctl als nicht Root ausführen - Sudoers anpassen
Leider brachte nichts den Erfolg.
Failed to start Server.service: Access denied
Und bei Versuch mit su:
/bin/systemctl: /bin/systemctl: Kann die Datei nicht ausführen.
So schaut die Datei "Benutzername" aus:
Benutzer ALL= NOPASSWD:/bin/systemctl start Server.service
Benutzer ALL= NOPASSWD:/bin/systemctl status Server.service
Benutzer ALL= NOPASSWD:/bin/systemctl restart Server.service
Benutzer ALL= NOPASSWD:/bin/systemctl stop Server.service
Folgendes steht in der Systemd:
[Unit]
Description=Beschreibung
[Service]
Type=simple
User=Benutzer
ExecStart=Pfad.......
Failed to start Server.service: Access denied
Und bei Versuch mit su:
/bin/systemctl: /bin/systemctl: Kann die Datei nicht ausführen.
So schaut die Datei "Benutzername" aus:
Benutzer ALL= NOPASSWD:/bin/systemctl start Server.service
Benutzer ALL= NOPASSWD:/bin/systemctl status Server.service
Benutzer ALL= NOPASSWD:/bin/systemctl restart Server.service
Benutzer ALL= NOPASSWD:/bin/systemctl stop Server.service
Folgendes steht in der Systemd:
[Unit]
Description=Beschreibung
[Service]
Type=simple
User=Benutzer
ExecStart=Pfad.......
Re: Systemctl als nicht Root ausführen - Sudoers anpassen
Ich hatte oben auch ein Beispiel gepostet. Und nach der Änderung solltest Du Dich einmal abmelden und erneut anmelden.
-
- Beiträge: 13
- Registriert: 16.06.2017 21:05:19
Re: Systemctl als nicht Root ausführen - Sudoers anpassen
Habe es nochmals so angepasst:
Der Server wurde neugestartet, keine Veränderung
Code: Alles auswählen
Benutzer ALL=(ALL)NOPASSWD:/bin/systemctl start Server.service
Re: Systemctl als nicht Root ausführen - Sudoers anpassen
Das ist mehr als merkwürdig.... poste bitte mal die folgenden Ausgaben... also die, die antworten:Schoolisoutfan hat geschrieben:Der Server wurde neugestartet, keine Veränderung
Code: Alles auswählen
dpkg -l sudo systemd
uname -a
cat /proc/1/comm
hostnamectl
cat /etc/debian_version
cat /etc/*release
-
- 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
Du bist sicher, dass du systemctl ohne Passwort mit Sudo ausführbar machen willst?
Wäre es ev. eine bessere Möglichkeit, den Server mit einem systemd --user zu starten?
Was macht der Server genau? Unter welcher Benutzerkennung soll der laufen? (root ist wohl denkbar ungeeignet, zumal du ein eigenrs Home für den Gameserver-User hast...)
Lg scientific
Wäre es ev. eine bessere Möglichkeit, den Server mit einem systemd --user zu starten?
Was macht der Server genau? Unter welcher Benutzerkennung soll der laufen? (root ist wohl denkbar ungeeignet, zumal du ein eigenrs Home für den Gameserver-User hast...)
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
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
-
- Beiträge: 13
- Registriert: 16.06.2017 21:05:19
Re: Systemctl als nicht Root ausführen - Sudoers anpassen
dpkg -l sudo systemd
uname -a
cat /proc/1/comm
hostnamectl
cat /etc/debian_version
cat /etc/*release
Root ist als Zugang gesperrt. Es gibt für den SSH einen eigenen Zugang, dieser hat allerdings auch kein Root.
Den Service habe ich so angelegt: sudo nano /etc/systemd/system/Server.service
Sonst haben alle laufenden Prozesse einen eigenen Nutzer:
Also für Samba - Kodi, Teamspeak, Spieleserver. Generell soll kein Prozess als root laufen.
Abgesichert ist das ganze mit Fail2ban, Firewall, und Verbot des Rootzugangs, Zugang nur über separaten SSH ohne Root. Wäre wirklich wichtig da der Server zwar zuhause seht jedoch eine .de Domain bekommt um über das Netz erreichbar zu sein.
Code: Alles auswählen
root@Server:/home/sshmaster# dpkg -l sudo systemd
Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten
| Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/
Halb installiert/Trigger erWartet/Trigger anhängig
|/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht)
||/ Name Version Architektur Beschreibung
+++-==============-============-============-=================================
ii sudo 1.8.10p3-1+d amd64 Provide limited super user privil
ii systemd 215-17+deb8u amd64 system and service manager
Code: Alles auswählen
Linux Server 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2 (2017-04-30) x86_64 GNU/Linux
Code: Alles auswählen
systemd
Code: Alles auswählen
Static hostname: Server
Icon name: computer-desktop
Chassis: desktop
Machine ID: afd56523a03443dcac26b90ec8debf34
Boot ID: 9a29f555e949436390e54a6f4eab5050
Operating System: Debian GNU/Linux 8 (jessie)
Kernel: Linux 3.16.0-4-amd64
Architecture: x86-64
Code: Alles auswählen
8.8
Code: Alles auswählen
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Den Service habe ich so angelegt: sudo nano /etc/systemd/system/Server.service
Sonst haben alle laufenden Prozesse einen eigenen Nutzer:
Also für Samba - Kodi, Teamspeak, Spieleserver. Generell soll kein Prozess als root laufen.
Abgesichert ist das ganze mit Fail2ban, Firewall, und Verbot des Rootzugangs, Zugang nur über separaten SSH ohne Root. Wäre wirklich wichtig da der Server zwar zuhause seht jedoch eine .de Domain bekommt um über das Netz erreichbar zu sein.
-
- 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
Poste doch den Inhalt der service-unit des Spieleservers. Ich halte es irgendwo zwischen unklug und gefährlich angesiedelz, was du da vorhast... Da gibt es garantiert eine bessere und sicherere Lösung, um diesen Spieleserver zum Laufen zu bringen.
Soll der immer laufen, auch wenn du nicht eingelogt bist, oder nur wenn du dich einlogst und spielen willst?
Lg scientific
Soll der immer laufen, auch wenn du nicht eingelogt bist, oder nur wenn du dich einlogst und spielen willst?
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
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
-
- Beiträge: 13
- Registriert: 16.06.2017 21:05:19
Re: Systemctl als nicht Root ausführen - Sudoers anpassen
Wo liegt denn deines Erachtens das Problem? Alle Ports die nicht benötigt werden sind dicht, Zugang nur über SSH. In diesem Fall ist es ein factorio Server, da ich diesenicht das erste mal aufgesetzt habe bin ich wie folgt vorgegangen: https://gist.github.com/othyn/e1287fd93 ... 07227ed48c
Der Server stoppt automatisch wenn keiner drauf ist.
Der Server stoppt automatisch wenn keiner drauf ist.
-
- 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
systemctl über sudo ohne Passwort zugänglich machen ist wie einem entfernten Bekannten deine Wohnungsschlüssel zu leihen...
Du tust dir damit eine Sicherheitslücke auf oder zumindest nimmst du dir eine Hürde weg, dir dein System irrtümlich zu verändern und ev. gar unbrauchbar zu machen.
Es hat einen guten Grund, warum systemd (sofern es kein --user Prozess ist) nur mit rootrechten zugänglich ist.
Du hast immer noch nicht die Unit gepostet.
Willst du den bewusst starten, oder immer beim Login automatisch?
Schau dir einmal die sogenannten User-Sessions von systemd an. Die kannst du nämlich als User ohne sudo starten...
Stichwort: systemd --user
Lg scientific
Du tust dir damit eine Sicherheitslücke auf oder zumindest nimmst du dir eine Hürde weg, dir dein System irrtümlich zu verändern und ev. gar unbrauchbar zu machen.
Es hat einen guten Grund, warum systemd (sofern es kein --user Prozess ist) nur mit rootrechten zugänglich ist.
Du hast immer noch nicht die Unit gepostet.
Willst du den bewusst starten, oder immer beim Login automatisch?
Schau dir einmal die sogenannten User-Sessions von systemd an. Die kannst du nämlich als User ohne sudo starten...
Stichwort: systemd --user
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
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
-
- Beiträge: 13
- Registriert: 16.06.2017 21:05:19
Re: Systemctl als nicht Root ausführen - Sudoers anpassen
Ich schaue nachhermal wenn ich Zuhause bin. Also ohne Passwort muss das ganze nicht laufen. Es wäre wie du schon sagtest vermutlich besser wenn der Befehl nur mit Passwort gestartet werden kann. Der Server läuft dauerhaft ohne angemeldeten User. Wenn ich den Server automatisch bei Systemstart starten lassen will bräuchte ich doch ein Start skript welches in Init.d liegt oder? Ich bin jedoch nicht in der Lage eines zu schreiben.
Dies ist die Unit:
Würde folgendes funktionieren:
starten über:
Dies ist die Unit:
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/factorio/saves/2.zip --server-settings /opt/factorio/data/server-settings.json
Würde folgendes funktionieren:
Code: Alles auswählen
$ cat ~/.config/systemd/factorio.service
[Unit]
Description=Factorio Headless Server
[Service]
Type=simple
User=factorio
ExecStart=/opt/factorio/bin/x64/factorio --start-server-load-latest /opt/factorio/saves/2.zip --server-settings /opt/factorio/data/server-settings.json
Restart=always
starten über:
Code: Alles auswählen
cd /etc/systemd/system/
systemctl --factorio enable factorio.service
-
- 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
Du musst am Ende der Unit noch folgendes einfügen
Und dann die Unit enablen
Damit startet der Server sofort und wird beim Booten auch jeweils gestartet.
Ob der Server läuft, checkst du mit
Code: Alles auswählen
[Install]
WantedBy=multi-user.target
Code: Alles auswählen
root # systemctl daemon-reload
root # systemctl enable --now Server.service
Ob der Server läuft, checkst du mit
Code: Alles auswählen
root # systemctl status Server.service
Zuletzt geändert von scientific am 19.06.2017 01:40:05, insgesamt 1-mal geändert.
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
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
-
- 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
Btw. Initskripte in /etc/init.d sind Geschichte. Heute macht man das mit systemd Units.
Lg scientific
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
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
-
- Beiträge: 13
- Registriert: 16.06.2017 21:05:19
Re: Systemctl als nicht Root ausführen - Sudoers anpassen
Code: Alles auswählen
root # systemctl enable --now Server.service
Das man initskripte nicht mehr nutzt ist an mir vorbei gegangen. Mein TS nutzt es noch. aber warum sollte ich das auch ändern.
-
- 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
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
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
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
-
- Beiträge: 13
- Registriert: 16.06.2017 21:05:19
Re: Systemctl als nicht Root ausführen - Sudoers anpassen
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ß
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ß
-
- 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
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:
dann reloade systemd neu
und dann aktiviere die Unit mit
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
und mit
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
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
Code: Alles auswählen
systemctl daemon-reload
Code: Alles auswählen
systemctl enable Server.service
Nach einem Reboot kontrolliere mit
Code: Alles auswählen
systemctl status Server.service
Code: Alles auswählen
journalctl -b -u Server.service
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
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
-
- Beiträge: 13
- Registriert: 16.06.2017 21:05:19
Re: Systemctl als nicht Root ausführen - Sudoers anpassen
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
Vielen Dank nochmal!
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
Vielen Dank nochmal!
-
- 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
Gerne!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
Vielen Dank nochmal!
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
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
-
- Beiträge: 13
- Registriert: 16.06.2017 21:05:19
Re: Systemctl als nicht Root ausführen - Sudoers anpassen
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:
So schaut die factorio.service aus:
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
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
-
- 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
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
oder schneller mit
Und ob der Service läuft, und was er so tut siehst du mit
oder
Zuschauen kannst du ihm mit
lg scientific
PS: Es würde wirklich nicht schaden, wenn du dich in die Materie systemd einarbeitest.
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
Code: Alles auswählen
# systemctl restart factorio.service
Code: Alles auswählen
# systemctl status factorio.service
Code: Alles auswählen
# journalctl -b -u factorio.service
Code: Alles auswählen
# journalctl -f -u factorio.service
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
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
-
- Beiträge: 13
- Registriert: 16.06.2017 21:05:19
Re: Systemctl als nicht Root ausführen - Sudoers anpassen
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ß
Gruß