Cygwin, Unixtools für Windows
Kursinhalt:
Stand: April 2006
Übersicht
Was ist Cygwin?
- UNIX-Umgebung für Windows
- Sammlung freier Unixwerkzeuge
-
bash + Kommandozeilenwerkzeuge
- Entwicklerumgebung:
gcc, perl, python, ...
- grafische Benutzeroberfläche:
xorg
Highlights
- läuft unter Win9x- und NT-Plattform
- unterstützt File-ACL auf NT-Plattform
- UNIX- und DOS-Filenotationen möglich
/cygdrive/c/windows, c:\windows
- automatische Konvertierung der Zeilenendezeichen
\n, \r\n
- Signalbehandlung
Installation
- grafisches Installationswerkzeug: http://www.cygwin.com/setup.exe
-
Install for: All Users empfohlen, alternative Installation im Homeverzeichnis falls keine Administratorrechte vorhanden sind
-
Default Text File Type: Unix empfohlen (Zeilenende: \n)
- Auswahl des Paketumfanges
- Standardeinstellungen installieren minimalistische Cygwin-Umgebung
- existierende Installation wird erkannt
/etc/setup/
- Abhängigkeiten werden automatisch aufgelöst
- automatisches Update für installierte Paket
- Installationslog:
/var/log/setup.log.full
Konfiguration
Umgebungsvariablen
- Erweitern der
PATH -Variable um <CYGWIN-Installationspfad>\bin
 |
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
|
- Konfiguration über die
CYGWIN -Variable
| Parameter | Bedeutung |
(no) binmode | keine automatische \r\n Übersetzung |
check_case: relaxed | Steuerung der Gross/Kleinschreibung |
relaxed ignoriere Gross/Kleinschreibung |
adjust resultierender Pfadname entspricht der exakten Darstellung |
strict strenge Prüfung auf Gross/Kleinschreibung |
(no) envcache | Variablencache zwischen Win32 und POSIX |
(no) ntsec | Anwenden des NT-Sicherheitsmodells auf Unixfiles und Prozesse |
(no)smbntsec | Anwenden des NT-Sicherheitsmodells auf Files in SMB-Freigaben |
(no)traverse | Nur in den Versionen 1.5.13-14 aktiviert. Prüfen von Filerechten an Rechten des übergeordneten Verzeichnisses |
(no)tty | Terminalbehandlung, kompatible mit Windowsanwendungen, ^Z funktioniert dann nicht |
(no) winsymlinks | symbolische Links werden als Windows-Links (.lnk) abgebildet |
NT-Sicherheitsmodell
- NT-Plattformfamilie unterstützt Sicherheitsmodell auf Basis von
Security Objects (SD) und Security Identifiers (SID)
-
SID sind mit UNIX User Identifier (UID) und Group Identifier (GID) vergleichbar
- Abbildung von User- und Groupname auf SID erfolgt in
/etc/passwd und /etc/group
 |
$ mkpasswd -l > /etc/passwd
$ cat /etc/passwd
SYSTEM:*:18:544:,S-1-5-18::
Administratoren:*:544:544:,S-1-5-32-544::
Administrator:unused_by_nt/2000/xp:500:513:U-BALLING\Administrator,S-1-5-21-602162358-1547161642-725345543-500:/cygdrive/h:/bin/bash
Gast:unused_by_nt/2000/xp:501:513:U-BALLING\Gast,S-1-5-21-602162358-1547161642-725345543-501:/home/Gast:/bin/bash
otto:unused_by_nt/2000/xp:57501:513:Otto Normalverbraucher,,,U-BALLING\otto,S-1-5-21-602162358-1547161642-725345543-57501:/cygdrive/h:/bin/bash
$ mkgroup -l > /etc/group
$ cat /etc/group
SYSTEM:S-1-5-18:18:
Kein:S-1-5-21-602162358-1547161642-725345543-513:513:
Administratoren:S-1-5-32-544:544:
Benutzer:S-1-5-32-545:545:
Gäste:S-1-5-32-546:546:
Hauptbenutzer:S-1-5-32-547:547:
|
 |
$ id
uid=500(Administrator) gid=544(Administratoren)
$ cd /tmp
$ touch foo
$ ls -l foo
-rwxrw-r-- 1 Administrator Administratoren 0 Apr 10 13:56 foo
|
 |
- Nach Anlegen neuer Nutzer oder Gruppen muss
/etc/passwd und /etc/group neu generiert werden
- Vererbung von NTFS-ACLs funktioniert nicht mehr
- Nicht alle Möglichkeiten von NT-ACLs und POSIX-Rechten abbildbar
|
su-Mechanismus
- Voraussetzungen für Umschaltung des Nutzerkontext sind folgende Privilegien:
-
Erstellen eines Tokenobjekts
-
Ersetzen eines Tokens auf Prozessebene
-
Anpassen von Speicherkontigenten für einen Prozess
 |
$ id
uid=500(Administrator) gid=544(Administratoren)
$ su - otto
$ id
uid=57501(otto) gid=513(Kein)
|
 |
Anpassen der Privilegien kann die Sicherheit des Systems beeinträchtigen.
|
Nutzung
Mapping von Pfadnamen
- cygwin unterstützt die Win32- und die POSIX-Notation für Pfadnamen
- UNC-Pfade beginnen mit doppelte Slashes oder Backslashes
 |
$ ls -l /cygdrive/c/tmp/setup.exe
-rwx------+ 1 Administrator Kein 305664 Apr 10 10:48 /cygdrive/c/tmp/setup.exe
$ ls -l 'c:\tmp\setup.exe'
-rwx------+ 1 Administrator Kein 305664 Apr 10 10:48 c:\tmp\setup.exe
$ ls //afs/tu-chemnitz.de/project/streaming/
dss fms
$ ls '\\afs\tu-chemnitz.de\project\streaming'
dss fms
|
 |
Konvertieren von Win32- und POSIX-Notation mit dem Werkzeug: cygpath
|
Mount-Tabelle
 |
[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2]
|
- nutzerspezifische Mounttabelle
 |
[HKEY_CURRENT_USER\Software\Cygnus Solutions\Cygwin\mounts v2]
|
- Abbildung von Laufwerksbuchstaben über Prefix/Laufwerk
/cygdrive/c
- UNC-Pfade werden standardmässig
--no-executable montiert
 |
$ mount -u 'C:\Dokumente und Einstellungen\Administrator\Eigene Dateien' /home/Administrator
$ mount
C:\Dokumente und Einstellungen\Administrator\Eigene Dateien on /home/Administrator type user (binmode)
C:\Programme\cygwin\bin on /usr/bin type system (binmode)
C:\Programme\cygwin\lib on /usr/lib type system (binmode)
C:\Programme\cygwin on / type system (binmode)
c: on /cygdrive/c type user (binmode,noumount)
|
Text und Binärmodus
- DOS/Windows Textfiles enthalten am Zeilenende meist die Kombination
\r\n (CR,NL)
- cygwin organisiert die automatische Übersetzung von
\n -> \r\n für Files im Textmode
File-Rechte
- Abbildung von POSIX-Rechte auf NT-ACLs
- Filesystem innerhalb NTFS-Partition
-
ntsec aktiviert
- siehe NT-Sicherheitsmodell
Special Files
Reservierte Bezeichner
- DOS und Win32 enthalten reservierte Bezeichner, welche als Filenamen nicht verwendet werden können
-
AUX, COM1, LPT1, PRN, NUL, ...
Geräte
- Files im
/dev -Verzeichnis werden intern behandelt
- nicht mit
ls -l /dev/* listbar
| Bezeichnung | POSIX, cygwin | NT-intern |
| Diskettenlaufwerk | /dev/fd0 | \device\floppy0 |
| CDROM | /dev/scd0 | \device\cdrom0 |
| Festplatten | /dev/sda | \device\harddisk0\partition0 |
| Festplatte, 1. Partition | /dev/sda1 | \device\harddisk0\partition1 |
| Zwischenablage | /dev/clipboard | |
| Windows Message Queue | /dev/windows | |
| Zufallszahlen | /dev/random /dev/urandom | |
/proc -Filesystem
/proc/cpuinfo |
/proc/meminfo |
/proc/loadavg |
/proc/uptime |
/proc/registry (read only) |
 |
$ ls -l '/proc/registry/HKEY_CURRENT_USER/Software/Cygnus Solutions/Cygwin/mounts v2'
total 0
drwx------+ 3 Administrator Kein 0 Mar 19 2003 /home/Administrator
-r--r--r-- 1 Administrator Kein 4 Apr 11 08:39 cygdrive flags
-r--r--r-- 1 Administrator Kein 10 Apr 11 08:39 cygdrive prefix
|
Cygserver
- cygwin-Anwendungen als Win32-Dienste betreiben
 |
$ cygserver-config
Generating /etc/cygserver.conf file
Warning: The following function requires administrator privileges!
Do you want to install cygserver as service?
(Say "no" if it's already installed as service) (yes/no) yes
The service has been installed under LocalSystem account.
To start it, call `net start cygserver' or `cygrunsrv -S cygserver'.
Further configuration options are available by editing the configuration
file /etc/cygserver.conf. Please read the inline information in that
file carefully. The best option for the start is to just leave it alone.
Please keep in mind, that a client application which wants to use
the services provided by cygserver *must* have the environment variable
CYGWIN set so that it contains the word "server". So, if you don't
need any other special CYGWIN setting, just set it to "server".
It is advisable to add this setting to the Windows system environment.
Basic Cygserver configuration finished. Have fun!
$ cygrunsrv -I crond -p /usr/sbin/cron -e "CYGWIN=server"
$ cygrunsrv -L
cygserver
crond
|
Werkzeuge
cygcheck
- Paketverwaltungswerkzeug für cygwin-Pakete
 |
$ cygcheck -f /usr/sbin/alternatives
alternatives-1.3.20a-2
$ cygcheck -l alternatives
/usr/sbin/alternatives.exe
/usr/sbin/update-alternatives
/usr/share/doc/alternatives-1.3.20a/ABOUT-NLS
/usr/share/doc/alternatives-1.3.20a/AUTHORS
/usr/share/doc/alternatives-1.3.20a/ChangeLog
/usr/share/doc/alternatives-1.3.20a/COPYING
/usr/share/doc/alternatives-1.3.20a/INSTALL
/usr/share/doc/alternatives-1.3.20a/NEWS
/usr/share/doc/alternatives-1.3.20a/README
|
cygpath
- Konvertierung von Win32- und POSIX-Pfaden
- Ausgabe von Systempfaden
 |
$ cygpath -W -u
/cygdrive/c/WINDOWS
$ cygpath -W -w
C:\WINDOWS
|
getfacl, setfacl
ps, kill
mkpasswd, mkgroup
- Generieren von
passwd und group -File aus Systeminformationen
 |
$ mkpasswd -l > /etc/passwd
$ mkgroup -l > /etc/group
|
mount, umount
- montierieren und demontieren von Filesystemen
- globale und nutzerspezifische Mounts
 |
$ mount -u 'C:\Dokumente und Einstellungen\Administrator\Eigene Dateien' /home/Administrator
$ umount -u /home/Administrator
|
regtool
- Kommandozeilenwerkzeug zum Bearbeiten der Registry
 |
$ regtool.exe add '/user/Software/Demo'
$ regtool.exe set '/user/Software/Demo/Datum' $(date)
$ regtool.exe list '/user/Software/Demo'
Datum
$ regtool.exe get '/user/Software/Demo/Datum'
Tue
Apr
11
12:06:43
2006
|
dumper, ssp, gprof, objdump, strace
|
|