Freitag, 20. Juli 2012

Ubuntu 12.04 per crontab mit Meldung herunterfahren

Problem

Ubuntu per Crontab herunterzufahren ist ja kein Problem, etwas schwieriger wird es, wenn man Warnungen auf dem Desktop des angemeldeten Users haben möchte.

Vorarbeiten

Unter 
/etc/xdg/autostart
die Datei
 postlogin-xhost-root.desktop
anlegen. Diese Datei wird bei jedem Login ausgeführt. Folgenden Inhalt einfügen:
#!/usr/bin/env 
xdg-open 
[Desktop Entry] 
Encoding=UTF-8 
Name=Postlogin-xhost-root 
Comment=Zugriffsrecht für root auf Display 
Exec=/usr/bin/xhost +local:root 
Terminal=false 
Type=Application 
OnlyShowIn=GNOME;XFCE;KDE;Unity; 
NoDisplay=true
Jetzt darf der User root auf das Display des Users zugreifen.
Nun die Datei
/etc/crontab
bearbeiten und folgende Zeile ganz unten einfügen:
00 18    * * *   root   env DISPLAY=:0 /usr/bin/herunterfahren
Damit wird das weiter unten beschriebene Skript um 18:00 Uhr ausgeführt. Die Datei
/usr/bin/herunterfahren
anlegen und sie ausführbar machen:
 sudo chmod +x herunterfahren
Es gibt nun 2 Wege, Weg A blendet für 6 Sekunden (Timeout entgegen der man-Pages leider nicht einstellbar) Warnmeldungen ein, Weg B lässt dem User die Möglichkeit, das Herunterfahren abzubrechen.

Weg A:

  In die Datei /usr/bin/herunterfahren folgendes einfügen:

#!/bin/bash
notify-send -u critical -i /usr/share/icons/Humanity/status/48/dialog-warning.svg "ACHTUNG!" "Der Rechner schaltet sich in 2 min aus! Speichern Sie Ihre Daten jetzt!" &
sleep 60
notify-send -u critical -i /usr/share/icons/Humanity/status/48/dialog-warning.svg "ACHTUNG!" "Der Rechner schaltet sich in 1 min aus! Speichern Sie Ihre Daten jetzt!" &
sleep 60
notify-send -u critical -i /usr/share/icons/Humanity/status/48/dialog-warning.svg "ACHTUNG!" "Der Rechner schaltet sich JETZT aus!" &
sleep 15
shutdown -h now
exit 0

 Weg B:

In die Datei /usr/bin/herunterfahren folgendes einfügen:
#!/bin/bash
USERCOUNT=$(who | wc -l) 

if [ $USERCOUNT = "0" ]; then 
shutdown -h now; else
zenity --question --timeout=30 --text="Der Rechner wird in 30 Sekunden abgeschaltet. Ist das OK?" --title="PC-Abschaltung"; STATUS=$?
if [ $STATUS = "1" ]; then
echo "";
else
zenity --info --timeout=120 --text "Der Rechner wird in 2 Minuten oder mit einem Klick auf OK heruntergefahren. Bitte speichern Sie JETZT Ihre Arbeit!"; shutdown -h now 

fi
fi

Quellen (überarbeitet und Fehler behoben!):

Montag, 16. Juli 2012

Ubuntu und Linuxmuster mit Moodle-LDAP-Auth

Problem:

Wie konfiguriere ich ein Moodle unter Ubuntu 12.04 so, dass es auf das LDAP einer Linux-Musterlösung zugreift und sich die Nutzer darüber authentifizieren können?


Lösung:

1. Moodle-Plugin Authentifizierung/LDAP-Server

Host URL: LDAPS://xxx.xxx.xxx.xxx
Version: 3
Codierung: UTF-8
Nein-Leer-Leer
Nutzertyp: posixAccount (rfc2307)
Kontexte: ou=accounts,dc=[vorne],dc=de
Ja-Nein
Nutzermerkmal: UID
Mitgliedsmerkmal: Member
Leer
ObjectClass: objectClass=posixAccount
Nein-Nein-reiner Text-Leer
no-10-leer-nein-leer
nein-leer
leer
nur intern zugänglich
nein-leer-nein-NTLM

2. IPCop-Firewall-Regel:

LDAPS-Port 636 auf die Adresse des Servers leiten.

3. ldap.conf auf dem Ubuntu-Server bearbeiten:

Zur Datei
/etc/ldap/ldap.conf
folgendes hinzufügen:
TLS_REQCERT never

Ergänzung:

Wenn man einige Benutzerfelder in Moodle aus dem LDAP der Musterlösung übernehmen will, bietet sich folgende an:

Moodle-Plugin Authentifizierung/LDAP-Server unter dem Punkt "Datenzuordnung":

Vorname: givenName 
Nachname: sn
Stadt/Ort: gidNumber
(bei letzterem wird eine Nummer eingefügt, die für Lehrer (10000) oder eine Klasse steht.)

Ubuntu 12.04-Anpassungen für Unterrichtsrechner

Ubuntu 12.04 eignet sich meiner Meinung nach auch mit dem Unity-Desktop gut für Unterrichtsrechner. Einige Anpassungen müssen aber dennoch gemacht werden.
Ich gehe hier von einem Ubuntu 12.04 (Precise Pangolin) aus, das bereits mit dem Linuxmuster-Client-Paket des Linux-Musterlösung-Schulservers (derzeit noch im Beta-Status, funktioniert bei mir aber gut) "geimpft" wurde und in der Folge bereits einige Grundeinstellungen erhalten hat.

Die Vorschläge habe ich größtenteils von der Seite 
http://www.linuxmuster.net/clients:linux_clients:merkzettel_linuxclient
übernommen, wobei die Anpassungen an 12.04 von mir zusammengesucht wurden.

Chat-/Mail-Icon in der Unity-Titelleiste

Radikal:
sudo apt-get remove indicator-messages

Vorsichtiger:
Die Datei 
/usr/lib/indicators3/7/libmessaging.so
umbenennen in .../libmessaging.so.bak

Ruhezustand aus dem Menü entfernen

(Quelle:  http://www.linuxmuster.net/clients:linux_clients:merkzettel_linuxclient#ruhemodi_aus_dem_menue_entfernen)

Die Datei 
/usr/share/polkit-1/actions/org.freedesktop.upower.policy
bearbeiten. Im Abschnitt suspend die Zeile
yes
suchen und das yes durch ein no ersetzen.
Das gleiche im Abschnitt hibernate durchführen. 

"Bildschirm sperren" entfernen

Hierbei hilft die Software "Ubuntu-Tweak", mit der man auch einige weiter Einstellungen vornehmen kann, z.B. die Knöpfe der Fenster-Kopfleiste von links wieder nach rechts bewegen...

Im "Werkzeug-Menü" oben rechts auf "Anwendungen sind aktuell", dann auf "Einstellungen", "Andere Software", "Hinzufügen" und dort eingeben:
ppa:tualatrix/ppa
Nach Bestätigung in ein Terminal-Fenster gehen und dort folgende beide Befehle ausführen:
sudo apt-get update
sudo apt-get install ubuntu-tweak
Jetzt kann man ubuntu-tweak starten und dort unter "Optimierungen", "Session Indicator" den Punkt "Bildschirm sperren deaktivieren" ankreuzen.

Mir noch nicht ganz klar, ob es auf alle User wirkt:
Um zu verhindern, dass nach einiger Zeit der User-Inaktivität der Bildschirm gesperrt wird, muss man folgenden Befehl (als Linuxadmin, nicht als sudo!) eingeben:
gsettings set org.gnome.desktop.screensaver lock-enabled false
(vgl. auch: http://askubuntu.com/questions/65900/how-can-i-change-default-settings-for-new-users)

Automatischen Updatecheck deaktivieren

Natürlich sind Updates wichtig, da die Nutzer aber sowieso keine Rechte zur Installation haben und das Image bei Synchronisierung von den Updates nichts mitbekommt, kann man die automatischen Updates auch abschalten.
Im "Werkzeug-Menü" oben rechts auf "Anwendungen sind aktuell", dann auf "Einstellungen", "Aktualisierungen",dort bei "Automatisch nach Aktualisierungen suchen" in der Liste "niemals" auswählen.

Menüleiste in LibreOffice nach Unity-Manier

Die Menüleiste in LibreOffice erscheint nicht, wie bei anderen Prorammen, z.B. Firefox unter Unity üblich, in der Menüleiste am obersten Bildschirmrand (wie bei MacOS), sondern immer oben im Programmfenster. So ist man es zwar von MS-Windows gewohnt, es ist in sich aber inkonsistent.
Wenn man es unter Ubuntu lieber immer gleich hat, und sich von den Microsoft-Vorgaben lösen kann, kann man das Problem durch folgenden Befehl lösen:
sudo apt-get install lo-menubar
[Update:]
Das Obige gilt nur für LibreOffice < 4.0. Unter aktuellen Versionen gibt es meines Wissens keinen Weg, die Menüleiste in das global menu zu verschieben. Der Versuch der Installation von lo-menubar führt zu einer Fehlermeldung wegen unlösbarer Abhängigkeiten. Ich bin deshalb des umgekehrten Weg gegangen, um die Bedienung konsistent zu halten:

Menüleiste nach Unity-Manier abschalten (auch in Firefox)

Will man die Menüleiste wie früher im Programmfenster und nicht in der Kopfleiste des Desktops (global menu), entsorgt folgender Befehl die entsprechenden Programmkomponenten:
sudo apt-get remove appmenu-gtk appmenu-gtk3 appmenu-qt firefox-globalmenu
Das allein hilft bei Firefox > 22  aber noch nicht weiter, hier ist in Firefox ein weiterer Schritt vonnöten:
  1. In die Adresszeile about:config eingeben.
  2. Nach unity suchen.
  3. Doppelklick auf den Eintrag (ui:use_unity_menubar), der Wert wechselt dann von true auf false
Dank für diese Lösung an: Henning Schmidt
[/Update]


Kleinhalten des Images

Nach der Installation und diversen Updates liegen einige Dateileichen herum (alte Kernels, veraltete Programmversionen usw.). Diese kann man entweder mit
sudo apt-get clean
entsorgen, oder von ubuntu-tweak ("Hausmeister") entfernen lassen.