08.02.2010

Benutzerrechte: Filesystem Access-Control-List (FACL) unter Linux

Immer wieder höre ich, dass Linux bei der Vergabe von Benutzerrechten Windows nachstehe.

Der Grund hierfür ist jedoch nicht, dass Linux Benutzerrechte an Dateien nicht genau so genau vergeben kann wie Windows, der Grund ist, dass zu viele nicht wissen wie das geht. Und zugegeben: es gibt derzeit für einiges hiervon keine grafische Oberfläche.

Der Mangel an , nennen wir es „klickablen“ war es dann aber auch schon, für Administratoren dürfte schon wesentlich interessanter sein, dass sich Vorlagen für Benutzerrechte in menschen- und maschinenlesbaren Textdateien speichern und also auch verarbeiten lassen. Diese Dimension bietet Windows nicht.

Da ich damit rechnen muss das diesen Artikel auch (künftige) Systemadministratoren lesen werden die bisher nur wenig mit Linux zu tun hatten beginne ich mit einem Exkurs in die „gewöhnlichen“ Rechteverwaltung unter Unix.

Benutzerrechte_Access-Control-Lists_ACL_unter_Linux.pdf

07.02.2010

SuSE-Linux / Seltsamer Fehler / Platte voll

Vor ein paar Tagen meldete mir Yast anlässlich einer Softwareinstallation (ich weiß), dass die Festplatte voll sei. Da ich System-Partition und Datenpartition (Home-Verzeichnise, srv-Verzeichnisse und dergleichen) strikt getrennt hatte wunderte mich das nicht wenig, denn die System-Partition hatte runde 40 Giga-Byte und damit reichlich Platz, temp-Verzeichnisse werden bei jedem Reboot gelöscht. (Desktop) Da sollte eigentlich nichts überlaufen.

Also: Nachsehen...
cd /
sudo du -xm | sort -n | tail -n5
brachte mich ganz schnell zum Verzeichnis /var/log
cd /var/log
ls -l
mit dem Übeltäter zypper.log-20100203.
sudo rm zypper.log-20100203
Das schuf mal eben reichlich 30 Gigabyte Platz auf der Festplatte. Wofür diese Datenmenge gebraucht wurde? Keine Ahnung, ist aber ohnehin ein Backup. OpenSuSe 11 mit zypper 0.11.11 ist auf dem System.

04.01.2010

About: Frickelware Windows 7

Man braucht nur eine Windows-Installation, ein paar freie Tools zur Herstellung bootbarer CDs oder DVDs, muss dann ein wenig in der Registry der neuen Windowsinstallation herumpfuschen, ein paar Mal neu starten, seltsame Tastenkombinationen bemühen und ganz zum Schluss den Registrierungsschlüssel eingeben (falls der Rechner schon eine Internetverbindung hat...)

Das nenn ich ein sauberes Freakup!

Besitzer von XP oder Vista dürfen Windows 7 als Upgrade-Lizenz erwerben, als Student oder im Dreierpack sogar besonders günstig. Dass sich damit trotz des Namens oft keine bestehende Windows-Installation aktualisieren lässt, war bereits bekannt, nicht aber, dass nicht einmal eine saubere Neuinstallation vorgesehen ist. Mit einem Trick klappts trotzdem.

Quelle: heise-online - Der Upgrade-Trick: Upgrade-Lizenzen von Windows 7 sauber neu installieren

22.12.2009

PHP, Einlesen einer Excel-Datei

Hallo Community,
bitte dringend um Hilfe beim einlesen einer Excel Datei...

Also ich lade eine Excel Datei hoch, und möchte sie Zeile für Zeile und Spalte für Spalte aus lesen.

So sieht mein Script etwa aus:
----------------

$dom = DOMDocument::load( $_FILES['file']['tmp_name'] );
$rows = $dom->getElementsByTagName( 'Row' );

foreach ($rows as $row)
{
$cells = $row->getElementsByTagName( 'Cell' );
foreach( $cells as $cell )
{
$cellwas=$cell->nodeValue;
...
---------------


Leider kann ich so nur alle Zellen mit Inhalt auslesen. Also leere Zellen werden einfach übergangen, wodurch das ganze unbrauchbar wird.

Kann mir irgendjemand sagen wie ich zum Beispiel in einer Zeile jede Zelle einzeln abfragen kann, auch wenn diese Leer ist?


Eine schnelle Lösung:

Beim Blick in den Quelltext einer solchen Datei sehe ich: Leere Zellen lassen sich gar nicht abfragen. Die Zelle existiert in den Daten schlicht nicht. Die Zellen nach leeren Zellen haben aber ein Attribut 'ss:Index'. Also: Nach der Existenz des Attributes fragen, wenn es existiert den Spaltenzähler auf den Wert setzen.

Bei mir funktionierte mit test.xml als (aus OpenOffice exportierte) Excel-2003-xml-Datei:
<?php
$dom = DOMDocument::load( "test.xml" );
$rows = $dom->getElementsByTagName( 'Row' );
$zeile=0;
$arValues=array();
foreach ($rows as $row) {
$cells = $row->getElementsByTagName( 'Cell' );
$spalte=0;
foreach( $cells as $cell ) {
if ($cell->hasAttribute('ss:Index')) {
$spalte=$cell->getAttribute('ss:Index')-1;
}
$arValues[$zeile][$spalte]=$cell->nodeValue;
$spalte++;
}
$zeile++;
}

$zeile=0;
$maxSpalten=0;

# spalten zählen
foreach ($arValues as $arZeile) {
if ($maxSpalten < count($arZeile)) {
$maxSpalten = count($arZeile);
}
}

# Array mit false aufüllen und für foreach schön machen:
$arTemp=$arValues;
$arValues=array();
for ($zeile=0; $zeile < count($arTemp); $zeile++) {
for ($spalte=0; $spalte < $maxSpalten; $spalte++) {
if (isset($arTemp[$zeile][$spalte])) {
$arValues[$zeile][$spalte]=$arTemp[$zeile][$spalte];
} else {
$arValues[$zeile][$spalte]=false;
}
}
}
unset($arTemp);
print "Werte:<pre>";print_r($arValues);print "</pre>";
?>


Hinweis:

Diese schnelle Lösung berücksichtigt übrigens noch nicht, dass ein solches Dokument auch Tabellenblätter hat.

20.12.2009

Ein Computer ist ein elektrischer Idiot

Ein Computer ist ein elektrischer Idiot, der jede Programmanweisung (also auch falsche) sehr genau befolgt und dabei wahnsinnig schnell ist und sich sehr viel merken aber auch sehr viel vergessen kann (und wird!). Demnach ist er das geeignete Werkzeug um viel Zeit (für Berechnungen etc.) und Geld zu sparen oder aber zu verschwenden (Daten- und Fehlersuche).

Aus Daten und Programmen macht ein Computer Ausgaben (gibt Auskünfte), die so richtig und vollständig sind wie die Daten und Programme, von denen oft niemand mehr genau weiß wie gut diese sind, also im Normalfall die Richtigkeit und Genauigkeit der erhaltenen Auskünfte kaum noch abschätzen kann. Dem nach unterscheiden sich die Computerbenutzer im Extremfall in notorische Skeptiker (die alles nachprüfen), Blindgläubige (die den Anweisungen des Navigationsgerätes auch folgen, wenn es auf der Autobahn zum Wenden auffordert) und denen die versuchen auf Grund von Erfahrungssätzen (das genau kann ein Computer nicht) einen vernünftigen Weg zwischen beiden zu finden. An den Rändern des Spektrums der Benutzer finden sich Personen, die ebenso dumm sind wie ein Computer (sie folgen einen Programm) - aber längst nicht so schnell.

Was die von einem Computer erhaltenen Auskünfte (Daten und Programmen...) betrifft: Oft sind es nicht die, die wir erwarten. Das bedeutet aber nicht zwingend, dass diese falsch sind.