home *** CD-ROM | disk | FTP | other *** search
/ ftp.pasteur.org/FAQ/ / ftp-pasteur-org-FAQ.zip / FAQ / de / comp / linux / dcoul-faq / section2 / text0000.txt < prev   
Encoding:
Text File  |  2004-04-19  |  44.2 KB  |  902 lines

  1. Archive-name: de/comp/linux/dcoul-faq/section2
  2. Posting-frequency: monthly
  3. Last-modified: 2004-04-18 13:49:22
  4. Version: CVS revision 1.139
  5. URL: http://www.dcoul.de/faq/
  6.  
  7.                                               http://www.dcoul.de/faq/
  8.   _________________________________________________________________
  9.  
  10. 2. Allgemeine Linux-Fragen
  11.  
  12. 2.1 Ich bekomme beim Compilieren die Meldung, es sei ein Signal 11
  13. aufgetreten. Was bedeutet das?
  14.  
  15. Das weist hΣufig auf fehlerhafte Hardware hin (z.B. defekte oder zu
  16. langsame Speicherchips). Zu Signal 11 gibt es eine ausfⁿhrliche FAQ
  17. unter http://www.bitwizard.nl/sig11/.
  18. EnthΣlt der Rechner einen AMD K6 Σlterer Bauart und mehr als 32MB RAM,
  19. kann es durch einen Fehler im Prozessor zum Auftreten des Signal 11
  20. kommen. Der Fehler wird u.a. durch einige im gcc vorkommende
  21. Codesegmente ausgel÷st (der K6 hΣlt die Sequenz fΣlschlicherweise fⁿr
  22. selbstmodifizierenden Code und behandelt sie falsch). Ab der
  23. Prozessorrevision B9732 (auf dem Prozessor aufgedruckt) ist der Fehler
  24. behoben. AMD hat fⁿr die Prozessoren mit dem Fehler einen Umtausch
  25. angeboten.
  26.  
  27. 2.2 Ich habe mir ein kleines Testprogramm compiliert, aber wenn ich es
  28. aufrufe, passiert gar nichts. Warum?
  29.  
  30. Ein hΣufig unter Linux (und natⁿrlich anderen Unix-Derivaten)
  31. gemachter Fehler ist es, ein Programm test zu nennen. Es gibt ein
  32. Systemkommando mit dem Namen test, das einen logischen Ausdruck
  33. auswertet und mit dem man z.B. ⁿberprⁿfen kann, ob eine bestimmte
  34. Datei existiert (und noch einiges mehr). Wenn man ein Programm test
  35. nennt und es aufruft, wird der eingestellte Suchpfad (enthalten in der
  36. Shellvariable PATH) von vorne nach hinten durchsucht, bis ein Programm
  37. mit dem Namen test gefunden wird. Das Verzeichnis, in dem sich das
  38. Systemkommando test befindet, steht in der PATH-Variable in der Regel
  39. weiter vorne als das eigene Home- oder Arbeitsverzeichnis, so das
  40. nicht das gerade selbst compilierte Programm ausgefⁿhrt wird, sondern
  41. das System-test. Dieses erzeugt keine Ausgabe, sondern setzt, je nach
  42. dem Ergebnis des als Parameter ⁿbergebenen logischen Ausdrucks,
  43. lediglich einen Fehlercode, den man in der Shell abfragen kann. Es
  44. sieht also so aus, als ob das Programm nichts tut.
  45. Bei manchen Shells ist test auch ein in die Shell integrierter Befehl,
  46. so dass bei der Eingabe von test ⁿberhaupt kein externes Programm
  47. ausgefⁿhrt wird. Dies lΣsst sich umgehen, indem das aufzurufende
  48. Programm mit vollem Pfad (/foo/test) bzw. in dem entsprechenden
  49. Verzeichnis mit ./test aufgerufen wird (vgl. auch Warum kann ich ein
  50. Programm als normaler User starten, aber nicht als root?).
  51.  
  52. 2.3 Warum kann ich ein Programm als normaler User starten, aber nicht
  53. als root?
  54.  
  55. Wenn das Programm im aktuellen Verzeichnis steht, ist es
  56. wahrscheinlich so, dass der Suchpfad fⁿr den normalen Benutzer das
  57. Verzeichnis ".", d.h. das jeweils aktuelle Verzeichnis, enthΣlt, der
  58. Suchpfad fⁿr root aus Sicherheitsgrⁿnden aber nicht. Unter Linux/Unix
  59. ist es standardmΣ▀ig so, dass das aktuelle Verzeichnis NICHT im
  60. Suchpfad steht, da man andernfalls sehr einfach ein trojanisches Pferd
  61. mit einem gebrΣuchlichen Namen irgendwo ablegen k÷nnte und nur darauf
  62. warten mⁿsste, dass root im entsprechenden Verzeichnis (versehentlich)
  63. das Programm startet. Bsp: ein trojanisches Pferd mit dem Namen sl (ls
  64. als Dreher) in /tmp. Sobald root in /tmp wΣre und versehentlich sl
  65. statt ls tippt, kann das trojanische Pferd alles tun, was es m÷chte,
  66. da es Root-Rechte hat, so z.B. irgendwo eine SUID-root-Shell anlegen
  67. o.Σ.
  68. M÷chte man das Programm trotzdem starten, kann man es explizit mit
  69. voller Pfadangabe aufrufen (/foo/bar/Programm) oder in Kurzform mit
  70. ./Programm, da der Punkt fⁿr das aktuelle Verzeichnis steht.
  71.  
  72. 2.4 Welche Libc-Version ist neuer: 5.4.4 oder 5.4.38?
  73.  
  74. Libc 5.4.38 ist neuer. Die verschiedenen Versionsteile bzw. minor
  75. releases sind bei der libc immer durch Punkte getrennt, d.h. 38 ist
  76. als achtunddrei▀ig zu verstehen, nicht als drei acht.
  77.  
  78. 2.5 Warum kann ich mich nicht als root ⁿber telnet einloggen?
  79.  
  80. Das ist ein Sicherheitsfeature. So wird verhindert, dass man direkt
  81. mit einem Brute-Force-Attacke versuchen kann, das Root-Passwort
  82. heraus- zubekommen. Man muss sich als normaler User einloggen und dann
  83. mit su -l Root-Rechte erlangen, wobei das Root-Passwort abgefragt
  84. wird. Ein Eindringling muss somit mindestens zwei Passworte knacken,
  85. um root zu werden. Sinnvollerweise ist das Root-Passwort dabei
  86. natⁿrlich ein anderes als das User-Passwort.
  87. Immer daran denken: wer selbst (z.B. ⁿber PPP) ins Netz kommt,
  88. erm÷glicht damit auch Anderen, an den eigenen Rechner zu kommen.
  89. Telnet hat dabei ein grundsΣtzliches Sicherheitsproblem: es ⁿbertrΣgt
  90. auch die Kennworte im Klartext und erm÷glicht es dadurch einem
  91. Angreifer, vergleichsweise einfach an Kennworte zu kommen. Es ist
  92. daher durchaus lohnenswert, sich Gedanken ⁿber die Verwendung eines
  93. verschlⁿsselnden Verfahrens zu machen, z.B. SSH o.Σ., wobei telnet
  94. dann vollstΣndig deaktiviert werden kann. Mit OpenSSH
  95. <http://www.openssh.com/> liegt inzwischen eine komplette freie
  96. Implementierung des SSH-Protokolls vor. Sie wird inzwischen bei den
  97. meisten Linuxdistributionen (bei Debian im Paket "ssh") mitgeliefert.
  98.  
  99. 2.6 Warum kann ich meine CD nicht mehr aus meinem CD-Laufwerk nehmen?
  100.  
  101. Wenn eine CD mit dem Kommando mount in den Verzeichnisbaum eingebunden
  102. ist (manche Distributionen machen das beim Booten automatisch, falls
  103. eine CD eingelegt ist), ist der Auswurfknopf des Laufwerks gesperrt,
  104. damit die CD nicht versehentlich entnommen werden kann. Dies hat
  105. mehrere Grⁿnde: Bei einem beschreibbaren Wechselmedium (MO, PD, ZIP
  106. etc.) darf dieses erst entnommen werden, wenn alle Puffer auf das
  107. Medium zurⁿckgeschrieben wurden (Linux arbeitet mit Write-Cache, d.h.
  108. Daten werden nicht immer sofort auf das Medium geschrieben, sondern
  109. zunΣchst nur im Hauptspeicher gesammelt und erst bei Bedarf auf das
  110. Medium geschrieben). Erst nach dem Unmounten des Mediums (mit umount)
  111. kann man sicher sein, dass die Daten auch wirklich geschrieben wurden,
  112. so dass das System die vorherige Entnahme des Mediums verhindert.
  113. Au▀erdem wird so verhindert, dass einem anderen Prozess bzw. dessen
  114. Benutzer, der noch Dateien auf dem Medium ge÷ffnet hat, dieses
  115. entzogen wird, was zu Programmfehlern und ggf. Datenverlust fⁿhren
  116. wⁿrde. Wenn ein umount-Befehl ausgefⁿhrt wurde, kann man sicher sein,
  117. dass keine Dateien auf dem Medium mehr ge÷ffnet waren.
  118. Der Befehl zum Unmounten lautet umount <Verzeichnis>, wobei
  119. <Verzeichnis> dasjenige ist, in das die CD eingeklinkt wurde, in der
  120. Regel /cdrom.
  121. Einige Σltere CDROM-Laufwerke unterstⁿtzen die Verriegelung des
  122. Auswurfknopfes nicht, dennoch sollte auch hier immer erst ein
  123. umount-Kommando ausgefⁿhrt werden, bevor das Medium entnommen wird.
  124.  
  125. 2.7 Warum kann ich keine ZIP-Disk mounten, obwohl der Kernel das
  126. Laufwerk beim Booten ordnungsgemΣ▀ erkannt hat? Ich erhalte beim
  127. Mountversuch lediglich die Meldung mount: wrong fs type, bad option,
  128. bad superblock on /dev/hdc, or too many mounted file systems.
  129.  
  130. ZIP-Medien sind standardmΣ▀ig partitioniert wie eine Festplatte, d.h.
  131. man muss beim Mounten die Partition und nicht nur das GerΣt angeben.
  132. Gegeben sei ein ATAPI-ZIP als Master am sekundΣren Controller, also
  133. wΣre das ZIP-Laufwerk ⁿber /dev/hdc anzusprechen. Bei Medien von
  134. Iomega ist die Partition an vierter Stelle in der Partitionstabelle
  135. angelegt, d.h. der Mount-Befehl mⁿsste mount /dev/hdc4 /mnt lauten.
  136. Bei Fremdherstellermedien kann die Partitionsnummer eine andere sein.
  137.  
  138. 2.8 Was bedeutet die Meldung /dev/hdaX has reached maximal mount
  139. count; check forced beim Booten?
  140.  
  141. Beim Booten wird normalerweise das Programm fsck (FileSystemChecK)
  142. aufgerufen, welches ⁿberprⁿft, ob die interne Struktur des
  143. Dateisystems noch konsistent ist. Wenn Linux korrekt beendet wird und
  144. die Platten sauber unmounted sind, wird auf der jeweiligen Partition
  145. eine Markierung gesetzt, die alles ok besagt (Clean-Flag). Wenn diese
  146. Markierung vorhanden ist, nimmt fsck beim nΣchsten Aufruf keine
  147. detaillierte ▄berprⁿfung der Partition vor. Da sich eventuell aber
  148. doch irgendwann ein Fehler eingeschlichen haben k÷nnte, wird nach
  149. einer gewissen Anzahl von MountvorgΣngen (maximal mount count)
  150. trotzdem eine Prⁿfung durchgefⁿhrt, auch wenn die Markierung alles ok
  151. signalisiert (daher die Meldung check *forced*). Die ▄berprⁿfung kann
  152. bei gro▀en Partitionen mit vielen Dateien durchaus einige Minuten
  153. dauern. Die Anzahl der MountvorgΣnge, nach denen zwangsweise ein
  154. fsck-Lauf stattfindet, lΣsst sich mit Hilfe des Programms tune2fs
  155. einstellen.
  156.  
  157. 2.9 Ich benutze fⁿr meinen Internetzugang ISDN mit SyncPPP (ipppd) und
  158. Dial-On-Demand. Das funktioniert auch, aber nur einmal. Sobald die
  159. Verbindung abgebaut wurde, wird sie nicht automatisch wieder
  160. aufgebaut.
  161.  
  162. Beim Abbau der Verbindung wird vom ipppd die Defaultroute auf das
  163. ISDN-Interface gel÷scht, so dass weitere IP-Pakete keinen neuen
  164. Verbindungsaufbau triggern k÷nnen, da sie mangels Route nicht auf das
  165. ISDN-Interface geleitet werden. Abhilfe: in /etc/ppp/ip-down die
  166. Defaultroute wieder auf das ISDN-Interface setzen. /etc/ppp/ip-down
  167. wird vom ipppd nach dem Abbau der Verbindung automatisch ausgefⁿhrt.
  168.  
  169. 2.10 Wie kann ich ein ext2-Dateisystem defragmentieren?
  170.  
  171. Es gibt dazu ein Programm im Alphastadium auf sunsite.unc.edu,
  172. allerdings wird von der Benutzung regelmΣ▀ig abgeraten, sowohl wegen
  173. der damit verbundenen Gefahren als auch aus grundsΣtzlichen
  174. ErwΣgungen, welche ein Text von Kristian Koehntopp erklΣrt, zu finden
  175. in der SuSE-Support-Datenbank unter
  176. http://sdb.suse.de/sdb/de/html/ext2frag.html.
  177.  
  178. 2.11 In meiner Shell kann ich keine Umlaute eingeben und die Del/Entf-
  179. Taste arbeitet nicht so, wie sie soll (das Zeichen unter dem Cursor
  180. l÷schen). Wie kann ich das Σndern?
  181.  
  182. Das lΣsst sich (zumindest fⁿr die Standard-Shell unter Linux, die
  183. bash) Σndern, in dem man in die Datei .inputrc im Homeverzeichnis die
  184. folgenden Zeilen eintrΣgt:
  185. set meta-flag on
  186. set convert-meta off
  187. set output-meta on
  188. "\e[3~": delete-char
  189. Bei halbwegs aktueller bash (bzw. readline) genⁿgt es, stattdessen die
  190. locales richtig zu setzen, z.B. LC_CTYPE=de_DE.
  191.  
  192. 2.12 Warum kann ich ein RPM-Paket, das ich gerade mit rpm -i
  193. foo-1.0-1.i386.rpm installiert habe, nicht mit rpm -e
  194. foo-1.0-1.i386.rpm wieder deinstallieren? RPM meldet nur: package
  195. foo-1.0-1.i386.rpm is not installed.
  196.  
  197. RPM unterscheidet zwischen dem Namen der Datei und dem Namen des
  198. Paketes. Dies erm÷glicht es z.B., ein RPM-Paket auch mit verkⁿrztem
  199. Namen auf einer DOS-Diskette abzuspeichern und es trotzdem mit dem
  200. korrekten Namen zu installieren. Der Name des Paketes ist in der Datei
  201. abgelegt und kann mit rpm -qp foo-1.0-1.i386.rpm abgefragt werden. Im
  202. vorgenannten Beispiel soll das Paket foo-1.0-1 hei▀en, so dass die
  203. Deinstallation einfach mittels rpm -e foo-1.0-1 oder auch mit der
  204. Kurzform rpm -e foo (Weglassen der Versionsnummern) erfolgen kann.
  205.  
  206. 2.13 Wie kann ich auf der Kommandozeile (d.h. ohne X-basierte
  207. Programme verwenden zu mⁿssen) ftp ⁿber einen Proxy benutzen?
  208.  
  209. In diesem Fall bietet sich Lynx an. Lynx ist ein Webbrowser fⁿr die
  210. Textkonsole, der auch ftp ⁿber ftp-fΣhige http-Proxies beherrscht. Um
  211. Lynx den passenden Proxy bekanntzumachen, muss man lediglich die
  212. beiden Shell-Variablen http_proxy und ftp_proxy auf die URL des
  213. jeweiligen Proxies setzen, z.B. so:
  214. bash> export http_proxy=http://mein.http.proxy.de:8080/
  215. bash> export ftp_proxy=http://mein.http.proxy.de:8080/
  216. Alternativ kann man die Proxies fⁿr lynx auch in /etc/lynx.cfg setzen.
  217. Eine andere M÷glichkeit ist die Verwendung des Programms wget, das
  218. entgegen seinem Namen nicht nur mit Web- sondern auch mit ftp-Servern
  219. und entsprechenden Proxies umgehen kann.
  220.  
  221. 2.14 Bei Anleitungen zur Netzwerkkonfiguration findet man hΣufig
  222. Angaben wie 192.168.1.0/24. Was bedeutet das /24?
  223.  
  224. Es handelt sich hier um eine Kurzschreibweise der Netzmaske. Die Zahl
  225. steht fⁿr die Anzahl der 1-Bits, die in der Netzmaske den Netzwerkteil
  226. der davorstehenden Adresse angeben. In diesem Beispiel sind es 24
  227. 1-Bits, die Netzmaske ist also in binΣrer Schreibweise
  228. 11111111.11111111.11111111.00000000 bzw. dezimal 255.255.255.0.
  229.  
  230. 2.15 Warum werden Textdateien im Querformat (jeweils 2 Seiten auf
  231. einem A4-Blatt) gedruckt und wie kann man das Σndern?
  232.  
  233. Das ist abhΣngig von der Konfiguration des Druckerfilters. Bei
  234. Systemen, die Apsfilter verwenden (z.B. SuSE), kann man das in der
  235. Datei /etc/apsfilterrc konfigurieren. Dort gibt es einen Eintrag
  236. FEATURE, bei dem die verschiedenen M÷glichkeiten in den
  237. Kommentarzeilen beschrieben sind.
  238.  
  239. 2.16 Wie kann ich auf meine DOS-formatierten Disketten zugreifen?
  240.  
  241. Eine Diskette ist fⁿr Linux prinzipiell nichts anderes als jeder
  242. andere DatentrΣger, d.h. man kann eine Diskette genauso mounten, wie
  243. eine Festplattenpartition. In diesem Fall muss nur der passende
  244. Dateisystem-Typ angegeben werden, also z.B. so:
  245. mount -t vfat /dev/fd0 /mnt/floppy.
  246. Dabei steht vfat fⁿr lange Dateinamen in Windows95-Art und das
  247. Verzeichnis /mnt/floppy muss existieren. Vor dem Entnehmen der
  248. Diskette muss diese _unbedingt_ mittels umount /mnt/floppy wieder
  249. unmounted werden, sonst kann es zu Datenverlusten kommen ! Da es doch
  250. recht umstΣndlich ist, auf diese Art auf Disketten zuzugreifen, gibt
  251. es die mtools. Das sind Befehle, die den wichtigsten DOS-Befehlen mit
  252. einem vorangestellten m entsprechen, also z.B. mdir, mcopy, mtype etc.
  253. Damit kann man, ohne die Diskette mounten zu mⁿssen, z.B. eine Datei
  254. von Diskette auf die Platte kopieren: mcopy A:foo.txt /tmp/.
  255.  
  256. 2.17 Wie kann ich LILO wieder aus dem MBR entfernen?
  257.  
  258. Am einfachsten ist es, MS-DOS zu booten und fdisk /MBR aufzurufen.
  259. Eine hinreichend neue DOS-Version vorausgesetzt, wird damit der MBR
  260. mit dem Standard-Bootblock ⁿberschrieben. Diese Funktion von fdisk ist
  261. AFAIK nicht offiziell dokumentiert und funktioniert mit einigen
  262. fdisk-Versionen nicht.
  263. Bei WindowsXP sollte es genⁿgen (ungetestet), von der XP
  264. Installations-CD zu booten und anschlie▀end folgend Schritte
  265. auszufⁿhren: Installation reparieren (R), Reparaturkonsole wΣhlen (K),
  266. Partition wΣhlen (1), FIXMBR und FIXBOOT starten.
  267. Soweit unter Linux ein Backup des Original-Bootblocks vorhanden ist,
  268. kann dieser auch unter Linux wie im Manual zu lilo beschrieben per dd
  269. oder mit lilo -u wieder installiert werden.
  270.  
  271. 2.18 Wie kann ich auf meinen Streamer zugreifen?
  272.  
  273. HΣufig wird gefragt, wie denn ein Streamerband gemounted werden kann.
  274. Die Antwort ist recht einfach: gar nicht (zumindest nicht unter
  275. Linux).
  276. Ein Streamer ist unter Linux ein sogenanntes Character-Device, d.h. es
  277. gibt darauf kein Dateisystem, das man mounten k÷nnte. Zum Schreiben
  278. auf und zum Lesen vom Band verwendet man entsprechende Programme, z.B.
  279. tar und cpio. Fⁿr diese Programme ist ein Streamer eine Blackbox, d.h.
  280. dass z.B. tar nicht wei▀, an welche Stelle auf dem Band gerade
  281. geschrieben wird und tar kann das Band auch nicht vor- oder
  282. zurⁿckspulen. Fⁿr Bandoperationen (vor- oder zurⁿckspulen, l÷schen,
  283. Suchen einer bestimmten Bandstelle, etc.) gibt es das Programm mt
  284. (magnetic tape). Fⁿr mt ist das Band wiederum eine Blackbox: mt kennt
  285. nicht die Daten auf dem Band, es kennt aber z.B. die Position des
  286. Bandes. Tar und mt ergΣnzen sich daher.
  287. Bei beiden Programmen muss man das zum Streamer geh÷rende Device
  288. angeben. Wie das Device hei▀t, hΣngt von der Art des Streamers ab. Der
  289. erste SCSI-Streamer im System hei▀t /dev/st0, ein QIC-80- oder
  290. Travan-Floppystreamer wird ⁿber /dev/ftape angesprochen und einer der
  291. bisher noch recht seltenen ATAPI-Streamer hei▀t z.B. /dev/hdb, d.h. er
  292. erhΣlt die Bezeichnung, die eine Festplatte an gleicher Stelle
  293. erhalten wⁿrde. Bei den Device-Bezeichnungen muss noch eine wichtige
  294. Unterscheidung getroffen werden: die bisherigen Beispiele sind
  295. sogenannte rewinding devices, d.h. nach dem Ende jeder Schreib- oder
  296. Leseoperation wird das Band automatisch an den Anfang zurⁿckgespult,
  297. so dass ein weiterer Schreibvorgang die vorhandenen Daten
  298. ⁿberschreiben wⁿrde. M÷chte man, dass das Band nach dem Ende eines
  299. Schreib- oder Lesevorgangs an der Stelle stehen bleibt, an der es
  300. zuletzt war, muss als Device das entsprechende nonrewinding device
  301. angegeben werden, also z.B. /dev/nst0 oder /dev/nftape.
  302. Wie bekommt man jetzt die Daten aufs Band? Dazu ein Beispiel mit einem
  303. SCSI-Streamer:
  304.   * Zurⁿckspulen des Bandes, falls noch nicht erfolgt:
  305.     bash> mt -f /dev/st0 rewind
  306.   * Sichern des Verzeichnisses /etc auf den Streamer:
  307.     bash> cd /; tar -cvf /dev/st0 etc/
  308.     Da als Device /dev/st0 angegeben ist, wird das Band anschlie▀end
  309.     automatisch zurⁿckgespult.
  310.   * Vergleich der geschriebenen Daten:
  311.     bash> tar -dvf /dev/st0
  312.  
  313. Die Option -dv bei tar bewirkt, dass die jeweils gerade ⁿberprⁿfte
  314. Datei auf dem Bildschirm ausgegeben wird. Falls eine Abweichung
  315. zwischen Band und Platte festgestellt wird, gibt tar eine
  316. entsprechende Meldung aus.
  317.  
  318. 2.19 In /var/log/messages erscheint regelmΣ▀ig der Eintrag -- MARK --.
  319. Was hat das zu bedeuten?
  320.  
  321. Mit diesem Eintrag zeigt der Syslogd, welcher fⁿr das Protokollieren
  322. von Systemereignissen zustΣndig ist, an, dass er noch lΣuft. Das
  323. Zeitintervall zwischen den EintrΣgen lΣsst sich beim Aufruf des
  324. Syslogd mittels des Parameters -m Intervall einstellen bzw. mit dem
  325. Intervall 0 ganz abschalten.
  326. Einige Syslogd-Versionen unterdrⁿcken den Eintrag, wenn wΣhrend des
  327. Intervalls andere Ereignisse protokolliert wurden, so dass er nur
  328. erscheint, wenn ansonsten keine Lebenszeichen des Syslogd sichtbar
  329. wΣren.
  330.  
  331. 2.20 Wie ist das mit den Locales?
  332.  
  333. Locales sind Konfigurationsdateien, die den Rechner an nationale
  334. Gegebenheiten anpassen sollen. Dazu gibt es Dateien, die Informationen
  335. ⁿber nationale oder regionale Besonderheiten enthalten, u.a. die
  336. Sprache, das Zahlen-, das Datums- und das Zeitformat sowie den
  337. verwendeten bzw. darstellbaren Zeichensatz. Sind die Locales
  338. unvollstΣndig oder nicht richtig konfiguriert, werden sehr restriktive
  339. Defaults verwendet, die z.B. nur die Anzeige von 7 bit us-ascii
  340. Zeichen erlauben. Die Konfiguration, welche Locale-Einstellungen
  341. verwendet werden sollen, erfolgt durch folgende Environmentvariablen.
  342. Umgebungsvariablen setzt man entweder mit export VARIABLE=WERT (bash)
  343. oder setenv VARIABLE WERT (tcsh).
  344.  1. $LC_ALL Diese Variable ⁿberschreibt alle weiter unten erlΣuterten.
  345.     Deshalb sollte man sie tunlichst ungesetzt lassen, und die anderen
  346.     Variablen verwenden.
  347.  2. $LC_CTYPE Diese Variable gibt an, welche Zeichen / welcher
  348.     Zeichensatz auf dem aktuellen Terminal verwendet werden kann. Wenn
  349.     diese Variable nicht korrekt gesetzt ist, geben viele Programme
  350.     z.B. statt Umlauten nur Fragezeichen aus.
  351.  3. $LC_COLLATE Damit kann man die Sortierreihenfolge beeinflussen. Im
  352.     Locale de_DE beispielsweise ist Σ gleichwertig zu a zu behandeln.
  353.     (ab,Σb,ac)
  354.  4. $LANG Der hier eingestellte Wert wird fⁿr die anderen LC-Variablen
  355.     verwendet, sofern nicht diese selbst oder LC_ALL gesetzt sind.
  356.     Einige wenige Programme wie man werten diese Variable auch direkt
  357.     aus.
  358.  5. $LC_TIME Diese Variable gibt an, in welchen Formaten Datum und
  359.     Zeit ausgegeben werden sollen.
  360.  6. $LC_NUMERIC Gibt an, wie Zahlen, die keine GeldbetrΣge sind,
  361.     formatiert werden sollen. (z.B. '.' oder ',' als Dezimaltrenner)
  362.  7. $LC_MONETARY Das selbe wie vorhin, diesmal allerdings fⁿr
  363.     GeldbetrΣge.
  364.  8. $LC_MESSAGES Gibt an, in welcher Sprache Programme ihre
  365.     Nachrichten ausgeben sollen. Das hat nichts mit automatischer
  366.     ▄bersetzung o.Σ. zu tun, sondern ein Programm muss fⁿr jede
  367.     Sprache die es unterstⁿtzen soll, entsprechend vorgesehen sein.
  368.     Deshalb werden durch setzen dieser Variable lΣngst nicht alle
  369.     Nachrichten in Deutsch ausgegeben. Teilweise sind die
  370.     ▄bersetzungen auch nicht sehr gelungen.
  371.  
  372. Ich pers÷nlich setze nur LC_CTYPE, aber das ist eine Sache des pers.
  373. Geschmacks.
  374. Fⁿr deutsche Einstellungen mⁿssen die Variablen auf "de_DE" gesetzt
  375. werden.
  376. Anmerkung: Bei manchen Distributionen mⁿssen die Locales selbst
  377. kompiliert werden. Bei Debian (ab woody) macht man das am einfachsten
  378. mittels dpkg-reconfigure locales, alternativ kann man die gewⁿnschten
  379. locales auch direkt in /etc/locale.gen eintragen und danach als root
  380. das Programm locale-gen ausfⁿhren.
  381.  
  382. 2.21 Wie [l÷sche/verschiebe/bearbeite] ich Dateien, die mit -
  383. beginnen?
  384.  
  385. Das hΣngt vom Programm ab. Oft zum Erfolg fⁿhrt, nach dem letzten
  386. echten Parameter -- und dann den Dateinamen anzugeben. Also etwa so:
  387. $ touch -file
  388. touch: invalid option -- i
  389. Try touch --help' for more information.
  390. $ touch -- -file
  391. nikratio:~/foo$ ls
  392. -file
  393. $ rm -file
  394. rm: invalid option -- l
  395. Try rm --help' for more information.
  396. $ rm -- -file
  397. $ ls
  398. Eine weitere M÷glichkeit ist, vor dem Dateinamen das Verzeichnis
  399. einzugeben, also z.B. rm ./-file oder rm /home/me/-file.
  400.  
  401. 2.22 Ich ben÷tige die Datei foo.bar, welches Paket muss ich
  402. installieren?
  403.  
  404. Das kommt auf die Distribution an:
  405.   * Debian: Auf den CDs und dem ftp-Server befindet sich im
  406.     Verzeichnis dists/$Version/ die Datei Contents-$arch.gz, die
  407.     einfach mittels zgrep durchsucht werden kann.
  408.     zgrep foo.bar /cdrom/dists/potato/Contents-i386.gz
  409.     Alternativ kann man auch die untere Suchmaske ("Search the
  410.     contents of packages") im Formular <http://packages.debian.org/>
  411.     auf Debians WWW-Site verwenden.
  412.   * SuSE: YaST bietet die Funktion Paketauskunft.
  413.   * RedHat: Installiert man das Paket rpmdb-redhat (ab RedHat Version
  414.     6.2 enthalten), kann man mittels
  415.     rpm -qf `rpm -qla --define '_dbpath
  416.     /usr/lib/rpmdb/%{_arch}-%{_vendor}-%{_os}/redhat' |
  417.     grep gesuchte.Datei` --define '_dbpath
  418.     /usr/lib/rpmdb/%{_arch}-%{_vendor}-%{_os}/redhat'
  419.     das entsprechende Paket finden.
  420.   * Alternative fⁿr alle rpm-basierten Distributionen: Man erzeugt
  421.     selbst eine Liste, indem man die Installations-CDs (DVD) der Reihe
  422.     nach einlegt, mountet und anschlie▀end
  423.     find /mnt/cdrom -type f -name "*.rpm" -print |
  424.     { while read paketdatei ; do
  425.     paket=`basename $paketdatei`
  426.     rpm -qpl "$paketdatei" | sed -e "s/$/ $paket/"
  427.     done
  428.     } >> ~/InhaltallerCDs
  429.     aufruft. Jetzt kann man die Liste einfach mittels
  430.     grep gesuchte.Datei ~/InhaltallerCDs durchsuchen.
  431.  
  432. 2.23 Wie kann ich mit einem Kommandozeilenprogramm Mails mit
  433. MIME-Attachment verschicken?
  434.   * mutt -n -F /dev/null -s "Anhang" -a Datei email@adresse <
  435.     /dev/null
  436.   * mpack -s "Anhang" Datei email@adresse
  437.   * nail -s "Anhang" -a Datei email@adresse < /dev/null
  438.   * metasend -b -s "Anhang" -f Datei -t email@adresse -m
  439.     application/octet-stream
  440.   * uuenview -b -s "Anhang" -m email@adresse Datei
  441.  
  442. 2.24 Manchmal fΣngt die Festplatte aus heiterem Himmel an zu rattern -
  443. und erst nach einigen Minuten ist der Spuk wieder vorbei.
  444.  
  445. Dafⁿr ist in aller Regel ein Cronjob verantwortlich. Es handelt sich
  446. hierbei um regelmΣ▀ige AufrΣumarbeiten (z.B. im Spool eines Proxies,
  447. Newsservers oder in den Logfiles) und Aktualisierungen (so wird z.B.
  448. fⁿr das Tool locate mit updatedb eine Datenbank erstellt). Mit top und
  449. pstree lΣsst sich das genauer feststellen.
  450. Sofern nicht anacron eingesetzt wird, wird die Festplatte immer zur
  451. selben Uhrzeit aktiv werden. Anacron hingegen richtet sich nicht nach
  452. Uhrzeiten, sondern verrichtet seinen Dienst tΣglich, w÷chentlich, oder
  453. wie auch immer gewⁿnscht.
  454.  
  455. 2.25 Wie kann ich Audio-CDs mounten?
  456.  
  457. Das ist normalerweise nicht n÷tig, da sowohl Programme zum Abspielen
  458. der CD wie z.B. xmms <http://www.xmms.org/> als auch solche zum
  459. digitalen Grabben (cdparanoia, cdrdao) direkt auf das Device
  460. zugreifen.
  461.  
  462. Sollte diese Antwort nicht ⁿberzeugend genug sein, bietet sich cdfs
  463. <http://www.elis.rug.ac.be/~ronsse/cdfs/> an.
  464.  
  465. 2.26 Beim Versuch, ein rpm-Paket zu installieren, erhalte ich die
  466. Fehlermeldung only packages with major numbers <= 3 are supported by
  467. this version of RPM.
  468.  
  469. Das Paket wurde mit der neuen Version 4 von rpm gebaut, deine Version
  470. kann mit dem geΣnderten Format aber nichts anfangen. Der Hersteller
  471. deiner Distribution stellt dir vermutlich ein Update auf rpm Version
  472. 3.0.5 bereit, das auch mit dem rpm4-Format umgehen kann.
  473. Siehe auch Red Hat, Inc. Product Enhancement Advisory RHEA-2000:051-01
  474. <http://www.redhat.com/support/errata/RHEA-2000-051.html> "New version
  475. of rpm required to install Red Hat updates" bzw.
  476. http://sdb.suse.de/sdb/de/html/thallma_rpm_40.html.
  477. RedHat empfiehlt inzwischen in RHSA-2001:016-03
  478. <http://www.redhat.com/support/errata/RHSA-2001-016.html> fⁿr alle
  479. Versionen von RedHat Linux das Update auf RPM4.
  480. Vorsicht, obwohl RedHat und SuSE beide RPM-basiert sind, unterscheiden
  481. sie sich in bestimmten Punkten, wie Paketnamen und Pfaden, so dass ein
  482. RedHat-RPM auf einem SuSE-System (und vice versa) laufen kann, aber
  483. nicht muss. Vor allem bei den AbhΣngigkeiten wird es aufgrund der
  484. unterschiedlichen Paketnamen Probleme geben.
  485. Wenn man sich nicht mit den entstehenden Problemen herumschlagen will,
  486. so sollte man nur zur Distribution passende Pakete installieren.
  487.  
  488. 2.27 Wie kann ich einem Netzwerkinterface mehrere IP-Adressen
  489. zuweisen?
  490.  
  491. Sofern dein Kernel mit "IP Aliasing" unterstⁿtzt, genⁿgt
  492. beispielsweise
  493. ifconfig eth0:0 127.0.8.15, um eth0 zusΣtzlich die IP-Adresse
  494. 127.0.8.15 zuzuweisen.
  495. Genauer steht das in
  496. Kernelquelltext/Documentation/networking/alias.txt.
  497.  
  498. 2.28 Ich habe mein Root-Passwort vergessen, wie komme wieder in mein
  499. System?
  500.  
  501. Du ⁿbergibst (wie BootPrompt-HOWTO beschrieben) am lilo-Bootprompt
  502. zusΣtzlich den Parameter init=/bin/sh, gibst dann mit mount -n -o
  503. remount,rw / das Rootfilesystem zum Schreiben frei und setzt das
  504. Passwort mittels passwd wieder auf einen bekannten Wert. Mounte
  505. anschlie▀end mit mount -n -o remount,ro / das Rootfilesystem wieder
  506. readonly und boote neu.
  507. Das passwd-Kommando liegt ⁿblicherweise in /usr/bin/, und daher
  508. eventuell nicht auf der Rootpartition, in diesem Fall musst du auch
  509. diese Partition hΣndisch mittels mount -n -r /usr mounten.
  510. WΣhrend der ganzen Prozedur hast du normalerweise keine deutsche
  511. Tastaturbelegung, wΣhle daher ein Passwort ohne Sonderzeichen.
  512. "/" liegt auf "-", "-" auf "▀" und "=" auf der Akzent-Taste, zwischen
  513. Backspace und ▀.
  514.  
  515. 2.29 Wenn ich versuche, ein Programm auszufⁿhren, bekomme ich immer
  516. die Meldung PROGRAMMNAME: No such file or directory (obwohl das
  517. angegebene Programm tatsΣchlich existiert), Backslash found where
  518. operator expected at ... oder : command not found.
  519.  
  520. Es handelt sich bei dem Programm h÷chstwahrscheinlich um ein Script.
  521. Ein Script liegt immer als Textdatei vor. Die Textdateien unter Unix
  522. und DOS/Windows sind nun aber verschieden aufgebaut (sie verwenden
  523. einen anderen Zeichensatz und andere Zeilenendezeichen). Da Entpacker
  524. Textdateien oft an die Gegebenheiten des laufenden Betriebssystems
  525. anpassen, sind diese dann unter einem anderen Betriebssystem nicht
  526. mehr direkt lesbar.
  527. Du kannst jetzt entweder alle Textdateien mit recode ibmpc..latin1
  528. dateiname ins Linuxformat konvertieren, oder, wenn es sich um ein
  529. Linuxarchiv (tar.gz, tgz, tar, tar.bz2) handelt, das Paket direkt
  530. unter Linux entpacken beziehungsweise deinem Windowsentpacker das
  531. konvertieren abgew÷hnen.
  532. Handelt es sich um ein Archiv fⁿr Windows, musst du einen
  533. Linuxentpacker auftreiben, der ebenfalls automatisch konvertiert, oder
  534. aber besser unter Windows entpacken und dann manuell konvertieren.
  535.  
  536. 2.30 Ich habe ein Shell-Skript geschrieben, das als root laufen muss,
  537. dazu habe ich mit chmod u+s script.sh das SUID-Bit gesetzt, es hat
  538. aber anscheinend keine Wirkung.
  539.  
  540. Aus Sicherheitsgrⁿnden ignoriert Linux das SUID-Bit bei Skripts. Es
  541. gibt eine Race-Condition, zuerst ÷ffnet der Kernel die Datei, um
  542. herauszufinden mit welchem Interpreter das Skript ausgefⁿhrt werden
  543. soll (das steht hinter #! in der ersten Zeile), dann ÷ffnet der nun
  544. Set-ID laufende Interpreter das Skript. In der Zeit dazwischen kann
  545. das Skript verΣndert worden sein.
  546.  
  547. Es gibt mehrere L÷sungsansΣtze:
  548.   * Du verwendest ein Programm wie super oder sudo, das es erm÷glicht,
  549.     bestimmte Kommandos zum Ausfⁿhren als root freizugeben. Folgender
  550.     Eintrag in /etc/super.tab erlaubt beispielsweise mason und dixon
  551.     den Rechner mit super apm in den Standbymodus zu schalten:
  552.     apm "/usr/bin/apm -s" uid=root nargs=0\
  553.     info="Suspend-mode" mason dixon
  554.   * Du verwendest perl als Skriptsprache, siehe perlsec (1p).
  555.   * Du schreibst ein Programm statt eines Skripts.
  556.  
  557. 2.31 Ich suche ein Notfall-Linux, das m÷glichst auf eine Diskette
  558. passen sollte.
  559.  
  560. Hier eine unvollstΣndige Liste:
  561.   * Floppix http://floppix.ccai.com/
  562.   * muLinux http://sunsite.auc.dk/mulinux/
  563.   * CClinux http://www.cclinux.org/
  564.   * Trinux http://www.trinux.org/
  565.   * Tomsrtb http://www.toms.net/rb/
  566.  
  567. Auf der letzten Seite gibt es noch mehr Links zu anderen
  568. Linux-Systemen auf Floppy.
  569.  
  570. 2.32 Wo kann ich ISO-Images von SuSE Linux herunterladen?
  571.  
  572. Nirgends, SuSE gibt nur CD-Images der Live-Eval-Version zum Download
  573. frei, die direkt von CD lΣuft und nicht installiert wird. Die
  574. Begrⁿndung ist unter ftp://ftp.suse.com/pub/README.iso-images.deutsch
  575. nachzulesen.
  576. Es besteht allerdings die M÷glichkeit, SuSE ohne CD direkt per ftp zu
  577. installieren, dies ist in
  578. http://sdb.suse.de/sdb/de/html/lmuelle_suselinux_internet.html
  579. <http://sdb.suse.de/sdb/de/html/lmuelle_suselinux_internet.html>
  580. genauer erklΣrt.
  581.  
  582. 2.33 Wie installiert man Programme aus dem Internet richtig? Alle
  583. meine Versuche mit ./configure, make, make install sind bisher
  584. gescheitert.
  585.  
  586. I.d.R. handelt es sich dabei um gepackte Archive im tar.gz- oder
  587. tar.bz2-Format (sog. Tarballs), die zunΣchst entpackt werden mⁿssen:
  588. tar -xvzf archivname.tar.gz
  589. tar -xv --bzip2 -f archivname.tar.bz2
  590. Nun solltest Du nachsehen, was hierbei genau entpackt wurde. Denn:
  591. Tarballs enthalten nicht zwangslΣufig Sourcecode, der compiliert
  592. werden will. Und nicht alle Programme werden auf die gleich Weise
  593. installiert. Meist ist eine Datei INSTALL und/oder README vorhanden,
  594. in der der Programmautor erklΣrt, was zu tun ist.
  595. Oft bricht die Installation ab, da angeblich etwas fehlt - obwohl man
  596. sich sicher ist, dass dies vorhanden ist:
  597.   * Zu fast allen Libs existieren sog. "devel"-Pakete;
  598.     Entwicklerpakete, die zum Compilieren anderer Software ben÷tigt
  599.     werden. Wer z.B. die GTK-Libs installiert, mu▀ - um GTK-Programme
  600.     nicht nur ausfⁿhren, sondern auch compilieren zu k÷nnnen - das
  601.     separat erhΣltliche GTK-Devel-Paket seiner Distribution
  602.     installieren. Ein anderes Beispiel ist in der Frage ⁿber fehlende
  603.     X11-Dateien zu finden. Der Punkt Ich ben÷tige die Datei foo.bar,
  604.     welches Paket muss ich installieren? in der FAQ hilft dir
  605.     vielleicht, das n÷tige Paket selbst zu finden.
  606.   * Wer Libs selber installiert (und kein fertiges Distributionspaket
  607.     einsetzt), mu▀ den Pfad zu diesen in der Datei /etc/ld.so.conf
  608.     eintragen (mit Ausnahme von /lib und /usr/lib). Existieren
  609.     verschiedene Versionen der gleichen Lib, so wird spΣter jene
  610.     zuerst gefunden, deren Pfad in dieser Datei zuerst eingetragen
  611.     ist. Allerdings werden Libs nicht anhand den EintrΣgen in
  612.     ld.so.conf gefunden - vielmehr wird /etc/ld.so.cache gefragt.
  613.     Erstellt und aktualisiert wird diese Datei mittels dem Tool
  614.     ldconfig anhand der ld.so.conf.
  615.   * Ein weiterer Lauf von ./configure durchsucht nur dann wirklich das
  616.     System auf VerΣnderungen, wenn zuvor die Datei config.cache
  617.     gel÷scht wurde.
  618.  
  619. Ein Blick in Wie werde ich selbst kompilierte Software wieder sauber
  620. los vor dem Aufruf von make install ist empfehlenswert.
  621.  
  622. 2.34 Wie werde ich selbst kompilierte, mit make install installierte
  623. Software wieder sauber los.
  624.  
  625. Wenn du das Makefile des Programms noch hast, kannst du es mit make
  626. uninstall probieren, sonst bleibt dir nur hΣndisches Suchen, es sei
  627. denn, du hast schlauerweise schon beim Installieren Vorkehrungen
  628. getroffen, und z.B. einen der folgende VorschlΣge befolgt.
  629.   * Verwende Software wie stow <http://www.gnu.org/software/stow/>,
  630.     graft <http://www.gormand.com.au/peters/tools/graft/graft.html>
  631.     oder depot <http://andrew2.andrew.cmu.edu/depot/>, welche die
  632.     Software in eigene separate Verzeichnisse ablegt.
  633.   * Erzeuge Pakete im Paketformat deiner Distribution und installiere
  634.     diese.
  635.     Siehe RPM-HOWTO, Maximum RPM <http://www.rpm.org/max-rpm/>, Debian
  636.     New Maintainers' Guide <http://www.de.debian.org/doc/maint-guide/>
  637.     und Debian Policy Manual
  638.     <http://www.de.debian.org/doc/debian-policy/>
  639.     Ein kleiner Tipp noch: Erzeuge die RPM- oder DEB-Pakete nicht als
  640.     root sondern als normaler User, so kannst feststellen, ob die
  641.     entsprechenden Skripts den Fehler haben, die Dateien direkt ins
  642.     root-Dateisystem zu kopieren, anstatt in das Verzeichnis, in dem
  643.     das Paket gebaut wird. Bei Debian musst du dazu fakeroot verwenden
  644.     und bei rpm folgende Zeile in ~/.rpmmacros aufnehmen
  645.     %_topdir /ein/beliebiges/Verzeichnis
  646.     und (zumindest) die Verzeichnisse BUILD, RPMS/i386, RPMS/noarch,
  647.     SOURCES, SPECS und SRPMS unter /ein/beliebiges/Verzeichnis
  648.     anlegen.
  649.   * Installwatch <http://asic-linux.com.mx/~izto/installwatch.html>
  650.     zeichnet auf, welche Dateien bei make install hinzugefⁿgt werden.
  651.   * CheckInstall <http://asic-linux.com.mx/~izto/checkinstall/>
  652.     verwendet Installwatch, um automatisch rpm- oder Slackware-Pakete
  653.     zu erstellen.
  654.  
  655. 2.35 Wie kann ich verhindern, dass ich die Ausgabe bestimmter cronjobs
  656. per Mail zugestellt bekomme.
  657.  
  658. Du kannst die Ausgabe des Kommandos nach /dev/null umleiten:
  659. 08 15 * * * /pfad/zu/blabla > /dev/null
  660. Mit
  661. 08 15 * * * /pfad/zu/blabla > /dev/null 2>&1
  662. leitest du zusΣtzlich auch eventuelle Fehlermeldungen um, die auf
  663. Stderr ausgegeben wⁿrden. Dies lΣsst sich auch sch÷ner mit gezieltem
  664. (mehrfachen) Setzen von MAILTO erreichen:
  665. MAILTO="ich@here.org"
  666. 47 11 * * * job/mit/interessanter/Ausgabe
  667. #
  668. MAILTO=""
  669. * * * * * job/mit/laestigen/Meldungen
  670.  
  671. 2.36 Ich erhalte die Fehlermeldung Argument list too long, wenn ich in
  672. einem Verzeichnis mit sehr vielen Dateien mit rm * versuche, alle
  673. Dateien zu l÷schen.
  674.  
  675. Im Linuxkernel gibt es eine BeschrΣnkung fⁿr die LΣnge der
  676. Kommandozeile, bei rm * ersetzt die shell den * durch die Dateinamen
  677. und ruft rm mit dieser langen Liste als Argument auf.
  678. Es gibt mehrere L÷sungsm÷glichkeiten dafⁿr:
  679.   * Eine Schleife: for i in *; do rm "$i"; done
  680.     Hier wird der * von der Shell intern aufgel÷st und rm fⁿr jede
  681.     einzelne Datei separat aufgerufen (langsam!).
  682.     Wichtig sind die doppelten Anfⁿhrungszeichen um $i, sonst wⁿrde rm
  683.     Dateinamen mit beispielsweise Leerzeichen fⁿr zwei kurze
  684.     Dateinamen halten, probiere es mal aus:
  685.     touch "mit Leerzeichen"; rm mit Leerzeichen
  686.   * Die schnellste, bitte nicht erschrecken:
  687.     find ./ -type f -maxdepth 1 -print0 | xargs -r0 rm
  688.     find ./ -maxdepth 1 -mindepth 1 -name ".*" -or -print0 | xargs -r0
  689.     rm
  690.     find sucht im aktuellen Arbeitsverzeichnis (./), steigt nicht in
  691.     Unterverzeichnisse ab, um dort weiterzusuchen (-maxdepth 1),
  692.     ignoriert aber "./" selbst (-mindepth 1), versteckte Dateien, d.h.
  693.     die welche einen Punkt als erstes Zeichen im Dateinamen haben,
  694.     werden ignoriert -name ".*", die Namen der anderen werden auf
  695.     Stdout ausgegeben, dabei werden die einzelnen Dateinamen durch ein
  696.     "null character" getrennt (-or -print0).
  697.     xargs liest diese Liste auf Stdin, teilt sie in gerade so gro▀e
  698.     Teile, dass die Kommandozeile nicht zu lang wird, und ruft dann
  699.     jedesmal rm mit diesen kurz genugen Teillisten als Argument auf.
  700.     -r steht fⁿr --no-run-if-empty und erspart uns eine Fehlermeldung,
  701.     wenn das Verzeichnis leer wΣre und find keine Dateien fΣnde. Sonst
  702.     wⁿrde nΣmlich xargs rm einmal ohne Argumente aufrufen.
  703.     -print0 und -0 sind wieder n÷tig, um auch Dateinamen mit
  704.     Leerzeichen korrekt zu behandeln, sonst wⁿrde xargs auch bei
  705.     Leerzeichen splitten. Diese L÷sung ist nicht portabel, d.h. sie
  706.     lΣuft praktisch nur mit GNU-find und -xargs, wie es bei
  707.     Linuxsysteme ⁿblicherweise Verwendung findet. Die Implementationen
  708.     von find auf anderen unixartigen Systemen verstehen diese Optionen
  709.     meist nicht, und man muss eine der anderen hier aufgefⁿhrten
  710.     L÷sungen verwenden.
  711.   * find ... -or -exec rm '{}' ';' find findet wieder dieselben
  712.     Dateien wie oben, anstatt aber deren Namen auszugeben, ruft es
  713.     wieder fⁿr jede einzelne Datei einmal rm auf. ({} wird jeweils
  714.     durch den Namen der Datei ersetzt, das Semikolon kennzeichnet fⁿr
  715.     find das Ende des Kommandos. Beides sind auch fⁿr die Shell
  716.     Zeichen mit besonderer Bedeutung und mⁿssen daher mit
  717.     Anfⁿhrungszeichen oder Backslash vor dieser "geschⁿtzt" werden.)
  718.   * find ... -or -exec rm '{}' + Nur der VollstΣndigkeit erwΣhnt,
  719.     funktioniert nicht mit GNU find, ist so schnell wie find ... |
  720.     xargs ..., d.h. es wird nicht fⁿr jede Datei ein neues rm
  721.     gestartet. Diese Syntax ist im Standard Single UNIX Specification
  722.     Version 3 <http://www.UNIX-systems.org/version3/> (bzw.
  723.     IEEE-1003.1-200x) spezifiziert und schon sehr lange bei Solaris
  724.     und UnixWare verfⁿgbar.
  725.  
  726. Lesehinweise: Die Dokumentation zu find im info-Format, das BASH
  727. Programming - Introduction HOWTO, die Newsgroup de.comp.os.unix.shell,
  728. http://www.heise.de/ix/artikel/2001/07/164/
  729. <http://www.heise.de/ix/artikel/2001/07/164/>.
  730.  
  731. 2.37 Wie kann ich bestimmten Benutzern Schreibzugriff auf gemountete
  732. Windowspartitionen gewΣhren?
  733.  
  734. Erstelle einen neue Gruppe und mache die entsprechenden User (im
  735. folgenden Beispiel "ich" und "sonstwer") zu Mitgliedern dieser Gruppe
  736. (mit groupadd, addgroup, adduser, usermod, YaST, linuxconf, etc.). -
  737. Bei Debian geht das so:
  738. groupadd winwrite
  739. adduser ich winwrite
  740. adduser sonstwer winwrite
  741. Jetzt brauchst du die GID der neuen Gruppe.
  742. grep winwrite /etc/group
  743. winwrite:x:4711:ich,sonstwer
  744. Die GID ist die Zahl in der Mitte, also 4711. Fⁿge jetzt in /etc/fstab
  745. die Mountoptionen gid=4711,umask=002 ein (direkt durch Editieren oder
  746. mit dem Administrationsprogramm deiner Distribution (YaST, linuxconf,
  747. etc.), um den Schreibzugriff zu erm÷glichen,
  748. /dev/hda1 /mnt/win vfat rw,gid=4711,umask=002 0 0
  749. Das erlaubt den Usern in der Gruppe winwrite (und root) Schreib- und
  750. Lesezugriff, allen anderen nur Lesezugriff. Mit mount -o remount
  751. /mnt/win treten die ─nderungen in Kraft.
  752. Lesetipps: mount (8), umask (2) und fstab (5).
  753.  
  754. 2.38 Wie kann ich den Speicherbedarf eines Verzeichnisses
  755. einschlie▀lich der Unterverzeichnisse abfragen? Wie viel freier Platz
  756. ist auf der Festplatte noch verfⁿgbar?
  757.  
  758. Mit dem Kommando du -sxh Verzeichnisname kannst du einfach die gesamte
  759. Gr÷▀e eines Verzeichnisbaums herausfinden. -s sorgt dafⁿr, dass nur
  760. der insgesamt verwendete Speicherplatz angefⁿhrt wird, anstatt alle
  761. Unterverzeichnisse einzeln aufzufⁿhren, -h fordert Angabe der Gr÷▀e in
  762. leichter lesbaren Einheiten (Megabyte oder Kilobyte statt Byte) an. -x
  763. bewirkt, dass unter dem Verzeichnis gemountete andere Dateisysteme
  764. nicht mitgezΣhlt werden.
  765.  
  766. Das Kommando df liefert Informationen ⁿber belegten und freien Platz.
  767.  
  768. 2.39 Mein Bildschirm wird auf Console nach einiger Zeit schwarz. Wie
  769. schalte ich das ab?
  770.  
  771. Fⁿr die Console gibt es das Tool setterm. Ein Aufruf von setterm
  772. -blank 0 verhindert, dass das Monitorbild deaktiviert wird. Um die
  773. Energiespar-Funktionen des Monitors zu nutzen sind die Parameter
  774. powersave und powerdown zu verwenden.
  775.  
  776. 2.40 Ich habe ein Skript geschrieben, das direkt aufgerufen tadellos
  777. funktioniert, aber nicht wenn ich es als cronjob starte.
  778.  
  779. Das liegt h÷chstwahrscheinlich daran, dass fⁿr cronjobs der
  780. Standardsuchpfad (PATH) auf einen anderen Wert gesetzt ist, z.B. ist
  781. /sbin/ nicht inkludiert. Rufe die Kommandos entweder mit vollem Pfad
  782. auf oder setze am Beginn der crontab PATH richtig.
  783.  
  784. 2.41 Was bedeutet es, wenn "ps" einen Prozess als "<defunct>" anzeigt?
  785.  
  786. Es handelt sich um einen sogenannten Zombie. Die Dokumentation der
  787. meisten unix-Σhnlichen Systeme bietet dazu als ErklΣrung an:
  788. "dead, but parent is not waiting"
  789. Um das schlⁿssig zu erklΣren, muss man wohl etwas weiter ausholen. Bei
  790. der Prozess-Verwaltung gibt es fⁿr jeden Prozess einen Eintrag in der
  791. Prozesstabelle, in dem bestimmte Daten zur Prozessverwaltung abgelegt
  792. werden. Wird der Prozess beendet, werden diese Daten wieder frei
  793. gegeben. Allerdings wⁿrden mit dem Freigeben des Eintrags in der
  794. Prozesstabelle auch Informationen wie der "Exit-Status" des Prozesses
  795. unwiderbringlich verlorengehen, und m÷glicherweise m÷chte der Parent-
  796. Prozess genau diese Information ja noch weiter benutzen.
  797.  
  798. Um dieses Problem zu l÷sen, hat man sich folgendes ausgedacht: Der
  799. Eintrag in der Prozesstabelle wird eben nicht sofort nach Beendigung
  800. des Prozesses freigegeben, sondern erst, wenn der Parent sich diese
  801. Informationen abgeholt hat. Dies tut er duch Aufruf der Systemfunktion
  802. wait(). Solange also der Parent (Elternprozess) nicht wait()
  803. aufgerufen hat, um den Exit-Code des Kindprozesses abzuholen, gibt das
  804. System den Eintrag in der Prozesstabelle noch nicht frei. Prozesse in
  805. diesem Zustand (sie laufen nicht mehr, sind aber noch in der
  806. Prozesstabelle verzeichnet) nennt man Zombies, und diese Prozesse
  807. werden in der Ausgabe von "ps" als "<defunct>" markiert.
  808.  
  809. Eine Schlussfolgerung aus dem bisher gesagten ist, dass jeder Prozess,
  810. der sich beendet fⁿr kurze Zeit zum Zombie wird (genau so lange, bis
  811. der Eltern-Prozess wait() aufgerufen hat). Normalerweise sollte ein
  812. Prozess aber nur sehr kurz in diesem Status verbleiben. Bleibt ein
  813. Prozess lΣnger in diesem Zustand, liegt meistens ein Programmierfehler
  814. vor (in aller Regel beim Eltern-Prozess).
  815.  
  816. 2.42 Wie kille ich einen Zombie?
  817.  
  818. Die Antwort darauf kann nach der obigen ErklΣrung eigentlich nur
  819. lauten "gar nicht, weil er schon tot ist". Die Frage zielt aber
  820. meistens auf etwas anderes hin: Wie beseitigt man den Eintrag in der
  821. Prozesstabelle? Dieses Problem wⁿrde sich von selbst erledigen, wenn
  822. der Elternprozess einmal wait() aufrufen wuerde, um den Exit-Status
  823. des Zombies abzuholen (und eigentlich ist nur der Elternprozess dazu
  824. in der Lage). Wenn der Elternprozess aber diese Systemfunktion nicht
  825. aufruft (Stichwort: "Rabeneltern, die sich nicht mehr um die Kinder
  826. kⁿmmern"), wird man diesen Prozess erst einmal nicht los ... ... bis
  827. sich der Elternprozess beendet.
  828.  
  829. Damit "erbt" nun nΣmlich der Prozess "init" (der Prozess, der beim
  830. Systemstart als erstes gestartet wird, mit der Prozess-ID 1) diesen
  831. Prozess, und der hat kaum etwas anderes zu tun, als auf seine Kinder
  832. zu warten, "init" wird dann also diesen Prozess abrΣumen. Damit hat
  833. man nun bereits eine Methode gefunden, um Zombies los zu werden: Man
  834. killt ihre Eltern.
  835.  
  836. 2.43 Ich m÷chte das Dateisystem meiner Linuxpartition wechseln und
  837. z.B. von ext2 auf ReiserFS umsteigen. Kann ich da irgendwie direkt
  838. konvertieren?
  839.  
  840. Nein. Die gΣngigen Dateisysteme fⁿr Linux (ext2, xfs, ReiserFS, ...)
  841. unterscheiden sich in ihrer internen Struktur so stark, dass ein
  842. direktes Konvertieren nicht m÷glich ist. (Und wenn schon, wⁿrde man es
  843. nicht ohne aktuelles, getestetes Backup probieren wollen.)
  844.  
  845. Es bleibt daher die klassische universelle Methode: Backup, neues
  846. Dateisystem erstellen, Daten wieder aufspielen. Siehe Hard Disk
  847. Upgrade Mini How-To
  848. <http://www.tldp.org/HOWTO/mini/Hard-Disk-Upgrade/>
  849.  
  850. Nur zwischen ext2 und ext3 kann man mit tune2fs -j bzw. tune2fs -O
  851. ^has_journal hin und her konvertieren.
  852.  
  853. 2.44 Wie kann ich verhindern, dass die Benutzer ihr Homeverzeichnis
  854. verlassen k÷nnen?
  855.  
  856. Beim Zugriff ⁿber ftp ist das ganz einfach, konsultiere die
  857. Dokumentation deines ftp-Daemons und suche nach chroot.
  858. chroot fⁿr lokales Login oder Anmeldung mit ssh erfordert, dass du
  859. alle Programme, die der User verwenden k÷nnen soll, sowie deren
  860. Konfigurations- (/etc) und andere Daten (/usr/share) und zusΣtzlich
  861. natⁿrlich auch die ben÷tigten dynamischen Bibliotheken(/lib, /usr/lib)
  862. in sein Homeverzeichnis packen musst. Das ist so aufwendig, wie es
  863. sich anh÷rt, und sprengt daher den Umfang dieser FAQ. Dieser Aufwand
  864. macht nur in SpezialfΣllen Sinn z.B., wenn man beim login ⁿber ssh nur
  865. einen extrem reduzierten Kommandoumfang zur Verfⁿgung stellen m÷chte.
  866.  
  867. 2.45 Ich brauche ein Shellskript, das ...? Kennt jemand eine
  868. Einfⁿhrung in die Shell-Skriptprogrammierung?
  869.  
  870. Shell-Skripting ist nicht Linux-spezifisch, und es gibt sogar eine
  871. eigene Newsgroup dafⁿr, de.comp.os.unix.shell, stelle Detailfragen
  872. bitte dort.
  873.  
  874. Im WWW finden sich eine ganze Reihe Einfⁿhrungen in
  875. Shellprogrammierung, die bekanntesten dⁿrften wohl Kristian Koehntopps
  876. UNIX Shellprogrammierung
  877. <http://www.koehntopp.de/kris/artikel/unix/shellprogrammierung/> und
  878. BASH Programming - Introduction HOW-TO
  879. <http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html> sein. Eine
  880. Suche nach "Shellprogrammierung Einfⁿhrung" liefert weitere.
  881.  
  882. 2.46 Ich m÷chte eine Datei, deren Namen mit ".bin" endet, entpacken
  883. oder verwenden.
  884.  
  885. Es sind zwei grundsΣtzlich verschiedene Typen von bin-Dateien ⁿblich:
  886.   * Selbstentpackende Archive, z.B. Sun Java. file blah.bin wird die
  887.     Datei als "Bourne shell script text executable" identifizieren.
  888.     Die Datei wird einfach ausgefⁿhrt, d.h. chmod +x blah.bin ;
  889.     ./blah.bin, wie auch der beiliegenden Dokumentation zu entnehmen
  890.     wΣre.
  891.   * Der Datenteil eines bin/cue CD-Images. Wenn die zugeh÷rige
  892.     cue-Datei vorhanden ist, kann man das Image mit cdrecord oder
  893.     cdrdao auf eine CD-ROM brennen oder mit bchunk wandeln. Sonst wird
  894.     es schwieriger, bin2iso <http://users.andara.com/~doiron/bin2iso/>
  895.     versucht ein passendes cue-Sheet zu generieren. Handelt es sich um
  896.     ein (S)VCD-Image, kann man es mit MPlayer
  897.     <http://www.mplayerhq.hu/> abspielen oder mit VCDGrab
  898.     <http://vcdgrab.sourceforge.net/> dem MPEG-Teil extrahieren.
  899.   _________________________________________________________________
  900.  
  901. Build: 18.04.2004
  902.