Warum ist reboot in /sbin?

Alles rund um sicherheitsrelevante Fragen und Probleme.
DaCoda
Beiträge: 172
Registriert: 09.07.2019 21:58:10

Warum ist reboot in /sbin?

Beitrag von DaCoda » 11.05.2020 13:38:41

Das s in sbin steht meines Wissens nach für super.

Deshalb sind eigentlich alle Befehle in /sbin Befehle, welche nur von root=super user ausgeführt werden können.

Der Befehl /sbin/reboot lässt sich aber auch einwandfrei als nicht-root ausführen.

Deshalb frage ich mich, was der Befehl dort sucht und warum er nicht unter /usr/bin ist.

Benutzeravatar
MSfree
Beiträge: 10774
Registriert: 25.09.2007 19:59:30

Re: Warum ist reboot in /sbin?

Beitrag von MSfree » 11.05.2020 13:46:12

DaCoda hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 13:38:41
Das s in sbin steht meines Wissens nach für super.
Für Super steht es sicher nicht. Früher ware dort mal statisch gelinkte Porgramme, also solche, die keine "DLLs" brauchen. Heute sind das eher Systemprogramme.

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Warum ist reboot in /sbin?

Beitrag von fischig » 11.05.2020 15:06:11

Der Befehl /sbin/reboot lässt sich aber auch einwandfrei als nicht-root ausführen.
Was ich noch nie verstanden habe. Und bevor ich das verstanden habe, habe ich keine Lust, mich mit den diversen trickreichen Lösungen zu beschäftigen, die es dem User mir nichts dir nichts ermöglichen, den Rechner auszuschalten. :evil: Das krieg' ich auch ohne diese goodies hin. :wink:

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Warum ist reboot in /sbin?

Beitrag von Meillo » 11.05.2020 16:08:10

fischic hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 15:06:11
Der Befehl /sbin/reboot lässt sich aber auch einwandfrei als nicht-root ausführen.
Was ich noch nie verstanden habe. Und bevor ich das verstanden habe, habe ich keine Lust, mich mit den diversen trickreichen Lösungen zu beschäftigen, die es dem User mir nichts dir nichts ermöglichen, den Rechner auszuschalten. :evil: Das krieg' ich auch ohne diese goodies hin. :wink:
@fischic: Auch nach mehrmaligem Durchlesen deines Beitrags faellt es mir noch schwer seine Aussage zu erfassen. Vielleicht kannst du nochmal in einfacheren Formulierungen schreiben was du meinst.

Auf meinem System kann ich alle Befehle in /sbin ausfuehren, manche davon beenden sich gleich wieder mit der Meldung, dass ich root sein muss um sie zu nutzen. Auf *meinem* System trifft dieser Abschnitt der Manpage zu:
Manpage zu reboot(8) hat geschrieben: DIAGNOSTICS
If you're not the superuser, you will get the message `must be superuser'.
Ist das auf einem modernen Debian anders? Ist es nur anders wenn man ein Desktop-System installiert hat?
Use ed once in a while!

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Warum ist reboot in /sbin?

Beitrag von fischig » 11.05.2020 16:29:11

Meillo hat geschrieben:Vielleicht kannst du nochmal in einfacheren Formulierungen schreiben was du meinst.
Mach ich gerne, bzw. ich versuch's zumindest (ob einfacher? Mehr Worte werden es in jedem Fall :wink: ):

Vorausschicken muss ich, dass ich schon zu lange Debian benutze, um zu wissen, wie's defaultmäßig gegenwärtig geregelt ist (Ich zitier' mich mal selbst: „Das krieg' ich auch ohne diese goodies hin.“)
Nach meiner Kenntnis durfte, als ich mit Linux anfing (so ca. 2002); jeder Benutzer ein Linux-System (ich kannte damals Suse und eben Debian) neu booten, ausschalten durfte es nur root. Letzteres habe ich verstanden und für richtig befunden (server, Mehr-Benutzer-System), aber wieso jeder User (auch auf den genannten Konfigurationen) den Rechner defaultmäßig neu starten durfte, war und ist mir unklar (falls er das 2020 immer noch darf), schließlich zerstört er damit sämtliche laufenden anderen Sitzungen.
Ich hielt und halte das für widersprüchlich. Einschränkend hinzufügen muss ich, dass ich noch nie versucht habe, ein System, an dem mehrere Benutzer eingeloggt waren, als Benutzer neu zu booten. Ich habe für beides (Aus und Neustart als User) mir immer via script Root-Rechte verschafft und mach' das auch heute noch so.
Debiansudo habe ich dazu nie benutzt. Ich versteh's nicht wirklich und hatte auch nie das Bedürfnis, es zu lernen.

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Warum ist reboot in /sbin?

Beitrag von Meillo » 11.05.2020 17:07:04

fischic hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 16:29:11
Nach meiner Kenntnis durfte, als ich mit Linux anfing (so ca. 2002); jeder Benutzer ein Linux-System (ich kannte damals Suse unde eben Debian) neu booten, ausschalten durfte es nur root. Letzteres habe ich verstanden und für richtig befunden (server, Mehr-Benutzer-System), aber wieso jeder User (auch auf den genannten Konfigurationen) den Rechner defaultmäßig neu starten durfte, war und ist mir unklar (falls er das 2020 immer noch darf), schließlich zerstört er damit sämtliche laufenden anderen Sitzungen.
Unix ist urspruenglich ein Server-Betriebssystem, folglich sollte nur root (oder andere entsprechend berechtigte Gruppen) das System herunterfahren oder rebooten koennen. Meines Wissens gibt und gab es keinen Unterschied zwischen shutdown/halt/reboot. Warum deine Erfahrung oder Erinnerung dort anders ist, kann ich nicht nachvollziehen.

Bei einem Desktop-System ist das anders. Dort sollte der (eine) angemeldete User das System runterfahren und rebooten duerfen.

Nun kann man Unix/Linux als Server- oder als Desktop-System einsetzen, folglich gibt es nicht ein korrektes Verhalten, sondern es haengt vom Einsatzzweck ab. Darum auch meine Frage, ob es sich unterschiedlich verhaelt, ob ich bei der Installation bei tasksel (oder wie das heisst) das Desktop-System ausgewaehlt habe.
Ich habe für beides (Aus und Neustart als User) mir immer via script Root-Rechte verschafft und mach' das auch heute noch so.
Auf allen meinen Systemen war es bisher so, dass shutdown/halt/reboot root-Rechte erfordert haben und ich darum, wie du, mittels geeigneter Befehle dafuer gesorgt habe.

Aber ich habe kein aktuelles Debian und ich habe kein Desktop-Environment installiert.
Use ed once in a while!

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Warum ist reboot in /sbin?

Beitrag von fischig » 11.05.2020 17:23:13

ich habe kein Desktop-Environment installiert
Ich auch nicht.
Meines Wissens gibt und gab es keinen Unterschied zwischen shutdown/halt/reboot.
Einer Koryphäe wie dir das zu sagen, traue ich mich eigentlich nicht :wink: , aber ich glaube doch, dass du das falsch siehst.

Mit berühmt berüchtigtem Affengriff: Strg+Alt+Entf konnte jeder Benutzer den Rechner neu starten - ohne sich irgendwelche Root-Rechte dazu verschaffen zu müssen. Eine entsprechende für jeden Benutzer frei verfügbare Tastenkombination für's Ausschalten gab's, soweit ich weiß, nie. Heutzutage ist Strg+Alt+Entf wohl zumindest unter X defaultmäßig abgeschaltet - wenn man's nicht via Root wieder einschaltet. Auf einem tty funktioniert es nach wie vor. Man korrigiere mich, wenn ich bei letzterem falsch liege.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Warum ist reboot in /sbin?

Beitrag von JTH » 11.05.2020 17:35:17

Meillo hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 16:08:10
Ist das auf einem modernen Debian anders? Ist es nur anders wenn man ein Desktop-System installiert hat?
Jein. Debianpolicykit-1 reicht.

"Früher", zu sysvinit-Zeiten, musste man dazu root sein. /sbin/{halt,poweroff,reboot} haben haben dabei jeweils /sbin/shutdown aufgerufen und das wiederum hat dem laufenden init-Daemon signalisiert, einen Shutdown oder Reboot auszuführen (aka das Runlevel zu ändern). So mit dem init-Daemon kommunizieren darf nur root.

"Heute", zu systemd-Zeiten, sind halt/poweroff/reboot/shutdown Symlinks auf systemctl:

Code: Alles auswählen

$ ls -l /sbin/{halt,poweroff,reboot,shutdown}
lrwxrwxrwx 1 root root 14 Apr 27 17:38 /sbin/halt -> /bin/systemctl
lrwxrwxrwx 1 root root 14 Apr 27 17:38 /sbin/poweroff -> /bin/systemctl
lrwxrwxrwx 1 root root 14 Apr 27 17:38 /sbin/reboot -> /bin/systemctl
lrwxrwxrwx 1 root root 14 Apr 27 17:38 /sbin/shutdown -> /bin/systemctl
Je nach dem, welches der Vier man aufruft, verhält sich systemctl als ob man

Code: Alles auswählen

$ systemctl poweroff # bzw.
$ systemctl reboot
aufgefufen hat. systemctl wiederum kommuniziert dann (per Debiandbus) mit logind und das entscheidet, ob man das angefragte tatsächlich machen kann. Die Berechtigungen dazu „verwaltet“ policykit. Im Normalfall darf jeder direkt angemeldete Benutzer den Rechner neustarten/herunterfahren. Auch, wenn mehrere gerade Benutzer angemeldet sind.

Wenn also Debiansystemd + Debianpolicykit-1 installiert sind, darf inzwischen jeder Benutzer reboot oder shutdown ausführen, unabhängig von einem Desktop auch aus einem TTY heraus. (Nachtrag: Jeder lokal angemeldete Benutzer – per SSH darf mans nicht.)

Nachtrag:
Meillo hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 17:07:04
Meines Wissens gibt und gab es keinen Unterschied zwischen shutdown/halt/reboot.
Ich meine auch. Der Unterschied ist nur, ob du zu Runlevel 0 oder 6 wechselst. Die Aufrufkette ist: poweroff/reboot -> halt -> shutdown -> init:

Code: Alles auswählen

$ ls -l sbin/
total 120
-rwxr-xr-x 1 root root 18616 Mar 19 23:37 halt
-rwxr-xr-x 1 root root 52240 Mar 19 23:37 init
lrwxrwxrwx 1 root root     4 Mar 19 23:37 poweroff -> halt
lrwxrwxrwx 1 root root     4 Mar 19 23:37 reboot -> halt
-rwxr-xr-x 1 root root 30936 Mar 19 23:37 shutdown
poweroff und reboot sind nur Symlinks auf halt. Egal, welches man aufruft, am Ende steckt letztendlich immer shutdown dahinter..
Zuletzt geändert von JTH am 11.05.2020 17:43:38, insgesamt 2-mal geändert.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
MSfree
Beiträge: 10774
Registriert: 25.09.2007 19:59:30

Re: Warum ist reboot in /sbin?

Beitrag von MSfree » 11.05.2020 17:37:55

Meillo hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 17:07:04
Auf allen meinen Systemen war es bisher so, dass shutdown/halt/reboot root-Rechte erfordert haben
Seit systemd ist /sbin/reboot nur ein symbolic Link auf /bin/systemctl. Damit läßt sich als normaler Benutzer das System rebooten, egal ob aus der GUI oder aus der Textkonsole, ohne root-Rechte. Das ist wohl auf Lennarts Mist gewachsen.

Aber das hier versucht es ein wenig zu erklären:
https://askubuntu.com/questions/1005884 ... difference

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Warum ist reboot in /sbin?

Beitrag von Meillo » 11.05.2020 18:07:59

Danke fuer den grossartigen Post, JTH. :THX:
Use ed once in a while!

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Warum ist reboot in /sbin?

Beitrag von fischig » 11.05.2020 18:13:40

Meillo/JTH hat geschrieben:Meines Wissens gibt und gab es keinen Unterschied zwischen shutdown/halt/reboot.
Ihr verschiebt das Problem in meinen Augen. Ich bleib' einstweilen dabei: Früher war's so, dass jeder Benutzer via Strg+Alt+Entf jedes System neu starten durfte. Eine entsprechende Kombi/Kommando für's Ausschalten gab's nicht (das fand ich immer widersprüchlich). (welches Programm damit gestartet wurde, ist für mich/den Benutzer erst mal sekundär. Es bleibt Fakt, dass der Benutzer, ohne explizit über Root-Rechte zu verfügen, neu starten durfte. Poettering hat ihn also beseitigt, den Widerspruch, ob man seine Lösung angemessen/gut findet ist eine andere Frage.

Kleiner Nachtrag:
Hier (kein systemd, kein policykit, kein udev) darf der Benutzer nach wie vor: reboot. shutdown -h now darf er nicht. :wink:
Zuletzt geändert von fischig am 11.05.2020 18:34:54, insgesamt 1-mal geändert.

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Warum ist reboot in /sbin?

Beitrag von Meillo » 11.05.2020 18:33:59

fischic hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 17:23:13
Meines Wissens gibt und gab es keinen Unterschied zwischen shutdown/halt/reboot.
Einer Koryphäe wie dir das zu sagen, traue ich mich eigentlich nicht :wink: , aber ich glaube doch, dass du das falsch siehst.
Ich hoffe, du widersprichst mir immer wenn du meinst, dass es anders ist!

Man erinnere sich besser regelmaessig daran: https://www.quora.com/Can-anyone-share- ... ie?share=1

Mit berühmt berüchtigtem Affengriff: Strg+Alt+Entf konnte jeder Benutzer den Rechner neu starten - ohne sich irgendwelche Root-Rechte dazu verschaffen zu müssen. Eine entsprechende für jeden Benutzer frei verfügbare Tastenkombination für's Ausschalten gab's, soweit ich weiß, nie. Heutzutage ist Strg+Alt+Entf wohl zumindest unter X defaultmäßig abgeschaltet - wenn man's nicht via Root wieder einschaltet. Auf einem tty funktioniert es nach wie vor. Man korrigiere mich, wenn ich bei letzterem falsch liege.
Hier aus der /etc/inittab meines (pre-Systemd-Systems):

Code: Alles auswählen

# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
Aus der Manpage:
Manpage zu inittab(5) hat geschrieben: ctrlaltdel
The process will be executed when init receives the SIGINT signal.
This means that someone on the system console has pressed the
CTRL-ALT-DEL key combination. Typically one wants to execute some sort
of shutdown either to get into single-user level or to reboot the
machine.
Ich denke, es ist notwendig (neben der recht willkuerlichen Unterscheidung zwischen Server- und Desktop-System auch) die Unterscheidung zwischen direktem Zugriff und Remote-Zugriff vorzunehmen. Wenn ich direkt vor dem Rechner sitze, also auf die Hardware zugreifen kann (vgl. ``system console'' im Text oben), dann kann ich normalerweise auch einfach den Strom ziehen. Das ist anders als wenn ich mich von remote einlogge. Die System-Konsole besitzt Sonderstatus, an sie gehen ja auch die Kernelmeldungen.

Aber eigentlich habe ich deine Aussage missverstanden. Ich bin davon ausgegangen, dass du /sbin/reboot gemeint hast, das erfordert die gleichen Rechte wie /sbin/halt. Du hast aber eine Funktion von init(8) gemeint.

Insgesamt bin ich auf diesem Gebiet nicht ganz sattelfest. Mit Systemd ist die Situation zudem eine komplett andere, von der ich gar keine Ahnung habe.


Nachtrag:
fischic hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 18:13:40
Früher war's so, dass jeder Benutzer via Strg+Alt+Entf jedes System neu starten durfte. Eine entsprechende Kombi/Kommando für's Ausschalten gab's nicht (das fand ich immer widersprüchlich).
Eine Kombination nicht, aber wenn du davor sitzt, dann kannst du den Strom ausstecken. ;-)
(Das meine ich gar nicht so sehr im Spass wie es den Anschein machen koennte.)
Use ed once in a while!

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Warum ist reboot in /sbin?

Beitrag von fischig » 11.05.2020 18:41:36

Meillo hat geschrieben:Wenn ich direkt vor dem Rechner sitze, also auf die Hardware zugreifen kann (vgl. ``system console'' im Text oben), dann kann ich normalerweise auch einfach den Strom ziehen.
Punkt für dich, das hatte ich nicht auf dem Schirm. :THX:

Unsere beiden letzten Beiträge haben sich zeitlich überschnitten, guck nochmal nach reboot.

Mir wär's lieber gewesen, die reboot-Möglichkeit wäre aus-, anstatt dass die shutdown-Möglichkeit angeknipst worden wäre.

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Warum ist reboot in /sbin?

Beitrag von Meillo » 11.05.2020 18:51:41

fischic hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 18:41:36
Unsere beiden letzten Beiträge haben sich zeitlich überschnitten, guck nochmal nach reboot.
fischic hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 18:13:40
Kleiner Nachtrag:
Hier (kein systemd, kein policykit, kein udev) darf der Benutzer nach wie vor: reboot. shutdown -h now darf er nicht. :wink:
Du sagst also (auf einem Pre-Systemd-System) darf der normale User mit `/sbin/reboot' den Rechner neu starten, korrekt? Darf er dann auch `/sbin/shutdown -r' ausfuehren?

`/sbin/reboot' ist bei mir ein Symlink auf `/sbin/halt'. Ich sehe hier keine unterschiedliche Behandlung der beiden Befehle. Kannst du denn praktisch bestaetigen, dass sie sich unterschiedlich verhalten, in der Form, dass du den einen als User ausfuehren darfst, den anderen aber nicht? Das kommt mir irgendwie komisch vor.

Oder missverstehen wir uns immer noch und du meinst die ganze Zeit Ctrl-Alt-Del?
Use ed once in a while!

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Warum ist reboot in /sbin?

Beitrag von fischig » 11.05.2020 19:12:35

Herr hilf! Zu welcher Diskussion habe ich mich hier trotz meines Halbwissens hinreißen lassen. :oops:

reboot ist der Name meines scriptes für den Neustart. Das ist schon so alt, dass ich das gar nicht mehr wahrnahm. Für'n shutdown habe ich „aus“ gewählt, da gibt's keine MIssverständnisse. /sbin/reboot darf der Buster-Benutzer genauso wenig wie /sbin/shutdown -r

Wäre jetzt interessant zu wissen, wie das auf einem woody ausgesehen hatte.

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Warum ist reboot in /sbin?

Beitrag von Meillo » 11.05.2020 19:24:57

fischic hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 19:12:35
Herr hilf! Zu welcher Diskussion habe ich mich hier trotz meines Halbwissens hinreißen lassen. :oops:

reboot ist der Name meines scriptes für den Neustart. Das ist schon so alt, dass ich das gar nicht mehr wahrnahm. Für'n shutdown habe ich „aus“ gewählt, da gibt's keine MIssverständnisse. /sbin/reboot darf der Buster-Benutzer genauso wenig wie /sbin/shutdown -r
Puh, wenigstens hast du damit mein Weltbild wieder gerade gerueckt. :-D

(Btw, weil du ``Buster'' schreibst: Hast du ein aktuelles Debian ohne Systemd?)

Wäre jetzt interessant zu wissen, wie das auf einem woody ausgesehen hatte.
Woody war noch vor meiner Zeit. Ich habe halt ein Wheezy zu bieten. Das ist auch vor Systemd. Ich glaube nicht, dass sich zwischen Woody und Wheezy in diesem Bereich viel geaendert hat. Fuer einen alternativen Blick sollte man eher ein BSD anschauen.

Was genau interessiert dich denn?
Use ed once in a while!

fischig
Beiträge: 3640
Registriert: 24.12.2019 12:25:08
Lizenz eigener Beiträge: MIT Lizenz

Re: Warum ist reboot in /sbin?

Beitrag von fischig » 11.05.2020 19:38:38

Hast du ein aktuelles Debian ohne Systemd?
Ja.
Und es ist auch gar nicht mal so schwer, das einzurichten. Man muss nur höllisch aufpassen (und je länger es systemd gibt, desto mehr), dass einem da nicht bei der Installation eines anderen Programmes systemd untergejubelt wird. Aber dafür ist ja apt gut.
Was genau interessiert dich denn?
Eigentlich nichts. :wink: Ich sagte ja eingangs schon, dass ich das für mich und auf meine Weise gelöst habe, seit ich Debian benutze, also seit ca. 18 Jahren.

Mir war aber so, dass es da zumindest in meinen Anfangszeiten defaultmäßig durchaus den Unterschied gab: Neustarten durfte der Benutzer, ausschalten durfte er nicht.
Ich werde halt alt und meiner Erinnerung ist immer weniger zu trauen. :cry:

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Warum ist reboot in /sbin?

Beitrag von JTH » 11.05.2020 19:47:41

fischic hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 18:13:40
Ich bleib' einstweilen dabei: Früher war's so, dass jeder Benutzer via Strg+Alt+Entf jedes System neu starten durfte. Eine entsprechende Kombi/Kommando für's Ausschalten gab's nicht (das fand ich immer widersprüchlich). (welches Programm damit gestartet wurde, ist für mich/den Benutzer erst mal sekundär.
Ah, interessant, was für eine Geschichte hinter Ctrl+Alt+Del steckt. Dass es kein Äquivalent für einen Shutdown gibt, liegt an der Herkunft, das Ctrl+Alt+Del ist – offensichtlich – keine Linux-Erfindung.

Bzw. gibt es den eigentlich schon https://en.wikipedia.org/wiki/Magic_SysRq_key#Commands.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
MSfree
Beiträge: 10774
Registriert: 25.09.2007 19:59:30

Re: Warum ist reboot in /sbin?

Beitrag von MSfree » 11.05.2020 20:05:02

fischic hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 19:38:38
Mir war aber so, dass es da zumindest in meinen Anfangszeiten defaultmäßig durchaus den Unterschied gab: Neustarten durfte der Benutzer, ausschalten durfte er nicht.
Ich habe hier noch ein Lenny rumliegen. Das habe ich gerade mal gebootet und ausprobiert. Der normale Benutzer darf weder reboot, noch halt noch poweroff durchführen. Alt-Ctrl-Del war nur ein Eintrag in der inittab, den ich aber bei praktisch allen System auskommentiert habe.

Es gab dann noch die Tastenkombination Alt-Ctrl-Backspace, mit der man den Xserver abschießen konnte, wenn der sich mal verklemmt hatte. Aber auch das war problemlos abschaltbar.

DaCoda
Beiträge: 172
Registriert: 09.07.2019 21:58:10

Re: Warum ist reboot in /sbin?

Beitrag von DaCoda » 13.05.2020 14:05:40

MSfree hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 13:46:12
DaCoda hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 13:38:41
Das s in sbin steht meines Wissens nach für super.
Für Super steht es sicher nicht. Früher ware dort mal statisch gelinkte Porgramme, also solche, die keine "DLLs" brauchen. Heute sind das eher Systemprogramme.
Also unter http://www.linfo.org/sbin.html steht, dass unter /sbin nur Programme sind, welche nur durch den root user ausgefüghrt werden können.
Dadurch zeichnet sich dieses Verzeichnis aus.

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Warum ist reboot in /sbin?

Beitrag von Meillo » 13.05.2020 14:52:40

DaCoda hat geschrieben: ↑ zum Beitrag ↑
13.05.2020 14:05:40
MSfree hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 13:46:12
DaCoda hat geschrieben: ↑ zum Beitrag ↑
11.05.2020 13:38:41
Das s in sbin steht meines Wissens nach für super.
Für Super steht es sicher nicht. Früher ware dort mal statisch gelinkte Porgramme, also solche, die keine "DLLs" brauchen. Heute sind das eher Systemprogramme.
Also unter http://www.linfo.org/sbin.html steht, dass unter /sbin nur Programme sind, welche nur durch den root user ausgefüghrt werden können.
Dadurch zeichnet sich dieses Verzeichnis aus.
Wenn du genau liest, dann steht dort, dass die Programme *normalerweise* nur von root ausgefuehrt werden. Die Programme werden normalen Usern standardmaessig nicht angeboten ($PATH), aber jeder User kann $PATH selber veraendern und auch unabhaengig von $PATH mit einem absoluten Pfad beliebige Programme aufrufen (fuer die er Executable-Rechte hat). Dass /bin und /sbin getrennt sind ist insbesondere heutzutage eine reine Convenience-Massnahme, also fuer ein angenehmeres Leben, ohne relevante technische Auswirkungen.

Die Seite, die du verlinkt hast, wuerde ich nicht als beste Quelle ansehen. (``The Linux Information Project (LINFO) was launched in early 2004 by Bellevue Linux Users Group (BELUG)...'') Wenn du es definitiver wissen willst, dann schau lieber beim FHS nach. Oder die Manpage hier(7). Aber auch dort muss man sich bewusst sein, dass dort keine statische Wahrheit zu finden ist.

Das Unix-Filesystem kann frei gestaltet werden. Wenn du dir ein Linux from Scratch baust kannst du /bin auch einfach /foo nennen. Wie bei Sprachen macht es die Situation fuer alle leichter wenn es Gemeinsamkeiten gibt, darum machen es die meisten Linux-Distributionen und sonstigen Unixe aehnlich, gleichzeitig gibt es allerlei Dialekte, also Abweichungen (z.B. /var und /srv).

Und darueber hinaus muss man den historischen Kontext sehen. Wie etwas entstanden ist und wie es heute verwendet wird kann unterschiedlich sein. Z.B. bei /sbin: entstanden als ``static binaries'', heute genutzt als ``system binaries''. Oder /usr: entstanden als ``user directories'', heute genutzt als ``unix system resources''.

Im Grunde denke ich, dass es darauf keine exakten Antworten gibt. Moeglich ist nur, dass du mehr Wissen um das Thema /sbin aufbaust. Das sind dann verschiedene Verwendungen in verschiedenen Systemen in verschiedenen Jahrzehnten. Das sind vermutlich urspruengliche Mnemonics und nachtraeglich uebergestuelpte Bedeutungen. Das ist eine Bestandsaufnahme dazu wie aktuelle Systeme das Verzeichnis nutzen und was FHS dazu sagt.


Um auf deine Titelfrage zurueck zu kommen: `reboot' ist aus historischen Gruenden in /sbin ... es war schon immer dort, seit es /sbin gibt. Unix ist eigentlich ein Server-Betriebssystem auf dem normale User das System nicht neu starten duerfen, sondern der Neustart ist eine Systemadministrationsaufgabe, darum muss der Befehl normalen Usern (via $PATH) nicht angeboten werden. Dass du als normaler User auf deinem Desktop-System dennoch /sbin/reboot ausfuehren kannst ist eine Entwicklung der letzten paar Jahre ... vor einem Kontext von 50 (!) Jahren Unix, in dem das nicht moeglich war. Aber wie oben gesagt: /sbin heisst nicht, dass normale User die Befehle nicht ausfuehren duerfen, sie werden ihnen nur nicht standardmaessig angeboten. Was aber bei einem Desktop-Environment wiederum irrelevant ist.

Ich hoffe, ich konnte die Komplexitaet und die vielen kulturellen Einfluesse und Bezuege hinter dieser scheinbar einfachen Frage verstaendlich machen.


Btw: Falls du solche Dinge gerne geaendert haettest, dann schau dir mal andere Distributionen an, war es nicht Fedora oder Arch, die einfach /bin und /sbin und /usr/sbin alles auf /usr/bin gesymlinkt haben? Die haben letztlich also alle Executables in einem Verzeichnis. Die Symlinks sind nur zu Kompatiblitaetszwecken noch vorhanden.
Use ed once in a while!

DaCoda
Beiträge: 172
Registriert: 09.07.2019 21:58:10

Re: Warum ist reboot in /sbin?

Beitrag von DaCoda » 13.05.2020 16:25:12

Danke @Meillo das war schon sehr aufschlussreich.

Man könnte noch folgende Fragen klären:
1. Darf bei einer heutigen Serverdistribution auch jeder user reboot ausführen?
2. Wer hat entschieden, dass reboot in /sbin ist? Die debian-Enwtickler?
3. Wie würde man einem normalen user verbieten /sbin/reboot auszuführen? Ich denke chmod auf die Datei reicht nicht, da der user ja seine eigene reboot Datei mitbringen könnte.

Benutzeravatar
Meillo
Moderator
Beiträge: 8817
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Warum ist reboot in /sbin?

Beitrag von Meillo » 13.05.2020 17:24:52

DaCoda hat geschrieben: ↑ zum Beitrag ↑
13.05.2020 16:25:12
Man könnte noch folgende Fragen klären:
1. Darf bei einer heutigen Serverdistribution auch jeder user reboot ausführen?
3. Wie würde man einem normalen user verbieten /sbin/reboot auszuführen? Ich denke chmod auf die Datei reicht nicht, da der user ja seine eigene reboot Datei mitbringen könnte.
Darauf muessen die Systemd- und Policykit-Experten antworten.
2. Wer hat entschieden, dass reboot in /sbin ist? Die debian-Enwtickler?
Dass `reboot' in Debian in /sbin liegt haben die Debian-Entwickler so ``entschieden'' in der Form, dass sie sich auch anders entscheiden koennten. Genaugenommen habe sie nur entschieden es in Debian auch so zu machen wie es ueblich ist.

Nun habe ich mal ein bisschen nachgeforscht:

- In der Manpage reboot(8) aus 4.4BSD Lite 2 steht:
https://www.freebsd.org/cgi/man.cgi?query=reboot&apropos=0&sektion=8&manpath=4.4BSD+Lite2&arch=default&format=html hat geschrieben: HISTORY
A reboot command appeared in Version 6 AT&T UNIX.
In der Dokumentation von Version 6 Unix (aka. 6th Edition) finde ich aber nichts: http://man.cat-v.org/unix-6th/8/
Auch im Filesystem-Tree finde ich es nicht:
https://unixarchive.cn-k.de/PDP-11/Trees/V6/

Im Research-Unix finde ich `reboot' erst ab der 8th Edition dokumentiert. Dort lag es unter /etc/reboot (wie auch /etc/init lange Zeit).
http://man.cat-v.org/unix_8th/8/reboot
(/etc ist erst spaeter zu einem reinen Konfigurationsverzeichnis geworden. Der Name steht ja auch fuer `et cetera', also alles was sonst keinen Platz hat.)

Wo `reboot' liegt steht in den Manpages nicht immer dabei. Bei den aeltesten Linux-Manpages, die ich auf die Schnelle gefunden habe, ist der Pfad immer /sbin/reboot.

Im Research-Unix (zumindest vor dem Abspalten von BSD sehe ich kein /sbin ... wahrscheinlich kam dynamic Linking erst spaeter auf, evtl. via BSD). 2.11BSD hat aber /sbin und darin ein `reboot':
https://unixarchive.cn-k.de/PDP-11/Trees/2.11BSD/sbin/

So, jetzt habe ich gerade keine Lust (und keine Zeit mehr) noch tiefer zu graben. Vielleicht spaeter nochmal ...
Use ed once in a while!

Benutzeravatar
MSfree
Beiträge: 10774
Registriert: 25.09.2007 19:59:30

Re: Warum ist reboot in /sbin?

Beitrag von MSfree » 13.05.2020 17:55:04

Meillo hat geschrieben: ↑ zum Beitrag ↑
13.05.2020 17:24:52
wahrscheinlich kam dynamic Linking erst spaeter auf
Genau genommen kam dynamic Linking auf, als das Executable Format von COFF auf ELF umgestellt wurde. COFF kann nämlich kein dynamic Linking. Das war laut Wikipedia im Jahre 1989. Obwohl ich zum ersten Mal mit ELF zu tun hatte, als SGI ihr Irix 5.0 1993 eingeführt hat.

michaa7
Beiträge: 4632
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Re: Warum ist reboot in /sbin?

Beitrag von michaa7 » 25.05.2020 13:26:42

Als langjähriger Fluxboxuser war ich froh vor ein paar Monaten hier über einen Thread zu stolpern, in dem beschrieben wurde dass und wie jeder User den Rechner direkt runterfahren kann, wie das die modernen DEs sowieso schon immer ermöglichten (in soweit verstehe ich den Threadstarter nicht). In Fluxbox jedoch (was ja nur ein WM ist) waren dazu immerr zwei SChritte nötig: fluxbox beenden -> im Loginmanager ein reboot/shutdown auslösen (so es dort konfiguriert war, was meist der Fall ist). Das war umständlich. Und das war seinerzeit nur durch Eigenkonfiguration von sudo zu umgehen, weshalb ich die Finger davon gelassen habe. Dass das nun per systemd anders geregelt ist freut mich, weil es mir die Handhabung vereinfacht. Und bei einen system das auf dem Schreibtisch als Desktop genutzt wird darf man davon ausgehen, dass hier Debian eben nicht als Mehrplatznutzersystem genutzt wird und somit der User beim runterfahren nicht andere User mit in die ewigen Jagdgründe reißt.

Dennoch ist das ein Paradigmenwechsel. Da aber Mehrplatzsysteme wohl in der Minderheit gegenüber Einzelplatz-/Einzelusersystemen sind scheint es gerechtfertigt, nun den ggf. notwendigen Umkonfigurierungsaufwand dem Sysadmin eines Mehrplatzsystems aufzubürden.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Antworten