[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Shutdown temporär unterbinden



On Sat, Nov 20, 2010 at 10:02:55PM +0100, Dirk Salva wrote:
> On Sat, Nov 20, 2010 at 09:57:46AM +0100, Wilko Fokken wrote:
> > Moin mitnanner,
> > ich weiß nicht, ob ich in dieser Frage noch mitreden kann, aber mein Debian
> > Sarge kennt die Option 'shutdown -a'; dann prüft shutdown, ob eine Datei
> > '/etc/shutdown.allow' existiert und verhält sich gemäß den dortigen
> > Eintragungen.
> > root könnte diese Datei beim Einloggen temporär anlegen und beim Ausloggen
> > (per 'trap'?) wieder löschen.

'trap' habt in meiner Testkonfiguration nicht funktioniert;
ich habe es durch '~/.bash_logout' es funktioniert gut.

> Das wäre die allereleganteste Lösung, wie sie mir vorschwebt: Vom root
> (btw. meinem User, sobald der am System angemeldet wird!), sobald er
> angemeldet wird, eine temporäre Datei erstellen lassen, auf die
> generell getestet wird, und wenn die existiert, wird nicht
> heruntergefahren.
> Dabei an so wenig Stellen wie möglich im System was verändern müssen,
> weil jede Veränderung sowohl dokumentiert als auch bei jedem
> System-update wieder auf Existenz und Funktionsfähigkeit überprüft
> werden müsste.
> 
> > In '/etc/inittab' (falls diese Datei bei Euch noch existiert)
> > ist die shutdown-Option '-a' bereits eingetragen:
> > 'ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -h now'
> > '/etc/shutdown.allow' würde also abgrfragt.
> 
> Das betrifft aber meiner Information nach ausschliesslich die
> Tastenkombination. Ansonsten muss beim shutdown-Befehl explizit -a
> angegeben werden, oder? Wenn letztere Vermutung richtig wäre, wäre das
> auch wieder unschön, weil man jede Stelle im System darauf hin
> überprüfen müsste, ob auch "-a" verwendet wird. Oder habe ich da was
> falsch verstanden?
> 
> ciao, Dirk



Moin Dirk,

(ich habe nach längerer Auszeit für Krankenpflege 'mutt' mit dem für mich
noch nicht so vertrauten 'exim4' konfiguriert - deshalb meine ersten beiden,
etwas doppelt gemoppelten Mails.)

In meiner Antwort-Mail an mich selbst habe ich meine Testkonfiguration
für die Anwendung von 'Ctrl-Alt-Del' dargestellt; sie funktioniert.



Für das Problem eines manuellen Aufrufes von 'shutdown' durch Normaluser
sehe ich im Moment drei Möglichkeiten:

a) ein global aufrufbares Shellscript: '/usr/local/sh/shutdown',
   dessen Verzeichnis im Pfad VOR '/sbin/' eingetragen werden muß:
   
      'sudo shutdown -a "$*"'

b) Ein analoger Eintrag in '/etc/profile.local' als Shell-Funktion für
   alle User. Vorteil: Wird unbedingt VOR '/sbin/shutdown' aufgerufen.
  
      'shutdown ()	{
	     sudo /sbin/shutdown -a "$*"
       }'

c) Eine eigene Datei '/etc/aliases.sh' wird für allgemein verwendbare
   Aliase eingerichtet, aufgerufen von /etc/profile.local' (vgl. b)).
   
   Für den Aufruf von shutdown wird eingetragen:
	   
       "alias shutdown='sudo /sbin/shutdown -a'"

   
Die Version c) scheint mir die schlichteste und schlankeste Umkonfiguration:
   - der einzige möglicherweise Update-gefährdete Eintrag ist die letzte
     Zeile von '/etc/profile/:

# -------------------------------------------------
test -f /etc/profile.local  && . /etc/profile.local
# -------------------------------------------------

Diese 3 Zeilen können in einer eigenen Datei, z.B. 'call_local_profile'
gespeichert werden und nach einem System-Update an die neue
Standard-'/etc/profile' angehängt werden:

   "cat call_profile.local >> /etc/profile"

In der '/etc/profile.local' muß auch die Datei '/etc/aliases.sh' aufgerufen
werden, um alle gewünschten Aliase zu aktivieren:

   # rework bash aliases (/etc/aliases.sh):
   # ------------------------------------------
   unalias -a          # unset existing aliases
   . /etc/alias.sh     # set customized aliases


In die Datei '/etc/alias.sh' wiederum muß der Aufruf

   "alias shutdown='sudo shutdown -a'"

eingetragen werden.

=====================================================================

Das Problem, nach jedem Update '/etc/profile' zu prüfen, ob der Aufruf
von '/etc/profile.local' noch vorhanden ist, scheint mir nicht allzu
gravierend.

Die neuen Dateien: '/etc/profile.local' und '/etc/aliases.sh' sind von
System-Updates nicht betroffen.

Die Hilfsdatei '/etc/call_profile.local' bleibt ebenfalls unbehelligt.

So braucht sich also normalerweise nur den obigen 'cat'-Befehl zu merken,
um eine neue '/etc/profile' wieder in ihren modifizierten Stand zu
versetzen.

(Im übrigen sichere ich das ganze Verzeichnis '/etc' als tar-Datei.)
=====================================================================

Das Restrisiko, ob ein Normaluser, der nicht 'shutdown' aufruft, sondern
'sudo shutdown', ob der den Shutdown-Parameter dabei löscht, kann ich noch
nicht testen, da bei erfolgreichem Shutdown meine jetzigen sessions beendet
würden.

(Ich verweise noch einmal auf meine Test-Konfiguration in meiner anderen Mail.)


Gruß Wilko Fokken


-- 
Wilko Fokken                            De Künst' geiht wiet, say de Boer;
Landschaftspolder 67                    do sach hei 'n Aap.
D-26831 Bunde
--------------------
Tel. 04953-9219882


Reply to: