UNIXwork

USB-Seriell-Adapter

14. Dezember 2016

Wer hätte gedacht, dass man beim Kauf eines USB-Serial-Adapter etwas falsch machen kann. Ich hab kürzlich ein QinHeng Electronics HL-340 USB-Serial Adapter gekauft und das Teil kann man echt nicht empfehlen. Linux hat zwar den ch341-Treiber dafür, der funktioniert jedoch nicht gut. Nach dem Anschließen taucht ein Device /dev/ttyUSB0 auf, der Versuch davon zu lesen liefert aber nur Datenmüll (ja, die Baud-Rate und andere Settings waren korrekt eingestellt).

Eine Recherche im Internet hat ergeben, dass genügend andere Leute das gleiche Problem haben, oder ganz andere Probleme, auch unter Windows. Manche haben es hingekriegt, indem sie am Treiber rumgehackt haben. Ich kaufe mir lieber was ordentliches. Empfehlenswert sollen wohl Produkte mit Prolific-Chip sein.

Autor: Olaf | 0 Kommentare | Tags: hardware

Extended Attributes Teil 6: Solaris Syscalls

13. Dezember 2016

Programmiertechnisch sind Extended Attributes unter Solaris nur Dateien, daher gibt es keine speziellen Syscalls für den Zugriff darauf.

Eine Attribut-Datei öffnen kann man mit openat. Hierfür benötigt man nur einen File-Descriptor der Datei, von der man ein Attribut öffnen will. Es muss dann nur noch das O_XATTR-Flag zusätzlich angegeben werden. Man erhält einen gewöhnlichen File-Descriptor, aus dem wie gewohnt gelesen und geschrieben werden kann.

Hier ist ein kleines Beispielprogramm, dass ein Attribut ausliest und auf der Konsole ausgibt.

Die Liste aller Attribute erhält man, in dem man das Attribut-Verzeichnis ließt. Der Trick ist hier, dass man das "."-Verzeichnis relativ zur Datei mit dem O_XATTR-Flag öffnet.

int attrdir = openat(file, ".", O_RDONLY|O_XATTR);

Hier ist ein Beispiel dafür.

Für andere Dateisystemoperationen wie z.B. unlink oder chown gibt es ebenfalls *at-Funktionen, die man in Kombination mit einem File-Desriptor des Attribut-Verzeichnis benutzen kann. Siehe unlinkat, fstatat, fchownat.

Anstatt zuerst eine Datei mit open und danach mit openat das Attribut zu öffnen, kann man auch attropen benutzen, die das ganze in einer Funktion zusammenfasst.

Autor: Olaf | 0 Kommentare | Tags: solaris, xattr, c

Extended Attributes Teil 5: Solaris Commandline Tools

12. Dezember 2016

In Solaris sind Extended Attributes keine Key/Value-Paare, sondern werden als Dateien repräsentiert. Hinter jeder Datei im Dateisystem steckt eine weitere Datei-Hierarchie, die jedoch auf normale Dateien beschränkt ist, also keine Unterverzeichnisse oder Links erlaubt. Attribute sind somit nur Dateien, für die die selben Limits für die Dateigröße oder Namen gelten. Außerdem haben sie eigene Zugriffsrechte. Nur einen absoluten Pfad haben sie nicht.

Für den Zugriff auf Attribute über die Shell gibt es das runat Tool. Dieses macht nichts weiter als das Working-Directory auf das versteckte Attributverzeichnis zu setzen und dann ein gewünschtes Kommando auszuführen. Man kann auch einfach eine Shell für dieses Verzeichnis starten. Um die Attribute dann zu lesen, schreiben oder aufzulisten können prinzipiell alle Programme verwendet werden.

$ touch test.txt
$ runat test.txt sh
$ echo "xattr test string" > testattribute
$ echo "text/plain" > mime_type
$ ls
mime_type      SUNWattr_ro    SUNWattr_rw    testattribute
$ cat testattribute
xattr test string
$ exit

Kommen wir zu der Unterstützung für Extended Attributes in den Standard-Unix-Tools.

Dateisysteme werden nicht nur ZFS und UFS unterstützt, sondern auch NFS. Und betreibt man einen Solaris smb-Server werden die Extended Attributes dort auch über smb als NTFS Alternate Data Stream zur Verfügung gestellt.

Siehe auch: fsattr(5)

Autor: Olaf | 0 Kommentare | Tags: solaris, xattr, shell

Programme anhalten und fortsetzen

11. Dezember 2016

Es ist möglich Programme einfach anzuhalten, und zu einem beliebigen Zeitpunkt fortzusetzen. Zum stoppen schickt man das SIGSTOP-Signal an den Prozess, zum fortsetzen SIGCONT.

Kleine Demonstration, in der der Sekundenzeiger von xclock angehalten wird.

$ xclock -update 1 &
$ kill -STOP $!
$ kill -CONT $!
Autor: Olaf | 0 Kommentare | Tags: unix

Spezielle Dateisystemattribute

10. Dezember 2016

Diesmal geht es nicht um Extended Attributes, jedoch um eine andere Art von Dateiattributen, die auch für den Kernel von Bedeutung sind. Mit diesen kann man beispielsweise Dateien unveränderbar machen oder einstellen, dass an die Datei nur neue Daten angehangen werden können, aber nicht der bisherige Inhalt überschrieben werden kann. Das ganze ist völlig unabhängig von den eigentlichen Rechten der Datei.

Beispiel unter Linux:

# chattr +i myfile

Danach ist die Datei unveränderbar. Selbst root kann die Datei nicht verändern, solange das Attribut gesetzt ist. Natürlich könnte root es entfernen und danach die Datei verändern.

Unter Solaris verändert man diese Attribute mit chmod. Interessant ist da z.B. das nounlink-Attribut.

# chmod S+vnounlink myfile
rm: myfile not removed: Not owner
# echo newcontent > myfile
# chmod S-vnounlink myfile
# rm myfile
# 

Das verhindert effektiv, dass man sich wichtige Dateien versehentlich löscht.

Applying Special Attributes to ZFS Files chattr (ubuntuusers Wiki)

Autor: Olaf | 0 Kommentare | Tags: solaris, linux, zfs
Zurück Weiter