
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)
undSecurity Identifiers (SID)
-
SID
sind mit UNIXUser Identifier (UID)
undGroup 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: |
- Beispiel:
![]() |
$ 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 |
![]() |
|
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
- globale Mounttabelle
![]() |
[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
undgroup
-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