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 Usersempfohlen, alternative Installation im Homeverzeichnis falls keine Administratorrechte vorhanden sind -
Default Text File Type: Unixempfohlen (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) -
SIDsind mit UNIXUser Identifier (UID)undGroup Identifier (GID)vergleichbar - Abbildung von User- und Groupname auf SID erfolgt in
/etc/passwdund/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-executablemontiert
$ 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\nfür Files im Textmode
File-Rechte
- Abbildung von POSIX-Rechte auf NT-ACLs
- Filesystem innerhalb NTFS-Partition
-
ntsecaktiviert
- 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
passwdundgroup-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 |