System unter Verwendung von Remote-NTP-Servern für die Synchronisation der Systemzeit konfigurieren
NTP (Network Time Protocol) ist ein Protokoll um die Systemzeit mit anderen Rechnern zu synchronisieren. Verwendet wird dabei Port 123 UDP (wichtig für die Konfiguration der Firewall).
Die Konfiguration des NTP Clients ist sehr einfach zu bewerkstelligen. Zuerst sollte ein geographisch möglichst nahe liegender NTP-Server gewählt werden. Natürlich kann auch ein Firmeneigener NTP-Server verwendet werden – ein Microsoft Domain Controller stellt beispielsweise auch bereits standardmäßig diesen Dienst bereit. NTP berücksichtigt zwar die Latenz des Netzwerkes, dennoch sind genauere Ergebnisse bei kürzeren Antwortzeiten des NTP-Servers zu erwarten. Eine Übersicht über vorhandene Zeitserver ist unter http://www.pool.ntp.org/ einsehbar.
Für Österreich wären Beispielsweise folgende Server naheliegend:
server 0.at.pool.ntp.org server 1.at.pool.ntp.org server 2.at.pool.ntp.org server 3.at.pool.ntp.org
Die Einstellung der zu verwendenden Zeitserver erfolgt in der Konfigurationsdatei des NTP Clients, /etc/ntp.conf. Dort bereits vorhandene „server“-Einträge einfach auskommentieren oder mit den gewünschten Werten überschreiben. Abschliessend:
chkconfig ntpd on # beim Hochfahren starten service ntpd start # NTP-Client starten
Durch Verwendung des NTP Protokolls ist die Systemzeit nun immer exakt.
Dateien mit tar, gzip und bzip2 archivieren und komprimieren
Archivieren und Komprimieren mittels tar
tar ist ein Archivierungsprogramm, das im einfachsten Fall mehrere Dateien zu einem Archiv zusammenfasst. gzip und bzip2 sind Komprimierungsprogramme, wobei bzip2 effizienter als gzip ist. Jedes dieser Programme lässt sich natürlich einzeln ausführen, sobald man aber mehr als eine Datei komprimieren möchte sollte tar mit gzip oder bzip2 kombiniert werden.
tar -cvzf myarchive.tar.gz /etc tar -cvjf myarchive.tar.bz2 /etc
Mit obigen Befehlen würde jeweils der Inhalt des Verzeichnisses /etc archiviert und komprimiert, einmal mit gzip und einmal mit bzip2. Erklärung der Optionen:
c Erstellen eines Archives.
v verbose, Es werden umfangreichere Rückmeldungen geliefert
z Komprimierung mittels gzip
j Komprimierung mittels bzip2
f Das Archiv wird als Datei myarchive.tar.gz erstellt
Hierbei sollte die Dateiendung beachtet werden. tar ist eines der wenigen Programme die eine bestimmte Dateiendung voraussetzt. Dateien die mittels gzip komprimiert wurden sollten auf .tar.gz oder .tgz enden, bzip2 komprimierte Dateien auf .tar.bz2.
Extrahieren von tar-Archiven
tar -xvzf myarchive.tar.gz tar -xvjf myarchive.tar.gz
Im ersten Beispiel wird ein gzip (z) komprimiertes tar-Archiv im aktuellen Verzeichnis extrahiert (x). Der zweite Befehl unterscheidet sich nur durch die Verwendung der Option „j“ anstatt „z“ vom ersten, hierbei wird bzip2 zur Dekomprimierung angewandt.
mit HTTP/FTP Dateifreigabedienste einrichten
HTTP
Zur nachträglichen Installation des Apache Webservers:
yum install httpd
Service starten/beim hochfahren starten:
service httpd start chkconfig httpd on
Die Konfigurationsdateien des Webservers befinden sich unter /etc/httpd/, die default-Einstellungen sind aber für eine einfache Dateifreigabe via HTTP durchaus ausreichend und bedürfen keiner weiteren Anpassung.
Dateien unter /var/www/html sind nach Aktivieren des Webservers bereits automatisch verfügbar. Das Ziel der Freigabe von Dateien über HTTP ist damit bereits erreicht. Zu beachten ist dass der Webserver auch die Rechte haben muss, die Dateien zu lesen! Falls keine index.html/index.php und keine Dateien in diesem Verzeichnis vorhanden sind wird eine Standardseite angezeigt.
FTP
Neuinstallation:
Basis Server -> Jetzt anpassen
Server -> FTP-Server
Web Dienste -> Web-Server
Installation von der Kommandozeile
yum install vsftpd
Konfiguration
Standardmäßig sind anonyme und Benutzerlogins aktiviert. Read-only Freigabe ist damit bereits gegeben. Um Dateien freizugeben diese einfach in das Heimatverzeichnis des Benutzers „ftp“ kopieren, standardmäßig ist das /var/ftp.
Um anonyme Uploads zu erlauben sind die folgenden Zeilen in /etc/vsftpd/vsftpd.conf einzutragen:
anon_upload_enable=YES anon_mkdir_enable=YES
Der Benutzer hat damit das Recht Dateien hinaufzuladen und Verzeichnisse zu erstellen, darf jedoch weder Dateien oder Verzeichnisse löschen noch diese umbenennen. Um Vollzugriff und damit das auch das Löschen und Verändern von Dateien und Verzeichnissen zu erlauben ist noch die Zeile
anon_other_write_enable=YES
einzutragen.
Die Linux-Dateirechte müssen Schreibzugriffe auf das Verzeichnis ebenfalls erlauben.
chmod a+w /var/ftp/pub
Außerdem muß der SELinux Kontext geändert werden, um anonyme Schreibzugriffe zu ermöglichen:
semanage –a –t public_content_rw_t /var/ftp/pub restorecon /var/ftp/pub setsebool allow_ftpd_anon_write 1
Die geänderte Konfiguration ist nun mit
service vsftpd reload
neu einzulesen, damit diese wirksam wird.
Netzwerk konfigurieren:
/etc/sysconfig/network
NETWORKING=”yes”
/etc/sysconfig/network-scripts/ifcfg-eth0
BOOTPROTO=”dhcp” ONBOOT=”yes”
Dienst starten
chkconfig vsftpd on service vsftpd start
Ausnahmen in Firewall hinzufügen
Firewall: Zugriff auf FTP erlauben
system-config-firewall -> Anpassen -> FTP
einen VNC-Server bereitstellen, mit dem mehrere Desktops gleichzeitig genutzt werden können
Neuinstallation:
Rechnername setzen.
Netzwerk konfigurieren -> eth0 bearbeiten -> automatisch verbinden
Basis Server -> Jetzt anpassen
Desktops -> Desktop
Optionale Pakete: tigervnc-server
Installation von der Kommandozeile:
Eine minimale Konfiguration umfasst die Paketgruppe “Desktop” und das Paket “vnc-server”.
yum groupinstall Desktop yum install vnc-server
Konfiguration
editieren von /etc/sysconfig/vncservers :
VNCSERVERS=“1:root 2:bob 3:alice“ VNCSERVERARGS[1]=”-geometry 800x600 –nolisten tcp -localhost” VNCSERVERARGS[2]=”-geometry 1024x768”
-geometry 800×600 bestimmt die Fenstergröße, für root in diesem Fall 800×600 Pixel.
-nolisten tcp verhindert X Verbindungen via TCP auf den VNC Server.
-localhost erlaubt nur Verbindungen über einen sicheren Tunnel (siehe VNC-Verbindung)
Hier wird also für den Benutzer root eine Auflösung von 800×600 eingestellt, keine X Verbindungen via TCP erlaubt und eine Verbindung über einen sicheren Tunnel erzwungen. Der Benutzer bob bekommt eine Auflösung von 1024×768 und darf eine direkte und unverschlüsselte Verbindung mit seinem VNC-Client aufbauen. Für alice gelten die Default-Einstellungen. Da VNC standardmäßig unverschlüsselt übertragen wird empfiehlt sich die Verwendung nur innerhalb eines vertrauenswürdigen lokalen Netzwerkes bzw. durch eine sichere Tunnelverbindung.
Passwort setzen
vncpasswd
Legt die Datei .vnc/passwd im Heimatverzeichnis des momentan eingeloggten Benutzers an. Um Passworte für die jeweiligen Benutzer zu setzen kann man sich nun unter dem entsprechenden Benutzernamen einloggen und vncpasswd ausführen oder auch einfach das Ziel angeben und daraufhin den entsprechenden Eigentümer setzen:
mkdir –p /home/bob/.vnc # .vnc in bob's Heimatverzeichnis anlegen vncpasswd /home/bob/.vnc/passwd # Passwortdatei anlegen chown –R bob.bob /home/bob/.vnc # bob als Eigentümer festlegen
Dienst starten
chkconfig vncserver on # beim booten starten service vncserver start # Dienst jetzt starten
Ausnahmen in Firewall hinzufügen
netstat –tan
Listet offene TCP-Ports auf. Geöffnete Ports des VNC-Servers sind als 5900 + Displaynummer erkenntlich, also z.B. Port 5901 für Benutzer root, Display 1. In diesem Beispiel sollten also 127.0.0.1:5901, 0.0.0.0:5902 sowie 0.0.0.0:5903 (Displays für root, bob und alice) geöffnet sein. Falls der VNC-Server nur eine Verbindung über einen SSH-Tunnel erlaubt (-localhost) muss keine Ausnahme für externe VNC-Ports hinzugefügt werden, da die Verbindung ausschließlich via SSH erfolgt.
Zugriff auf externe Ports 5902-5903 TCP erlauben:
system-config-firewall-tui
Anpassen -> Vor -> Hinzufügen: Port 5902-5903 Protokoll tcp
Zugriffskontrolllisten (Access Control Lists, ACLs) festlegen und verwalten
Das Dateisystem muss mit der Option „acl“ (siehe /etc/fstab) gemountet sein um erweiterte Rechte nutzen zu können.
Anzeigen der gesetzten Zugriffsrechte einer Datei oder eines Verzeichnisses erfolgt mit
ls –l
Bei gesetzten erweiterten Rechten erscheint ein „+“ in der Ausgabe von „ls –l“:
-rw-r—r--+
Erweiterte Rechte lassen sich mit dem Befehl getfacl ausgeben:
getfacl datei
Ausgegeben wird eine einfache Liste (Access Control List), die die Rechte eines Benutzers oder einer Gruppe beschreibt.
Modifizieren der ACL:
Setzen von Lese-, Schreib – und Ausführ-Rechten für Benutzer „benutzer“ mit
setfacl –m u:benutzer:rwx
Setzen von Lese- und Ausführ-Rechten für Gruppe „gruppe“ mit
setfacl –m g:gruppe:r-x
sgid-Verzeichnisse für gemeinsame Nutzung verwenden
Um ein Verzeichnis für die gemeinsame Nutzung zu erstellen muss zuerst eine Gruppe erstellt werden und die Benutzer die den gemeinsamen Ordner verwenden darin aufgenommen werden.
groupadd gruppe1 # Gruppe gruppe1 zur Zusammenarbeit erstellen usermod -aG gruppe1 tux # tux, alice und bob Mitglieder der usermod -aG gruppe1 alice # Gruppe gruppe1 machen usermod -aG gruppe1 bob
Danach ist der gemeinsame Ordner zu erstellen und die Dateirechte entsprechend zu setzen.
mkdir /collaboration # gemeinsamen Ordner erstellen chgrp gruppe1 /collaboration # gruppe1 zum Eigentümer machen chmod 3775 /collaboration # set group ID, set sticky bit
Set group ID bedeutet dass neu erstellte Dateien und Ordner automtisch Eigentum der Gruppe gruppe1 sind. Das gesetzte Sticky Bit erlaubt nur dem Eigentümer einer Datei diese zu löschen, obwohl jedes Mitglied der Gruppe Schreibzugriff hat aud diesen Ordner hat.
Standardberechtigungen verwalten: ugo/rwx auflisten, interpretieren, ändern
Setzen der Standard Unix-Rechte mit chmod für Benutzer (user), Gruppe (group) und Andere (other)
Unix permissions anzeigen mit
ls -l
read: 4
write: 2
execute: 1
User Group Other rw r r
entspricht oktal 644 (user: 4+2, group: 4, other: 4). Der Eigentümer hat Schreib- und Leserechte, Gruppe und Andere haben nur Leserechte.
Das Setzen der Dateirechte erfolgt mit dem Kommando chmod, z.B.:
chmod u=rw,g=r,o=r datei
oder auch gleich oktal:
chmod 644 datei
= setzen genau dieser Rechte, z.B. chmod o=r datei
+ hinzufügen dieser Rechte, z.B. chmod u+x datei
– entfernen dieser Rechte, z.B. chmod u-x datei
rx (Lesen und Ausführen, oktal 4+1 = 5) ist nowendig um in ein Verzeichnis wechseln zu können sowie ein ausführbares Programm oder ein Shellskript zu starten.
Set User ID:
chmod u+s datei
die Datei wird mit Rechten ihres Eigentümers ausgeführt, z.B. passwd
Set Group ID:
chmod g+s datei
die Datei wird mit Rechten ihrer Gruppe ausgeführt
Set User/Group ID bei Verzeichnissen:
Neu angelegte Dateien bzw. Ordner in diesem Verzeichnis erhalten die gesetzte Benutzer/Gruppen ID des Verzeichnisses.
lokale Benutzer- und Gruppenkonten verwalten: Kennwörter erstellen, löschen und ändern; Ablaufdatum von Kennwörtern ändern, Gruppenmitgliedschaften ändern
Lokale Benutzer werden über die Dateien /etc/passwd, /etc/shadow, /etc/group und /etc/gshadow verwaltet. Es ist wichtig diese Dateien und die Bedeutung ihres Inhalts zu kennen, jedoch sollten diese nicht von Hand verändert werden. Es gibt verschiedene Programme zur Benutzerverwaltung, die diese Arbeit erledigen.
In /etc/passwd sind alle lokalen Benutzer aufgeführt. Diese Datei liegt in folgendem Format vor:
username:password:uid:gid:description:homedir:shell
Inhalt der Felder von links nach rechts:
- Der Benutzername.
- Das Benutzerpasswort.
- Die Benutzer-ID.
- Die Gruppen-ID.
- Beschreibung des Kontos.
- Das Heimatverzeichnis des Benutzers.
- Die Login-Shell des Benutzers.
Die Datei /etc/shadow enthält das verschlüsselte Passwort, sowie Information zu diesem.
username:password:lastpwchange:minpwchange:maxpwage:pwchangewarn:inactive:expire
Inhalt der Felder von links nach rechts:
- Der Benutzername
- Das verschlüsselte Kennwort.
- Die Anzahl von Tagen zwischen dem 01.01.1970 und der letzten Kennwortänderung.
- Die Zeit in Tagen, die zwischen zwei Kennwortänderungen liegen muß.
- Die Zeit in Tagen, wie lange ein Kennwort gültig ist.
- Die Zeit in Tagen, wie lange der Benutzer vor dem Auslaufen des Kennworts gewarnt wird.
- Die Zeit in Tagen bis das Konto nach dem Auslaufen des Kennworts gesperrt wird
- Auslaufen des Kontos in Tagen seit dem 01.01.1970.
Die Datei /etc/group enthält alle lokal vorhandenen Gruppen:
groupname:password:gid:members
Inhalt der Felder von links nach rechts:
- Der Name der Gruppe.
- Das Gruppenpasswort.
- Die Gruppen-ID.
- Die Mitglieder der Gruppe, durch Leerzeichen getrennt.
useradd
Benutzer können einfach mit dem Befehl useradd hinzugefügt werden. Das Programm kennt mehrere Parameter, es lassen sich unter anderem User-ID, Gruppen-ID, Heimatverzeichnis und Login-Shell bestimmen:
useradd tux # Benutzer tux hinzufügen useradd -U 502 tux # hier mit User-ID 502 useradd -d /home/frank tux # tux bekommt das Heimatverzeichnis /home/frank useradd -m tux # Benutzer und Heimatverzeichnis werden erstellt
userdel
Dieser Befehl entfernt die Einträge für den Benutzer username
aus den Dateien /etc/passwd und /etc/group. Mit der Option -r
wird zusätzlich das Homeverzeichnis des Benutzers geleert und entfernt:
userdel -r tux # Konto und Heimatverzeichnis des Benutzers werden gelöscht
usermod
Benutzerkonten lassen sich mittels usermod manipulieren. Hiermit können unter anderem Haupt- und Nebengruppe, Login-Shell und Heimatverzeichnis geändert werden sowie Benutzerkonten deaktiviert werden:
usermod -L alice # alice's Konto sperren usermod -U alice # Sperrung aufheben usermod -aG gruppe2 alice # alice wird Mitglied der Gruppe gruppe2 usermod -g gruppe1 alice # alice bekommt die Hauptgruppe gruppe1 zugewiesen usermod -u 0 tux # tux bekommt die UID 0 und hat root-Privilegien!
groups
Der Befehl groups listet lediglich die Gruppen auf, in denen ein Benutzer Mitglied ist:
groups bob # listet die Gruppen auf, in denen bob Mitglied ist
chage
chage ändert die Informationen über die Gültigkeit eines Userpassworts:
chage –E 2010-12-24 tux # tux’s Konto läuft am 24.12.2010 ab. chage -M 30 tux # Maximales Passwortalter 30 Tage chage alice # alice’s Informationen werden interaktiv abgefragt
mit cron und at die Aufgabenplanung konfigurieren
Der cron-Daemon ist eine Jobsteuerung von Unix bzw. unixartigen Betriebssystemen wie Linux, BSD oder Mac OS X, die wiederkehrende Aufgaben (cronjobs) automatisch zu einer bestimmten Zeit ausführen kann.
Häufig führt der Cron-Daemon wichtige Programme für die Instandhaltung des Systems aus, wie zum Beispiel Dienste für das regelmäßige Archivieren und Löschen von Logdateien.
Crontab
Der Begriff selbst leitet sich ab von griechisch chronos = die Zeit und lat. tabula = die Tafel, oder das Brett und bedeutet demnach soviel wie „Stundenplan“. Die auszuführenden Befehle werden in einer benutzereigenen Tabelle gespeichert, der sogenannten crontab. Diese Tabelle besteht aus sechs Spalten; die ersten fünf dienen der Zeitangabe (Minute, Stunde, Tag, Monat, Wochentag), alle weiteren Zeichen bis zum Zeilenumbruch werden als der auszuführende Befehl aufgefasst. Die einzelnen Spalten werden durch Leerzeichen oder Tabulatoren getrennt.
Beispiel einer Crontab:
#M S T M W Befehl 5 * * * * /usr/bin/message.sh # fünf Minuten nach jeder vollen Stunde */5 * * * * /usr/bin/message.sh # alle 5 Minuten 59 23 * * 0 gzip /var/log/messages # einmal pro Woche Sonntags um 23:59 Uhr 0 0 * * * gzip /var/log/auth.log # täglich um 00:00 Uhr 20,30 1 * * 1-5 /usr/bin/work.sh # Montags bis Freitags jeweils um 01:20 und 01:30
Die Struktur ist wie folgt zu verstehen:
* * * * * auszuführender Befehl ┬ ┬ ┬ ┬ ┬ │ │ │ │ │ │ │ │ │ └──── Wochentag (0-7) (Sonntag =0 oder =7) │ │ │ └────── Monat (1-12) │ │ └──────── Tag (1-31) │ └────────── Stunde (0-23) └──────────── Minute (0-59)
Um den einen cronjob zu erstellen führen Sie den Befehl crontab aus:
crontab –e # eigenen crontab erstellen/ändern crontab –e –u alice # alice’s crontab ändern
at
at Führt Kommandos zur bestimmten Zeit aus.
atq Listet die momentan laufenden Jobs des Benutzers auf, root darf die laufenden Jobs aller Benutzer anzeigen. Die Ausgabe erfolgt im Format: Job Nummer, Datum, Stunde, Queue, und Benutzername.
atrm beendet Jobs, durch ihre Jobnummer identifiziert.
batch führt Befehle aus wenn die Systemauslastung es erlaubt, d.h. wenn die durchschnittliche Systemauslast unter 0,8 fällt, oder den Wert der atd beim Starten übergeben wurde.
Netzwerkservices verwalten: Status überprüfen, starten, beenden, so konfigurieren, dass sie beim Booten starten
Status eines Dienstes abfragen:
service httpd status # status des Webservers abrufen service –status-all # Status aller Dienste abrufen
Dienste starten/stoppen:
service httpd start # Webserver starten service httpd stop # Webserver stoppen
Dienst neu starten, Konfiguration neu einlesen:
service httpd restart # Webserver neu starten service httpd reload # Konfiguration neu einlesen
Dienst bei Systemstart starten:
chkconfig httpd on # httpd startet beim booten chkconfig httpd off # httpd startet nicht beim booten
Dienst bei Eintreten in einen bestimmten Runlevel starten:
chkconfig –level 3 httpd on # httpd startet nur in Runlevel 3 chkconfig –level 345 httpd on # httpd startet in Runlevel 3, 4 und 5
Eine Alternative zu chkconfig bietet das Programm ntsysv. Dieses bearbeitet beim Aufruf ohne weitere Parameter den aktuellen Runlevel und legt fest welche Dienste in diesem gestartet werden sollen. Über die Option –levels kann dem Programm mitgeteilt werden welche Runlevel editiert werden sollen:
ntsysv # Bearbeiten des aktuellen Runlevels ntsysv --levels 345 # Runlevel 3,4 und 5 werden editiert
Welche Dienste werden in welchen Runleveln gestartet?
chkconfig httpd –list # in welchen Runleveln wird httpd gestartet? httpd 0:Aus 1:Aus 2:Ein 3:Ein 4:Ein 5:Ein 6:Aus