Erste_Schritte.html 87 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>
  5. <title>Erste_Schritte</title><link href='https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext' rel='stylesheet' type='text/css' /><style type='text/css'>html {overflow-x: initial !important;}:root { --bg-color:#ffffff; --text-color:#333333; --select-text-bg-color:#B5D6FC; --select-text-font-color:auto; --monospace:"Lucida Console",Consolas,"Courier",monospace; }
  6. html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; }
  7. body { margin: 0px; padding: 0px; height: auto; bottom: 0px; top: 0px; left: 0px; right: 0px; font-size: 1rem; line-height: 1.42857; overflow-x: hidden; background: inherit; tab-size: 4; }
  8. iframe { margin: auto; }
  9. a.url { word-break: break-all; }
  10. a:active, a:hover { outline: 0px; }
  11. .in-text-selection, ::selection { text-shadow: none; background: var(--select-text-bg-color); color: var(--select-text-font-color); }
  12. #write { margin: 0px auto; height: auto; width: inherit; word-break: normal; overflow-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 40px; }
  13. #write.first-line-indent p { text-indent: 2em; }
  14. #write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0px; }
  15. #write.first-line-indent li { margin-left: 2em; }
  16. .for-image #write { padding-left: 8px; padding-right: 8px; }
  17. body.typora-export { padding-left: 30px; padding-right: 30px; }
  18. .typora-export .footnote-line, .typora-export li, .typora-export p { white-space: pre-wrap; }
  19. @media screen and (max-width: 500px) {
  20. body.typora-export { padding-left: 0px; padding-right: 0px; }
  21. #write { padding-left: 20px; padding-right: 20px; }
  22. .CodeMirror-sizer { margin-left: 0px !important; }
  23. .CodeMirror-gutters { display: none !important; }
  24. }
  25. #write li > figure:last-child { margin-bottom: 0.5rem; }
  26. #write ol, #write ul { position: relative; }
  27. img { max-width: 100%; vertical-align: middle; }
  28. button, input, select, textarea { color: inherit; font: inherit; }
  29. input[type="checkbox"], input[type="radio"] { line-height: normal; padding: 0px; }
  30. *, ::after, ::before { box-sizing: border-box; }
  31. #write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit; }
  32. #write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative; }
  33. p { line-height: inherit; }
  34. h1, h2, h3, h4, h5, h6 { break-after: avoid-page; break-inside: avoid; orphans: 4; }
  35. p { orphans: 4; }
  36. h1 { font-size: 2rem; }
  37. h2 { font-size: 1.8rem; }
  38. h3 { font-size: 1.6rem; }
  39. h4 { font-size: 1.4rem; }
  40. h5 { font-size: 1.2rem; }
  41. h6 { font-size: 1rem; }
  42. .md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem; }
  43. .hidden { display: none; }
  44. .md-blockmeta { color: rgb(204, 204, 204); font-weight: 700; font-style: italic; }
  45. a { cursor: pointer; }
  46. sup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.7); color: rgb(85, 85, 85); border-radius: 4px; cursor: pointer; }
  47. sup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit; text-decoration: inherit; }
  48. #write input[type="checkbox"] { cursor: pointer; width: inherit; height: inherit; }
  49. figure { overflow-x: auto; margin: 1.2em 0px; max-width: calc(100% + 16px); padding: 0px; }
  50. figure > table { margin: 0px !important; }
  51. tr { break-inside: avoid; break-after: auto; }
  52. thead { display: table-header-group; }
  53. table { border-collapse: collapse; border-spacing: 0px; width: 100%; overflow: auto; break-inside: auto; text-align: left; }
  54. table.md-table td { min-width: 32px; }
  55. .CodeMirror-gutters { border-right: 0px; background-color: inherit; }
  56. .CodeMirror-linenumber { user-select: none; }
  57. .CodeMirror { text-align: left; }
  58. .CodeMirror-placeholder { opacity: 0.3; }
  59. .CodeMirror pre { padding: 0px 4px; }
  60. .CodeMirror-lines { padding: 0px; }
  61. div.hr:focus { cursor: none; }
  62. #write pre { white-space: pre-wrap; }
  63. #write.fences-no-line-wrapping pre { white-space: pre; }
  64. #write pre.ty-contain-cm { white-space: normal; }
  65. .CodeMirror-gutters { margin-right: 4px; }
  66. .md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; background: inherit; position: relative !important; }
  67. .md-diagram-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0px; padding-bottom: 8px; overflow-x: auto; }
  68. #write .md-fences.mock-cm { white-space: pre-wrap; }
  69. .md-fences.md-fences-with-lineno { padding-left: 0px; }
  70. #write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto; }
  71. .md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px; }
  72. .CodeMirror-line, twitterwidget { break-inside: avoid; }
  73. .footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em; }
  74. .footnotes + .footnotes { margin-top: 0px; }
  75. .md-reset { margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: top; background: 0px 0px; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; -webkit-tap-highlight-color: transparent; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr; }
  76. li div { padding-top: 0px; }
  77. blockquote { margin: 1rem 0px; }
  78. li .mathjax-block, li p { margin: 0.5rem 0px; }
  79. li { margin: 0px; position: relative; }
  80. blockquote > :last-child { margin-bottom: 0px; }
  81. blockquote > :first-child, li > :first-child { margin-top: 0px; }
  82. .footnotes-area { color: rgb(136, 136, 136); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal; }
  83. #write .footnote-line { white-space: pre-wrap; }
  84. @media print {
  85. body, html { border: 1px solid transparent; height: 99%; break-after: avoid; break-before: avoid; font-variant-ligatures: no-common-ligatures; }
  86. #write { margin-top: 0px; padding-top: 0px; border-color: transparent !important; }
  87. .typora-export * { -webkit-print-color-adjust: exact; }
  88. html.blink-to-pdf { font-size: 13px; }
  89. .typora-export #write { padding-left: 32px; padding-right: 32px; padding-bottom: 0px; break-after: avoid; }
  90. .typora-export #write::after { height: 0px; }
  91. }
  92. .footnote-line { margin-top: 0.714em; font-size: 0.7em; }
  93. a img, img a { cursor: pointer; }
  94. pre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background: rgb(204, 204, 204); display: block; overflow-x: hidden; }
  95. p > .md-image:only-child:not(.md-img-error) img, p > img:only-child { display: block; margin: auto; }
  96. #write.first-line-indent p > .md-image:only-child:not(.md-img-error) img { left: -2em; position: relative; }
  97. p > .md-image:only-child { display: inline-block; width: 100%; }
  98. #write .MathJax_Display { margin: 0.8em 0px 0px; }
  99. .md-math-block { width: 100%; }
  100. .md-math-block:not(:empty)::after { display: none; }
  101. [contenteditable="true"]:active, [contenteditable="true"]:focus, [contenteditable="false"]:active, [contenteditable="false"]:focus { outline: 0px; box-shadow: none; }
  102. .md-task-list-item { position: relative; list-style-type: none; }
  103. .task-list-item.md-task-list-item { padding-left: 0px; }
  104. .md-task-list-item > input { position: absolute; top: 0px; left: 0px; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none; }
  105. .math { font-size: 1rem; }
  106. .md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-radius: 10px; }
  107. .md-toc-content { position: relative; margin-left: 0px; }
  108. .md-toc-content::after, .md-toc::after { display: none; }
  109. .md-toc-item { display: block; color: rgb(65, 131, 196); }
  110. .md-toc-item a { text-decoration: none; }
  111. .md-toc-inner:hover { text-decoration: underline; }
  112. .md-toc-inner { display: inline-block; cursor: pointer; }
  113. .md-toc-h1 .md-toc-inner { margin-left: 0px; font-weight: 700; }
  114. .md-toc-h2 .md-toc-inner { margin-left: 2em; }
  115. .md-toc-h3 .md-toc-inner { margin-left: 4em; }
  116. .md-toc-h4 .md-toc-inner { margin-left: 6em; }
  117. .md-toc-h5 .md-toc-inner { margin-left: 8em; }
  118. .md-toc-h6 .md-toc-inner { margin-left: 10em; }
  119. @media screen and (max-width: 48em) {
  120. .md-toc-h3 .md-toc-inner { margin-left: 3.5em; }
  121. .md-toc-h4 .md-toc-inner { margin-left: 5em; }
  122. .md-toc-h5 .md-toc-inner { margin-left: 6.5em; }
  123. .md-toc-h6 .md-toc-inner { margin-left: 8em; }
  124. }
  125. a.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit; }
  126. .footnote-line a:not(.reversefootnote) { color: inherit; }
  127. .md-attr { display: none; }
  128. .md-fn-count::after { content: "."; }
  129. code, pre, samp, tt { font-family: var(--monospace); }
  130. kbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; }
  131. .md-comment { color: rgb(162, 127, 3); opacity: 0.8; font-family: var(--monospace); }
  132. code { text-align: left; vertical-align: initial; }
  133. a.md-print-anchor { white-space: pre !important; border-width: initial !important; border-style: none !important; border-color: initial !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; background: 0px 0px !important; text-decoration: initial !important; text-shadow: initial !important; }
  134. .md-inline-math .MathJax_SVG .noError { display: none !important; }
  135. .html-for-mac .inline-math-svg .MathJax_SVG { vertical-align: 0.2px; }
  136. .md-math-block .MathJax_SVG_Display { text-align: center; margin: 0px; position: relative; text-indent: 0px; max-width: none; max-height: none; min-height: 0px; min-width: 100%; width: auto; overflow-y: hidden; display: block !important; }
  137. .MathJax_SVG_Display, .md-inline-math .MathJax_SVG_Display { width: auto; margin: inherit; display: inline-block !important; }
  138. .MathJax_SVG .MJX-monospace { font-family: var(--monospace); }
  139. .MathJax_SVG .MJX-sans-serif { font-family: sans-serif; }
  140. .MathJax_SVG { display: inline; font-style: normal; font-weight: 400; line-height: normal; zoom: 90%; text-indent: 0px; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; }
  141. .MathJax_SVG * { transition: none 0s ease 0s; }
  142. .MathJax_SVG_Display svg { vertical-align: middle !important; margin-bottom: 0px !important; margin-top: 0px !important; }
  143. .os-windows.monocolor-emoji .md-emoji { font-family: "Segoe UI Symbol", sans-serif; }
  144. .md-diagram-panel > svg { max-width: 100%; }
  145. [lang="flow"] svg, [lang="mermaid"] svg { max-width: 100%; height: auto; }
  146. [lang="mermaid"] .node text { font-size: 1rem; }
  147. table tr th { border-bottom: 0px; }
  148. video { max-width: 100%; display: block; margin: 0px auto; }
  149. iframe { max-width: 100%; width: 100%; border: none; }
  150. .highlight td, .highlight tr { border: 0px; }
  151. svg[id^="mermaidChart"] { line-height: 1em; }
  152. mark { background: rgb(255, 255, 0); color: rgb(0, 0, 0); }
  153. .md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong { color: inherit; }
  154. mark .md-meta { color: rgb(0, 0, 0); opacity: 0.3 !important; }
  155. .CodeMirror { height: auto; }
  156. .CodeMirror.cm-s-inner { background: inherit; }
  157. .CodeMirror-scroll { overflow: auto hidden; z-index: 3; }
  158. .CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler { background-color: rgb(255, 255, 255); }
  159. .CodeMirror-gutters { border-right: 1px solid rgb(221, 221, 221); background: inherit; white-space: nowrap; }
  160. .CodeMirror-linenumber { padding: 0px 3px 0px 5px; text-align: right; color: rgb(153, 153, 153); }
  161. .cm-s-inner .cm-keyword { color: rgb(119, 0, 136); }
  162. .cm-s-inner .cm-atom, .cm-s-inner.cm-atom { color: rgb(34, 17, 153); }
  163. .cm-s-inner .cm-number { color: rgb(17, 102, 68); }
  164. .cm-s-inner .cm-def { color: rgb(0, 0, 255); }
  165. .cm-s-inner .cm-variable { color: rgb(0, 0, 0); }
  166. .cm-s-inner .cm-variable-2 { color: rgb(0, 85, 170); }
  167. .cm-s-inner .cm-variable-3 { color: rgb(0, 136, 85); }
  168. .cm-s-inner .cm-string { color: rgb(170, 17, 17); }
  169. .cm-s-inner .cm-property { color: rgb(0, 0, 0); }
  170. .cm-s-inner .cm-operator { color: rgb(152, 26, 26); }
  171. .cm-s-inner .cm-comment, .cm-s-inner.cm-comment { color: rgb(170, 85, 0); }
  172. .cm-s-inner .cm-string-2 { color: rgb(255, 85, 0); }
  173. .cm-s-inner .cm-meta { color: rgb(85, 85, 85); }
  174. .cm-s-inner .cm-qualifier { color: rgb(85, 85, 85); }
  175. .cm-s-inner .cm-builtin { color: rgb(51, 0, 170); }
  176. .cm-s-inner .cm-bracket { color: rgb(153, 153, 119); }
  177. .cm-s-inner .cm-tag { color: rgb(17, 119, 0); }
  178. .cm-s-inner .cm-attribute { color: rgb(0, 0, 204); }
  179. .cm-s-inner .cm-header, .cm-s-inner.cm-header { color: rgb(0, 0, 255); }
  180. .cm-s-inner .cm-quote, .cm-s-inner.cm-quote { color: rgb(0, 153, 0); }
  181. .cm-s-inner .cm-hr, .cm-s-inner.cm-hr { color: rgb(153, 153, 153); }
  182. .cm-s-inner .cm-link, .cm-s-inner.cm-link { color: rgb(0, 0, 204); }
  183. .cm-negative { color: rgb(221, 68, 68); }
  184. .cm-positive { color: rgb(34, 153, 34); }
  185. .cm-header, .cm-strong { font-weight: 700; }
  186. .cm-del { text-decoration: line-through; }
  187. .cm-em { font-style: italic; }
  188. .cm-link { text-decoration: underline; }
  189. .cm-error { color: red; }
  190. .cm-invalidchar { color: red; }
  191. .cm-constant { color: rgb(38, 139, 210); }
  192. .cm-defined { color: rgb(181, 137, 0); }
  193. div.CodeMirror span.CodeMirror-matchingbracket { color: rgb(0, 255, 0); }
  194. div.CodeMirror span.CodeMirror-nonmatchingbracket { color: rgb(255, 34, 34); }
  195. .cm-s-inner .CodeMirror-activeline-background { background: inherit; }
  196. .CodeMirror { position: relative; overflow: hidden; }
  197. .CodeMirror-scroll { height: 100%; outline: 0px; position: relative; box-sizing: content-box; background: inherit; }
  198. .CodeMirror-sizer { position: relative; }
  199. .CodeMirror-gutter-filler, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-vscrollbar { position: absolute; z-index: 6; display: none; }
  200. .CodeMirror-vscrollbar { right: 0px; top: 0px; overflow: hidden; }
  201. .CodeMirror-hscrollbar { bottom: 0px; left: 0px; overflow: hidden; }
  202. .CodeMirror-scrollbar-filler { right: 0px; bottom: 0px; }
  203. .CodeMirror-gutter-filler { left: 0px; bottom: 0px; }
  204. .CodeMirror-gutters { position: absolute; left: 0px; top: 0px; padding-bottom: 30px; z-index: 3; }
  205. .CodeMirror-gutter { white-space: normal; height: 100%; box-sizing: content-box; padding-bottom: 30px; margin-bottom: -32px; display: inline-block; }
  206. .CodeMirror-gutter-wrapper { position: absolute; z-index: 4; background: 0px 0px !important; border: none !important; }
  207. .CodeMirror-gutter-background { position: absolute; top: 0px; bottom: 0px; z-index: 4; }
  208. .CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; }
  209. .CodeMirror-lines { cursor: text; }
  210. .CodeMirror pre { border-radius: 0px; border-width: 0px; background: 0px 0px; font-family: inherit; font-size: inherit; margin: 0px; white-space: pre; overflow-wrap: normal; color: inherit; z-index: 2; position: relative; overflow: visible; }
  211. .CodeMirror-wrap pre { overflow-wrap: break-word; white-space: pre-wrap; word-break: normal; }
  212. .CodeMirror-code pre { border-right: 30px solid transparent; width: fit-content; }
  213. .CodeMirror-wrap .CodeMirror-code pre { border-right: none; width: auto; }
  214. .CodeMirror-linebackground { position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px; z-index: 0; }
  215. .CodeMirror-linewidget { position: relative; z-index: 2; overflow: auto; }
  216. .CodeMirror-wrap .CodeMirror-scroll { overflow-x: hidden; }
  217. .CodeMirror-measure { position: absolute; width: 100%; height: 0px; overflow: hidden; visibility: hidden; }
  218. .CodeMirror-measure pre { position: static; }
  219. .CodeMirror div.CodeMirror-cursor { position: absolute; visibility: hidden; border-right: none; width: 0px; }
  220. .CodeMirror div.CodeMirror-cursor { visibility: hidden; }
  221. .CodeMirror-focused div.CodeMirror-cursor { visibility: inherit; }
  222. .cm-searching { background: rgba(255, 255, 0, 0.4); }
  223. @media print {
  224. .CodeMirror div.CodeMirror-cursor { visibility: hidden; }
  225. }
  226. :root {
  227. --side-bar-bg-color: #fafafa;
  228. --control-text-color: #777;
  229. }
  230. @include-when-export url(https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext);
  231. html {
  232. font-size: 16px;
  233. }
  234. body {
  235. font-family: "Open Sans","Clear Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
  236. color: rgb(51, 51, 51);
  237. line-height: 1.6;
  238. }
  239. #write {
  240. max-width: 860px;
  241. margin: 0 auto;
  242. padding: 30px;
  243. padding-bottom: 100px;
  244. }
  245. @media only screen and (min-width: 1400px) {
  246. #write {
  247. max-width: 1024px;
  248. }
  249. }
  250. @media only screen and (min-width: 1800px) {
  251. #write {
  252. max-width: 1200px;
  253. }
  254. }
  255. #write > ul:first-child,
  256. #write > ol:first-child{
  257. margin-top: 30px;
  258. }
  259. a {
  260. color: #4183C4;
  261. }
  262. h1,
  263. h2,
  264. h3,
  265. h4,
  266. h5,
  267. h6 {
  268. position: relative;
  269. margin-top: 1rem;
  270. margin-bottom: 1rem;
  271. font-weight: bold;
  272. line-height: 1.4;
  273. cursor: text;
  274. }
  275. h1:hover a.anchor,
  276. h2:hover a.anchor,
  277. h3:hover a.anchor,
  278. h4:hover a.anchor,
  279. h5:hover a.anchor,
  280. h6:hover a.anchor {
  281. text-decoration: none;
  282. }
  283. h1 tt,
  284. h1 code {
  285. font-size: inherit;
  286. }
  287. h2 tt,
  288. h2 code {
  289. font-size: inherit;
  290. }
  291. h3 tt,
  292. h3 code {
  293. font-size: inherit;
  294. }
  295. h4 tt,
  296. h4 code {
  297. font-size: inherit;
  298. }
  299. h5 tt,
  300. h5 code {
  301. font-size: inherit;
  302. }
  303. h6 tt,
  304. h6 code {
  305. font-size: inherit;
  306. }
  307. h1 {
  308. padding-bottom: .3em;
  309. font-size: 2.25em;
  310. line-height: 1.2;
  311. border-bottom: 1px solid #eee;
  312. }
  313. h2 {
  314. padding-bottom: .3em;
  315. font-size: 1.75em;
  316. line-height: 1.225;
  317. border-bottom: 1px solid #eee;
  318. }
  319. h3 {
  320. font-size: 1.5em;
  321. line-height: 1.43;
  322. }
  323. h4 {
  324. font-size: 1.25em;
  325. }
  326. h5 {
  327. font-size: 1em;
  328. }
  329. h6 {
  330. font-size: 1em;
  331. color: #777;
  332. }
  333. p,
  334. blockquote,
  335. ul,
  336. ol,
  337. dl,
  338. table{
  339. margin: 0.8em 0;
  340. }
  341. li>ol,
  342. li>ul {
  343. margin: 0 0;
  344. }
  345. hr {
  346. height: 2px;
  347. padding: 0;
  348. margin: 16px 0;
  349. background-color: #e7e7e7;
  350. border: 0 none;
  351. overflow: hidden;
  352. box-sizing: content-box;
  353. }
  354. li p.first {
  355. display: inline-block;
  356. }
  357. ul,
  358. ol {
  359. padding-left: 30px;
  360. }
  361. ul:first-child,
  362. ol:first-child {
  363. margin-top: 0;
  364. }
  365. ul:last-child,
  366. ol:last-child {
  367. margin-bottom: 0;
  368. }
  369. blockquote {
  370. border-left: 4px solid #dfe2e5;
  371. padding: 0 15px;
  372. color: #777777;
  373. }
  374. blockquote blockquote {
  375. padding-right: 0;
  376. }
  377. table {
  378. padding: 0;
  379. word-break: initial;
  380. }
  381. table tr {
  382. border-top: 1px solid #dfe2e5;
  383. margin: 0;
  384. padding: 0;
  385. }
  386. table tr:nth-child(2n),
  387. thead {
  388. background-color: #f8f8f8;
  389. }
  390. table tr th {
  391. font-weight: bold;
  392. border: 1px solid #dfe2e5;
  393. border-bottom: 0;
  394. margin: 0;
  395. padding: 6px 13px;
  396. }
  397. table tr td {
  398. border: 1px solid #dfe2e5;
  399. margin: 0;
  400. padding: 6px 13px;
  401. }
  402. table tr th:first-child,
  403. table tr td:first-child {
  404. margin-top: 0;
  405. }
  406. table tr th:last-child,
  407. table tr td:last-child {
  408. margin-bottom: 0;
  409. }
  410. .CodeMirror-lines {
  411. padding-left: 4px;
  412. }
  413. .code-tooltip {
  414. box-shadow: 0 1px 1px 0 rgba(0,28,36,.3);
  415. border-top: 1px solid #eef2f2;
  416. }
  417. .md-fences,
  418. code,
  419. tt {
  420. border: 1px solid #e7eaed;
  421. background-color: #f8f8f8;
  422. border-radius: 3px;
  423. padding: 0;
  424. padding: 2px 4px 0px 4px;
  425. font-size: 0.9em;
  426. }
  427. code {
  428. background-color: #f3f4f4;
  429. padding: 0 2px 0 2px;
  430. }
  431. .md-fences {
  432. margin-bottom: 15px;
  433. margin-top: 15px;
  434. padding-top: 8px;
  435. padding-bottom: 6px;
  436. }
  437. .md-task-list-item > input {
  438. margin-left: -1.3em;
  439. }
  440. @media print {
  441. html {
  442. font-size: 13px;
  443. }
  444. table,
  445. pre {
  446. page-break-inside: avoid;
  447. }
  448. pre {
  449. word-wrap: break-word;
  450. }
  451. }
  452. .md-fences {
  453. background-color: #f8f8f8;
  454. }
  455. #write pre.md-meta-block {
  456. padding: 1rem;
  457. font-size: 85%;
  458. line-height: 1.45;
  459. background-color: #f7f7f7;
  460. border: 0;
  461. border-radius: 3px;
  462. color: #777777;
  463. margin-top: 0 !important;
  464. }
  465. .mathjax-block>.code-tooltip {
  466. bottom: .375rem;
  467. }
  468. .md-mathjax-midline {
  469. background: #fafafa;
  470. }
  471. #write>h3.md-focus:before{
  472. left: -1.5625rem;
  473. top: .375rem;
  474. }
  475. #write>h4.md-focus:before{
  476. left: -1.5625rem;
  477. top: .285714286rem;
  478. }
  479. #write>h5.md-focus:before{
  480. left: -1.5625rem;
  481. top: .285714286rem;
  482. }
  483. #write>h6.md-focus:before{
  484. left: -1.5625rem;
  485. top: .285714286rem;
  486. }
  487. .md-image>.md-meta {
  488. /*border: 1px solid #ddd;*/
  489. border-radius: 3px;
  490. padding: 2px 0px 0px 4px;
  491. font-size: 0.9em;
  492. color: inherit;
  493. }
  494. .md-tag {
  495. color: #a7a7a7;
  496. opacity: 1;
  497. }
  498. .md-toc {
  499. margin-top:20px;
  500. padding-bottom:20px;
  501. }
  502. .sidebar-tabs {
  503. border-bottom: none;
  504. }
  505. #typora-quick-open {
  506. border: 1px solid #ddd;
  507. background-color: #f8f8f8;
  508. }
  509. #typora-quick-open-item {
  510. background-color: #FAFAFA;
  511. border-color: #FEFEFE #e5e5e5 #e5e5e5 #eee;
  512. border-style: solid;
  513. border-width: 1px;
  514. }
  515. /** focus mode */
  516. .on-focus-mode blockquote {
  517. border-left-color: rgba(85, 85, 85, 0.12);
  518. }
  519. header, .context-menu, .megamenu-content, footer{
  520. font-family: "Segoe UI", "Arial", sans-serif;
  521. }
  522. .file-node-content:hover .file-node-icon,
  523. .file-node-content:hover .file-node-open-state{
  524. visibility: visible;
  525. }
  526. .mac-seamless-mode #typora-sidebar {
  527. background-color: #fafafa;
  528. background-color: var(--side-bar-bg-color);
  529. }
  530. .md-lang {
  531. color: #b4654d;
  532. }
  533. .html-for-mac .context-menu {
  534. --item-hover-bg-color: #E6F0FE;
  535. }
  536. #md-notification .btn {
  537. border: 0;
  538. }
  539. .dropdown-menu .divider {
  540. border-color: #e5e5e5;
  541. }
  542. .ty-preferences .window-content {
  543. background-color: #fafafa;
  544. }
  545. .ty-preferences .nav-group-item.active {
  546. color: white;
  547. background: #999;
  548. }
  549. </style>
  550. </head>
  551. <body class='typora-export' >
  552. <div id='write' class = 'is-node'><h1><a name="linux-kurs---erste-schritte" class="md-header-anchor"></a><span>Linux-Kurs - Erste Schritte</span></h1><p><a href='https://linuxkurs.ch' target='_blank' class='url'>https://linuxkurs.ch</a></p><p><span>Herzlichen Glückwunsch. Du hast den ersten Teil des Kurses abgeschlossen und bereits ein lauffähiges Linux-System auf deinem Computer installiert. In diesem Kursteil geht es darum dein neues Betriebssystem besser kennenzulernen. </span></p><h2><a name="der-erste-start" class="md-header-anchor"></a><span>Der erste Start</span></h2><p><span>Wenn Du dein System zum ersten Mal startest, sieht es wie folgt aus:</span></p><p><img src="./slackware_first_boot.png" referrerpolicy="no-referrer"></p><p><span>Die Zeichen, die Du im Bereich </span><em><span>Generating public/private key pair</span></em><span> siehst, wurden ausgegeben, da beim allerersten Systemstart ein sogenanntes SSH-Schlüsselpaar erzeugt wurde. Bei SSH handelt es sich um ein Protokoll mit dem Du von einem entfernten Rechner verschlüsselt auf deinen Linux Computer zugreifen kannst.</span></p><p><span>Du siehst ausserdem, dass der Dienst </span><em><span>gpm</span></em><span> gestartet worden ist. Dieser sollte dir bereits von der Installation her vertraut sein. Es ist der Dienst, der für die Bereitstellung der Maus in der Konsole (</span><em><span>tty</span></em><span>) verantwortlich ist.</span></p><p><span>Melde dich nun bitte am sogenannten </span><em><span>Login-Prompt</span></em><span> an. Das ist die Zeile, die mit </span><em><span>darkstar login:</span></em><span> beginnt. darkstar ist der </span><em><span>Hostname</span></em><span> des Computers.</span></p><p><span>Gebe als Benutzername bitte den Benutzer </span><strong><span>root</span></strong><span>, gefolgt von Enter ein. Das Passwort siehst Du während der Eingabe nicht, also wundere dich bitte nicht. Das Passwort hast Du während der Installation für den Benutzer root vergeben.</span></p><p><span>Nachdem Du dich angemeldet hast, bist Du in der Shell angekommen, einem wichtigen Herzstück des Linux-Systems. Bei Slackware ist die Standardshell </span><em><span>BASH</span></em><span>, es gibt allerdings auch viele Alternativen wie </span><em><span>zsh</span></em><span> oder </span><em><span>csh</span></em><span>. In diesem Kurs beschränken wir aus auf die </span><em><span>BASH</span></em><span> (Bourne-again shell).</span></p><p><img src="./slackware_bash_motd.png" referrerpolicy="no-referrer"></p><p><span>Folgende Informationen werden ausgegeben:</span></p><ul><li><span>Die Linux-Kernelversion</span></li><li><span>Last login (wann sich zuletzt jemand an dem System angemeldet hat)</span></li><li><span>Eine Information ob neue Nachrichten vorhanden sind</span></li><li><span>Die </span><em><span>Message of the Day</span></em><span> (MOTD)</span></li><li><span>Der Prompt </span></li></ul><p><strong><span>Hinweis:</span></strong><span> Der rechteckige Klotz, den Du auf dem Bildschirmfoto siehst, ist übrigens der Mauscursor, den das Programm </span><em><span>gpm</span></em><span> bereitstellt.</span></p><h3><a name="verzeichnisse-und-kommandos" class="md-header-anchor"></a><span>Verzeichnisse und Kommandos</span></h3><p><span>Der BASH-Prompt ist wie folgt aufgebaut: </span><em><span>Benutzername@Hostname:$ORT</span></em><span>, wobei </span><em><span>$ORT</span></em><span> das aktuelle Arbeitsverzeichnis ist. In diesem Fall ist es </span><em><span>~</span></em><span>, was eine Abkürzung für das Homeverzeichnis darstellt. </span></p><div style="page-break-after: always;"></div> <p><span>Mit dem Befehl:</span></p><p><code>pwd</code></p><p><span>kannst Du dir jederzeit den genauen Pfad ausgeben lassen, in dem Du dich befindest. </span><strong><span>pwd</span></strong><span> steht bezeichnenderweise für </span><strong><span>p</span></strong><span>rint </span><strong><span>w</span></strong><span>orking </span><strong><span>d</span></strong><span>irectory.</span></p><p><span>Wenn Du </span><strong><span>pwd</span></strong><span> im Homeverzeichnis des Benutzers root eingibst, sollte die Ausgabe wie folgt aussehen:</span></p><p><strong><span>/root</span></strong></p><h4><a name="ls" class="md-header-anchor"></a><span>ls</span></h4><p><span>Mit dem Befehl:</span></p><p><code>ls</code></p><p><span>kannst Du dir den Verzeichnisinhalt ausgeben lassen. Da das Heimatverzeichnis des Benutzers </span><strong><span>root</span></strong><span> bisher leer ist, wird keine Ausgabe erscheinen. Doch aufgepasst: es gibt unter Linux sogenannte versteckte Dateien. Diese werden mit einem Punkt vorangestellt. Ein einfaches </span><strong><span>ls</span></strong><span> zeigt die versteckten Dateien nicht an.</span></p><p><span>Bevor es weitergeht melde dich bitte mit Hilfe des </span><code>logout</code><span> Kommandos von der aktuellen </span><em><span>tty</span></em><span> ab und am Login-Prompt erneut als Benutzer </span><strong><span>root</span></strong><span> mit dem von dir vergebenen Passwort an.</span></p><p><span>Versuche es nun noch einmal, aber diesmal mit dem Befehl:</span></p><p><code>ls -al</code></p><p><span>Die Ausgabe sollte dabei wie folgt aussehen:</span></p><p><img src="./slackware_ls_root.png" referrerpolicy="no-referrer"></p><p><span>Doch woher kommen diese Dateien und was bedeuten sie? Und was hat es mit den Zahlen und Zeichen auf sich?</span></p><div style="page-break-after: always;"></div> <h4><a name="dateiberechtigungen" class="md-header-anchor"></a><span>Dateiberechtigungen</span></h4><p><span>Schauen wir uns einmal eine der Dateien an:</span></p><blockquote><p><strong><code>-rw-------</code></strong><code>1 root root 100 May 4 06:41 .bash_history</code></p></blockquote><p><span>Der erste Bereich </span><strong><code>-rw-------</code></strong><span> gibt die Rechte der Datei an. Diese werden von Linux in Oktalform verwaltet (4-2-1). Das hört sich erst einmal kompliziert an, ist aber ganz einfach, wenn Du es verstanden hast. Das allererste </span><strong><code>-</code></strong><span> gibt den Typ an. In diesem Falle ist er nicht speziell definiert worden. Würde es sich um ein Verzeichnis handeln, würde dort </span><em><span>d</span></em><span> für Directory stehen.</span></p><p><span>Danach folgt ein </span><strong><code>rw-</code></strong><span>. Es gibt drei Blöcke, mit jeweils drei Werten. Die Blöcke stehen für </span><strong><span>Owner</span></strong><span> / </span><strong><span>Group</span></strong><span> und </span><strong><span>Others</span></strong><span>, also dem Dateieigentümer, der Gruppe und allen Anderen. Die drei Werte innerhalb der Blöcke stehen für:</span></p><ul><li><span>r = read (lesen) - Oktal: 4</span></li><li><span>w = write (schreiben) - Oktal: 2</span></li><li><span>x = execute (ausführen) - Oktal: 1</span></li></ul><p><span>Für die Datei </span><em><span>.bash_history</span></em><span> sind nur die Werte </span><em><code>r</code></em><span> und </span><em><code>w</code></em><span> für den </span><em><span>Owner</span></em><span> definiert worden: </span><strong><code>-rw-------</code></strong><span> . Der Eigentümer der Datei kann diese also lesen und schreiben:</span></p><p><strong><span>Owner</span></strong><span>: </span><strong><code>rw-</code></strong><span> = 4+2+0 = 6 / </span><strong><span>Group</span></strong><span>: </span><strong><code>---</code></strong><span>: 0+0+0 = 0 / </span><strong><span>Others</span></strong><span>: </span><strong><code>---</code></strong><span>: 0+0+0 = 0 oder zusammengesetzt: </span><strong><span>600</span></strong><span> </span></p><p><span>Falls der Eigentümer die Datei auch ausführen können soll, sähe die Definition wie folgt aus:</span></p><blockquote><p><strong><code>-rwx------</code></strong></p></blockquote><p><span>Oktal wäre dies </span><strong><span>Owner</span></strong><span>: </span><strong><code>rwx</code></strong><span> = 4+2+1 = 7 / </span><strong><span>Group</span></strong><span>: </span><strong><code>---</code></strong><span>: 0+0+0 = 0 / </span><strong><span>Others</span></strong><span>: </span><strong><code>---</code></strong><span>: 0+0+0 = 0 oder zusammengesetzt: </span><strong><span>700</span></strong><span>.</span></p><p><span>Kommen wir nochmals auf das Beispiel zurück:</span></p><blockquote><p><code>-rw------- 1</code><span> </span><strong><code>root root</code></strong><code>100 May 4 06:41 .bash_history</code></p></blockquote><p><span>Der Eigentümer und die Gruppe sind beide </span><strong><span>root root</span></strong><span>. Falls auch die Gruppe und alle Anderen lesend auf die Datei zugreifen können soll, würden die Rechte wie folgt dargestellt: </span><strong><code>-rw-r--r--</code></strong></p><p><span>Oktal wäre dies </span><strong><span>Owner</span></strong><span>: </span><strong><code>rw-</code></strong><span> = 4+2+0 = 6 / </span><strong><span>Group</span></strong><span>: </span><strong><code>r--</code></strong><span>: 4+0+0 = 4 / </span><strong><span>Others</span></strong><span>: </span><strong><code>r--</code></strong><span>: 4+0+0 = 4 oder zusammengesetzt: </span><strong><span>644</span></strong><span>.</span></p><p><span>Diese Rechte könntest Du testweise mit folgendem Befehl ändern:</span></p><p><code>chmod 644 .bash_history</code></p><p><span>Wenn Du nun nochmals ein </span><strong><span>ls -al</span></strong><span> eingibst, könnte die Ausgabe jetzt wie folgt aussehen:</span></p><blockquote><p><strong><code>-rw-r--r--</code></strong><code>1 root root 264 May 4 06:48 .bash_history</code></p></blockquote><p><span>Ändere die Rechte der Datei daraufhin bitte wieder zurück auf den Ursprungswert:</span></p><p><code>chmod 600 .bash_history</code></p><p><span>Du hast wahrscheinlich beobachtet, dass sich der Zahlenwert hinter der </span><em><span>Owner</span></em><span> und </span><em><span>Group</span></em><span> Definition erhöht hat, ebenso die Änderungszeit. Das hat damit zu tun, dass die History Datei in der Zwischenzeit angewachsen ist.</span></p><blockquote><p><code>-rw-r--r-- 1 root root</code><strong><code>264</code></strong><code>May 4</code><strong><code>06:48</code></strong><code>.bash_history</code></p></blockquote><div style="page-break-after: always;"></div><h4><a name="history" class="md-header-anchor"></a><span>History</span></h4><p><span>Die versteckte Datei </span><strong><span>.bash_history</span></strong><span> enthält eine Historie der vom Benutzer eingegebenen Befehle. Nach dem ersten Login musstest Du dich einmal abmelden und wieder anmelden, damit diese erzeugt worden ist. Ausgeben lassen kannst Du sie dir einfach mit dem Befehl:</span></p><p><code>history</code></p><p><span>Dort sollte auch deine Eingabe von </span><strong><span>pwd</span></strong><span> mit einer Nummer davor aufgeführt werden. Möchtest Du dieses Kommando erneut ausführen, kannst Du einfach </span><strong><span>!$NUMMER</span></strong><span> eingeben, also das Ausrufezeichen, direkt gefolgt von der angegebenen Nummer, zum Beispiel </span><strong><span>!3</span></strong><span>, wobei Du die 3 natürlich durch die entsprechende Nummer ersetzen musst.</span></p><p><span>Du kannst in der BASH auch ganz einfach mit den Pfeil-hoch, Pfeil-runter Tasten die History durchblättern. Enter löst dann jeweils den gefundenen Befehl aus.</span></p><p><span>Mit Hilfe von </span><strong><span>Ctrl+R</span></strong><span> kannst Du die History durchsuchen. Gebe einfach </span><strong><span>Ctrl+R</span></strong><span> gefolgt von dem Suchbegriff ein, zum Beispiel </span><em><span>pwd</span></em><span>. Wenn Du </span><strong><span>Ctrl+R</span></strong><span> erneut eingibst wird der nächste Treffer angezeigt (falls es einen weiteren Treffer gibt). Enter löst auch hier den Befehl aus.</span></p><p><span>Der Befehl </span><strong><span>history -c</span></strong><span> löscht den gesamten Inhalt der History.</span></p><h4><a name="xwmconfig" class="md-header-anchor"></a><span>xwmconfig</span></h4><p><span>Die beiden weiteren versteckten Dateien, die Du auf dem Bildschirmfoto gesehen hast (</span><em><span>.xinitrc</span></em><span> und </span><em><span>.xsession</span></em><span>), wurden während der Installation vom </span><strong><span>setup</span></strong><span> Kommando erstellt, welches wiederum den Befehl </span><strong><span>xwmconfig</span></strong><span> ausgeführt hat. Rufe </span><strong><span>xwmconfig</span></strong><span> erneut auf. Die Anzeige sollte dir von der Installation vertraut sein:</span></p><p><img src="./slackware_xwmconfig.png" referrerpolicy="no-referrer"></p><p><span>Belasse die Einstellung bitte auf xinitrc.xfce.</span></p><div style="page-break-after: always;"></div> <h4><a name="systemdienste" class="md-header-anchor"></a><span>Systemdienste</span></h4><p><span>Im Bildschirmfoto, das die </span><em><span>ls -al</span></em><span> Ausgabe anzeigt, hast Du vielleicht bemerkt, dass ein weiterer Befehl ausgeführt worden ist:</span></p><p><code>/etc/rc.d/rc.gpm stop</code></p><p><strong><span>/etc/rc.d/rc.gpm</span></strong><span> ist der Befehl und </span><strong><span>stop</span></strong><span> der Parameter.</span></p><p><span>Damit wurde der Dienst gpm, der für die Maus in der Konsole zuständig ist, beendet. Dieser Befehl wurde nur für den Kurs ausgeführt, damit auf den folgenden Anzeigen der Mauscursor nicht mehr erscheint. Du kannst es dennoch gerne einmal testen. Der Mauszeiger sollte, nachdem Du den Befehl ausgeführt hast, verschwinden. Beim nächsten Systemstart würde er allerdings wieder angezeigt. Mit Hilfe des folgendem Befehls kannst Du den Dienst wieder starten:</span></p><p><code>/etc/rc.d/rc.gpm start</code></p><p><span>Falls Du nicht möchtest, dass ein Dienst beim Systemstart gestartet wird, kannst Du unter Slackware einfach die Startdatei als nicht-ausführbar markieren.</span></p><p><span>Schaue dir zuvor einmal die Datei mit dem </span><strong><span>ls -al</span></strong><span> Kommando an.</span></p><p><code>ls -al /etc/rc.d/rc.gpm</code></p><p><img src="./slackware_rc_gpm.png" referrerpolicy="no-referrer"></p><p><span>Du siehst, dass die Datei für jeden ausführbar ist, beschreiben darf allerdings nur der </span><em><span>Owner</span></em><span>, in diesem Falle root.:</span></p><blockquote><p><strong><code>-rwxr-xr-x</code></strong></p></blockquote><p><span>Oktal wäre dies </span><strong><span>Owner</span></strong><span>: </span><strong><code>rwx</code></strong><span> = 4+2+1 = 7 / </span><strong><span>Group</span></strong><span>: </span><strong><code>r-x</code></strong><span>: 4+0+1 = 5 / </span><strong><span>Others</span></strong><span>: </span><strong><code>r-x</code></strong><span>: 4+0+1 = 5 oder zusammengesetzt: </span><strong><span>755</span></strong><span>.</span></p><p><span>Der </span><strong><span>chmod</span></strong><span> Befehl bietet einen einfachen Parameter, um eine Datei nicht mehr als ausführbar zu markieren:</span></p><p><code>chmod -x /etc/rc.d/rc.gpm</code></p><p><span>Dies entfernt alle </span><em><span>executable</span></em><span> Rechte von der Datei. Gebe erneut </span><strong><span>ls -al</span></strong><span> ein um die Änderungen zu prüfen:</span></p><p><code>ls -al /etc/rc.d/rc.gpm</code></p><blockquote><p><strong><code>-rw-r--r--</code></strong></p></blockquote><p><span>Somit wird der Dienst beim Systemstart nicht mehr gestartet. Möchtest Du, dass er wieder gestartet werden soll, führe den </span><strong><span>chmod</span></strong><span> Befehl einfach mit </span><strong><span>+x</span></strong><span> aus:</span></p><p><code>chmod +x /etc/rc.d/rc.gpm</code></p><div style="page-break-after: always;"></div> <h4><a name="zeitzone-und-uhrzeit" class="md-header-anchor"></a><span>Zeitzone und Uhrzeit</span></h4><p><span>Bevor wir mit den Grundsätzen des Linux-Dateisystems fortfahren, stelle bitte zunächst sicher, dass die Zeitzone und Uhrzeit des Systems richtig eingestellt sind.</span></p><p><span>Wenn Du dich erinnerst, so hast Du während der Installation die Zeitzone bereits angegeben. Wir werden nun überprüfen, ob diese korrekt gesetzt worden ist. Die Zeitzonendefinitionen liegen im Verzeichnis </span><em><span>/usr/share/zoneinfo/</span></em><span> und dort in nach Kontinenten benannten Unterverzeichnissen. Schaue dich dort ein wenig um. Dazu kannst Du zunächst mit dem Befehl </span><strong><span>cd</span></strong><span> in das Verzeichnis wechseln:</span></p><p><code>cd /usr/share/zoneinfo/</code></p><p><span>Gebe dort </span><code>ls</code><span> ein</span></p><p><img src="./slackware_timezones.png" referrerpolicy="no-referrer"></p><p><span>In unserem Beispiel gehen wir von der Zeitzone </span><em><span>Europe/Zurich</span></em><span> aus.</span></p><p><span>Sollte die Zeitzone in deinem Falle abweichen, passe die folgenden Befehle bitte an deine Gegebenheiten an.</span></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">cd Europe</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">ls</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 46px;"></div><div class="CodeMirror-gutters" style="display: none; height: 46px;"></div></div></div></pre><p><img src="./slackware_timezones_europe.png" referrerpolicy="no-referrer"></p><p><span>Dort siehst Du die Zeitzonendatei </span><em><span>Zurich</span></em><span>. Die aktive Zeitzone wird unter </span><em><span>/etc/localtime</span></em><span> gesetzt. Als nächstes vergleichen wir die beiden Dateien mit dem Befehl </span><strong><span>diff</span></strong></p><p><code>diff /usr/share/zoneinfo/Europe/Zurich /etc/localtime</code></p><p><span>Es sollte keine Meldung erscheinen. In diesem Falle stimmen die Dateien überein und die aktive Zeitzone ist korrekt auf </span><em><span>Europe/Zurich</span></em><span> eingestellt worden. Du kannst es testweise mit einer anderen Datei versuchen, zum Beispiel:</span></p><p><code>diff Oslo /etc/localtime</code></p><p><span>Die Ausgabe sollte wie folgt aussehen:</span></p><blockquote><p><span>Binary files Oslo and /etc/localtime differ</span></p></blockquote><p><span>Du hast wahrscheinlich bemerkt, dass wir beim zweiten Aufruf nicht den kompletten Pfad zur </span><em><span>Oslo</span></em><span> Datei angegeben haben. Das war in diesem Falle möglich, da wir uns bereits im richtigen Verzeichnis befinden (wir sind zuvor mit </span><em><span>cd /usr/share/zoneinfo/</span></em><span> und </span><em><span>cd Europe</span></em><span> dort hinein gewechselt. Du kannst es mit </span><strong><span>pwd</span></strong><span> überprüfen).</span></p><p><strong><span>Tipp</span></strong><span>: Sollte die Zeitzone nicht stimmen oder Du möchtest eine andere Zeitzone einstellen, kannst Du einfach das entsprechende Zonenfile nach </span><em><span>/etc/localtime</span></em><span> kopieren: </span><code>cp /usr/share/zoneinfo/Europe/Zurich /etc/localtime</code><span>. Da die Zeitzone richtig eingestellt sein sollte, musst Du diesen Schritt nicht durchführen.</span></p><p><span>Du hast in diesem Abschnitt bereits viele wichtige Linux-Befehle kennengelernt, wie zum Beispiel </span><strong><span>cd</span></strong><span> , um Verzeichnisse zu wechseln oder das Powerkommando </span><strong><span>diff</span></strong><span> , um Dateiinhalte zu vergleichen.</span></p><p><span>Lass uns als nächstes die Uhrzeit des Systems anschauen.</span></p><p><span>Gebe dazu bitte den Befehl </span><strong><span>date</span></strong><span> ein.</span></p><p><img src="./slackware_date_wrong.png" referrerpolicy="no-referrer"></p><p><span>In diesem Beispiel stimmt die Uhrzeit nicht und wir möchten sie korrigieren. Dies erfolgt auch mit Hilfe des </span><strong><span>date</span></strong><span> Kommandos. Die einzustellende Zeit kann in unterschiedlichen Formaten angegeben werden. Wir haben uns für die Eingabe im Format </span><strong><span>$JAHR-$MONAT-$TAG $STUNDE:$MINUTE</span></strong><span> entschieden:</span></p><p><code>date --set &quot;2019-5-15 09:30&quot;</code></p><p><span>Bei Bedarf kannst Du die </span><strong><span>:$SEKUNDE</span></strong><span> ergänzen. Zu einem späteren Zeitpunkt werden wir die Uhrzeit allerdings über das Internet mit einem Timeserver abgleichen, daher ist eine minutengenaue Eingabe vorerst durchaus ausreichend.</span></p><p><span>Diese Uhrzeit muss nun noch in das BIOS des Computers geschrieben werden. </span></p><p><span>Dazu wird folgender Befehl ausgeführt:</span></p><p><code>hwclock --systohc --utc</code></p><p><span>Damit wird die aktuell auf dem System eingestellte Uhrzeit im UTC-Format in das BIOS übertragen.</span></p><h4><a name="sprache" class="md-header-anchor"></a><span>Sprache</span></h4><p><span>Die Standardsprache bei Slackware ist Englisch. Diese lässt sich sehr leicht umstellen. Eine Liste mit allen verfügbaren Sprachen kannst Du dir mit folgendem Befehl ausgeben lassen:</span></p><p><code>locale -av</code></p><p><span>Du wirst feststellen, dass es sich um eine sehr lange Liste handelt, die in der Konsole vorbei rauscht. Du kannst die Ausgabe mit Hilfe des </span><strong><span>more</span></strong><span> Kommandos so anpassen, dass sie zeilenweise oder seitenweise blätterbar ist:</span></p><p><code>locale -av | more</code></p><p><span>Das Pipe Zeichen | erreichst Du auf der schweizerdeutschen Tastatur mit Hilfe von &quot;AltGr + 7&quot;</span></p><p><span>Nun kannst Du mit Enter zeilenweise in der Ausgabe fortfahren und mit Space seitenweise blättern. </span><strong><span>Ctrl+c</span></strong><span> bricht die Ausgabe ab und bringt dich wieder zurück auf die Shell.</span></p><div style="page-break-after: always;"></div> <p><span>Wichtig für uns ist die Bezeichnung der jeweiligen </span><em><span>locale</span></em><span>. Im Falle der Schweiz ist dies: </span><strong><span>de_CH.utf8</span></strong><span>, für Deutschland </span><strong><span>de_DE.utf8</span></strong><span> und für Österreich </span><strong><span>de_AT.utf8</span></strong><span>. Überprüfen kannst Du dies mit folgendem Befehl:</span></p><p><code>locale -av | grep -A 11 de_CH.utf8</code></p><p><span>Mit Hilfe des | Zeichens leiten wir die Ausgabe an einen weiteren Befehl namens </span><strong><span>grep</span></strong><span> weiter. Dieser Befehl durchsucht den Text nach Vorkommnissen von </span><em><span>de_CH.utf8</span></em><span> und gibt alle Treffer gefolgt von den nächsten 11 Zeichen aus (Parameter: </span><em><span>-A 11</span></em><span>).</span></p><p><img src="./slackware_locale_grep.png" referrerpolicy="no-referrer"></p><h5><a name="texteditor-nano" class="md-header-anchor"></a><span>Texteditor nano</span></h5><p><span>Da Du nun herausgefunden hast, wie die passende Locale heisst, kannst Du diese entsprechend konfigurieren. Dazu benötigst Du einen Texteditor. Ein einfacher Editor unter Linux ist </span><strong><span>nano</span></strong><span>. Wenn Du das Programm das erste mal startest, präsentiert es sich wie folgt:</span></p><p><img src="./slackware_nano.png" referrerpolicy="no-referrer"></p><p><span>Im oberen Bereich kannst Du einfach los tippen wie es von einem gewöhnlichen Editor bekannt ist. </span></p><div style="page-break-after: always;"></div> <p><span>Unten findest Du eine Übersicht von Befehlskürzeln. Das </span><em><span>^</span></em><span> Steht für </span><em><span>Ctrl</span></em><span>. Das </span><em><span>M</span></em><span> für </span><em><span>Alt</span></em><span>. Um zum Beispiel die Hilfe aufzurufen, reicht ein Druck auf </span><em><span>Ctrl+g</span></em><span>. Die Hilfe verlassen kannst Du mit </span><em><span>Ctrl+x</span></em><span>. Die Kürzel werden zwar mit grossen Buchstaben angegeben, also zum Beispiel </span><em><span>Ctrl+G</span></em><span>, aufgerufen werden sie allerdings mit Kleinbuchstaben. Konkret heisst das, Du musst nicht </span><em><span>Ctrl+Shift+G</span></em><span> eingeben sondern nur </span><em><span>Ctrl+G</span></em><span>. An dieser Stelle widerspricht nano etwas dem Linux-Konzept, da unter Linux in der Regel immer zwischen Gross- und Kleinschreibung unterschieden wird.</span></p><p><span>Wenn Du nano ohne Parameter startest, wird eine leere Datei geöffnet. Mit </span><em><span>Ctrl+o</span></em><span> würde nano nachfragen wo diese gespeichert werden soll. Dort muss der gesamte Pfad angegeben werden, andernfalls würde nano die Datei in dem Verzeichnis abspeichern in dem Du dich gerade befindest.</span></p><p><span>Machen wir einen kleinen Test. Tippe in nano folgenden Text ein: Dies ist nur ein Test.</span></p><p><img src="./slackware_nano_test.png" referrerpolicy="no-referrer"></p><p><span>Gib dann </span><em><span>Ctrl+o</span></em><span> ein und Du wirst nach einem Speicherort gefragt. Du kannst die Datei beispielsweise im Heimatverzeichnis des Benutzer root (</span><em><span>/root</span></em><span>) speichern. Gebe bei </span><strong><span>File Name to Write:</span></strong><span> </span></p><blockquote><p><span>/root/test.txt</span></p></blockquote><p><span>ein. Mit </span><em><span>Ctrl+x</span></em><span> verlässt Du den Editor wieder. Nun kannst Du prüfen, ob die Datei tatsächlich erstellt worden ist:</span></p><p><code>cat /root/test.txt</code></p><p><span>Der Befehl </span><strong><span>cat</span></strong><span> gibt den Inhalt einer Datei aus. Wenn an dieser Stelle </span><em><span>Dies ist nur ein Test.</span></em><span> ausgegeben wird, hast Du es geschafft und Du bist bereit deine erste Konfigurationsdatei zu bearbeiten.</span></p><div style="page-break-after: always;"></div> <h4><a name="locales-konfigurieren" class="md-header-anchor"></a><span>locales konfigurieren</span></h4><p><span>Die systemweite Sprachkonfiguration kannst Du in der Datei </span><em><span>/etc/profile.d/lang.sh</span></em><span> konfigurieren. Öffne diese Datei mit </span><em><span>nano</span></em><span>.</span></p><p><code>nano /etc/profile.d/lang.sh</code></p><blockquote><p><strong><span>Hinweis</span></strong><span>: In der BASH gibt es eine Wortvervollständigung. Du kannst zum Beispiel anfangen zu tippen: </span><code>nano /etc/pr</code><span> und dann die Tab-Taste drücken.</span>
  553. <span>In diesem Falle passiert noch nichts, da der Pfadname noch nicht eindeutig ist. Gebe also </span><code>nano /etc/pr</code><span> gefolgt von Tab-Tab ein und es werden dir alle Dateien und Verzeichnisse angezeigt die mit </span><em><span>pr</span></em><span> beginnen:</span></p></blockquote><p><img src="./slackware_bash_autocompletion.png" referrerpolicy="no-referrer"></p><p><span>Probiere ein wenig die Tab-Autocompletion aus. Diese Funktion mag im Moment noch ungewohnt erscheinen, wird dir in Zukunft sehr viel Arbeit einsparen.</span></p><p><span>Nachdem Du die Datei </span><em><span>/etc/profile.d/lang.sh</span></em><span> im Editor </span><em><span>nano</span></em><span> geöffnet hast, bearbeite bitte die Zeile </span><em><span>export LANG=...</span></em><span> so, dass dort folgender Eintrag:</span></p><blockquote><p><span>export LANG=de_CH.utf8</span></p></blockquote><p><span>oder die zuvor ermittelte Locale steht. Speichere die Datei mit </span><em><span>Ctrl+o</span></em><span> und verlasse den Editor mit </span><em><span>Ctrl+x</span></em><span>.</span></p><p><img src="./slackware_edit_locale.png" referrerpolicy="no-referrer"></p><p><strong><span>Hinweis</span></strong><span>: um im Editor nano an ein Zeilenende zu springen, kannst Du die </span><em><span>End</span></em><span> Taste auf deiner Tastatur verwenden. </span><em><span>Home</span></em><span> springt an den Anfang einer Zeile. In der BASH kannst Du alternativ mit </span><em><span>Ctrl+A</span></em><span> zum Zeilenanfang und </span><em><span>Ctrl+E</span></em><span> an das Zeilenende springen.</span></p><div style="page-break-after: always;"></div><h3><a name="lilo-konfiguration" class="md-header-anchor"></a><span>lilo Konfiguration</span></h3><p><span>Abschliessend prüfen wir noch die Konfiguration des Bootloaders lilo. Diese sollte bereits während der Installation korrekt geschrieben worden sein, da wir dort UTF-8 ausgewählt haben.</span></p><p><span>Öffne dazu bitte mit nano die Datei /etc/lilo.conf</span></p><p><code>nano /etc/lilo.conf</code></p><p><span>Wichtig ist, dass dort am Anfang </span><em><span>append=&quot; vt.default_utf8=1&quot;</span></em><span> steht. Wenn Du gerade in der Datei bist, kannst Du noch zwei Anpassungen vornehmen. Möglicherweise ist dir aufgefallen, dass lilo beim Systemstart 2 Minuten wartet, bevor der Defaulteintrag gebootet wird. Ausserdem lädt der Kernel am Anfang recht langsam. Dies kannst Du durch die zwei Parameter </span><em><span>compact</span></em><span> und </span><em><span>timeout</span></em><span> beeinflussen.</span></p><p><span>Entferne als erstes die # vor </span><em><span>compact</span></em><span>, dadurch sollte der Kernel schneller starten. Ändere daraufhin den timeout von </span><em><span>1200</span></em><span> auf </span><em><span>120</span></em><span>. Die Datei sollte nun wie folgt aussehen:</span></p><p><img src="./slackware_lilo_conf.png" referrerpolicy="no-referrer"></p><p><span>Zusätzlich kannst Du die Bildschirmauflösung der Konsole erhöhen, indem Du den Werg </span><em><span>vga = normal</span></em><span> auf </span><em><span>vga = 791</span></em><span> änderst. Dadurch wird erreicht, dass die Konsole in einer Bildschirmauflösung von 1024x768 angezeigt wird. Weitere mögliche Auflösungen werden in der Datei beschrieben.</span></p><div style="page-break-after: always;"></div> <p><span>Speichere die Datei ab und verlasse nano. Die Änderungen werden erst aktiv, wenn Du lilo neu in den MBR schreibst. Gebe dazu in der Shell den Befehl </span><strong><span>lilo</span></strong><span> ein:</span></p><p><code>lilo</code></p><p><img src="./slackware_lilo_written_normal.png" referrerpolicy="no-referrer"></p><p><span>Starte dein Linux mit Hilfe des Befehls </span><strong><span>reboot</span></strong><span> neu:</span></p><p><code>reboot</code></p><p><span>Der lilo Timeout sollte deutlich kürzer sein und auch der Kernel sollte schneller starten. Logge dich erneut als Benutzer </span><em><span>root</span></em><span> ein und prüfe ob die Spracheinstellungen übernommen worden sind. Am einfachsten geht das mit dem Kommando </span><strong><span>man</span></strong><span>, das Hilfeseiten zu fast allen Linux-Kommandos ausgibt. Schaue dir beispielsweise einmal die Manpage für das Kommando </span><em><span>man</span></em><span> an:</span></p><p><code>man man</code></p><p><span>Die Hilfe sollte in deutscher Sprache ausgegeben werden. Blättern kannst Du mit Pfeil-rauf und Pfeil-runter, Space wechselt die Ansicht seitenweise. Verlassen kannst Du die Manpage durch Eingabe von </span><em><span>q</span></em><span>.</span></p><p><span>Leider sind nicht viele Manpages in die deutsche Sprache übersetzt. Die meisten Kommandos bieten aber zusätzlich einen Parameter </span><em><span>--help</span></em><span> an.</span></p><p><span>Versuche es mit dem </span><em><span>cp</span></em><span> Kommando:</span></p><p><code>cp --help | more</code></p><p><span>Auch hier ist eine Weiterleitung an das Kommando </span><strong><span>more</span></strong><span> sinnvoll, da sonst die Ausgabe sehr schnell durchläuft.</span></p><h3><a name="benutzer-anlegen" class="md-header-anchor"></a><span>Benutzer anlegen</span></h3><p><span>Bisher warst Du immer als Benutzer </span><em><span>root</span></em><span> angemeldet. Dieser Benutzer hat alle Rechte auf einem Linux-System. Insbesondere wenn Du später mit einer grafischen Benutzeroberfläche arbeitest, solltest Du dich immer mit einem normalen Benutzerkonto anmelden und nur mit root-Rechten arbeiten, wenn dies wirklich notwendig ist. Mit folgendem Befehl kannst Du als Benutzer root ein neues Konto für einen normalen Benutzer anlegen:</span></p><p><code>useradd -m -s /bin/bash -g users -c &#39;Linux User&#39; -G audio,cdrom,floppy,plugdev,video linuxuser</code></p><p><span> </span><strong><span>Hinweis</span></strong><span>: Das Single-Tick Zeichen findest Du auf der Schweizerdeutschen Tastatur wenn Du die Taste mit dem ? drückst.</span></p><p><strong><span>useradd</span></strong><span> ist ein Kommando zum Anlegen eines Benutzerkontos. Der Parameter </span><strong><span>-m</span></strong><span> stellt sicher, dass auch das Heimatverzeichnis für den Benutzer erstellt wird, falls dieses noch nicht existiert.</span></p><p><span>Wie Du bereits gelernt hast, ist das Heimatverzeichnis für den Benutzer </span><em><span>root</span></em><span> </span><code>/root</code><span>. Die Homeverzeichnisse für normale Benutzer befinden sich in der Regel im Verzeichnis /home. In diesem Verzeichnis sollte sich nun ein neues Unterverzeichnis mit dem Namen des Benutzers befinden. </span></p><div style="page-break-after: always;"></div> <p><span>Prüfen kannst Du dies mit:</span></p><p><code>ls -al /home</code></p><p><img src="./slackware_ls_home.png" referrerpolicy="no-referrer"></p><p><span>Damit man in einen Ordner wechseln kann, müssen </span><em><span>read</span></em><span> (</span><strong><span>r</span></strong><span>) und </span><em><span>execute</span></em><span> (</span><strong><span>x</span></strong><span>) vergeben sein. Die Standardberechtigungen für neue Verzeichnisse sind:</span></p><blockquote><p><strong><code>-rwxr-xr-x</code></strong></p></blockquote><p><span>Oktal wäre dies </span><strong><span>Owner</span></strong><span>: </span><strong><code>rwx</code></strong><span> = 4+2+1 = 7 / </span><strong><span>Group</span></strong><span>: </span><strong><code>r-x</code></strong><span>: 4+0+1 = 5 / </span><strong><span>Others</span></strong><span>: </span><strong><code>r-x</code></strong><span>: 4+0+1 = 5 oder zusammengesetzt: </span><strong><span>755</span></strong><span>.</span></p><p><span>Der Eigentümer </span><em><span>linuxuser</span></em><span> kann lesend und schreibend auf das Homeverzeichnis zugreifen. Die Gruppe </span><em><span>users</span></em><span> und alle anderen haben ebenfalls die Möglichkeit in das Verzeichnis zu wechseln.</span></p><p><span>Damit nur der Benutzer selbst auf sein Homeverzeichnis zugreifen kann, empfiehlt es sich diese Rechte anzupassen:</span></p><p><code>chmod 700 /home/linuxuser</code></p><p><span>Prüfe die Ausgabe erneut mit:</span></p><p><code>ls -al /home</code></p><p><img src="./slackware_ls_home_secure.png" referrerpolicy="no-referrer"></p><p><span>Schauen wir uns noch einmal das </span><strong><span>useradd</span></strong><span> Kommando an:</span></p><p><code>useradd -m -s /bin/bash -g users -c &#39;Linux User&#39; -G audio,cdrom,floppy,plugdev,netdev,video linuxuser</code></p><p><span>Der Parameter </span><strong><span>-s /bin/bash</span></strong><span> besagt, dass die BASH als Login Shell verwendet werden soll. </span><strong><span>-g users</span></strong><span> definiert die primäre Gruppe des Benutzers. Alle Dateien, die von dem Benutzer angelegt werden, erhalten standardmässig diese Gruppenberechtigungen, sofern nichts anderes angegeben wurde.</span></p><p><span>Über </span><strong><span>-c &#39;Linux User&#39;</span></strong><span> wird der Klarname des Benutzers angegeben. Falls dieser Leerzeichen oder Sonderzeichen enthält muss er in </span><em><span>Single Ticks</span></em><span> Anführungszeichen angegeben werden, da sonst die BASH damit nicht umgehen kann. </span></p><p><span>Mit Hilfe von </span><strong><span>-G audio,cdrom,floppy,plugdev,netdev,video</span></strong><span> kannst Du zusätzliche Gruppen angeben, zu denen der Benutzer hinzugefügt werden soll. Die Gruppennamen sind oftmals selbsterklärend. Durch die Angabe der obigen Gruppen erhält der Benutzer Zugriff auf Audiogeräte, CD- und DVD-Laufwerke, Floppydrives, angeschlossene externe Datenträger, Netzwerkschnittstellen und auf die Videoausgabe.</span></p><p><span>Es folgt der Loginname </span><strong><span>linuxuser</span></strong><span>. Dieser darf ausschliesslich aus Kleinbuchstaben bestehen und sollte keine Leerzeichen enthalten.</span></p><div style="page-break-after: always;"></div> <p><span>Überprüfen kannst Du die Gruppenzugehörigkeit mit dem Befehl </span><strong><span>id</span></strong><span>. Als Parameter ist der Loginname des Benutzers anzugeben, in diesem Beispiel </span><em><span>linuxuser</span></em><span>.</span></p><p><code>id linuxuser</code></p><p><img src="./slackware_id.png" referrerpolicy="no-referrer"></p><p><span>Die Ausgabe von </span><strong><span>id</span></strong><span> enthält immer zuerst den numerischen Bezeichner, gefolgt vom wörtlichen Bezeichner. </span><em><span>uid=</span></em><span> ist die id des Benutzers (hier 1000) gefolgt vom Loginnamen. </span><em><span>gid</span></em><span> gibt die primäre Gruppe an, in diesem Fall </span><em><span>users</span></em><span> mit der id </span><em><span>100</span></em><span>. Darauf folgen alle weiteren zugeordneten Gruppen.</span></p><p><span>Der Befehl </span><strong><span>ls</span></strong><span> bietet mit dem </span><strong><span>-n</span></strong><span> Parameter die Möglichkeit an, numerische Bezeichner anzeigen zu lassen. Dabei ersetzt der Parameter </span><strong><span>-n</span></strong><span> den zuvor verwendeten Parameter </span><strong><span>-l</span></strong><span>:</span></p><p><code>ls -an /home</code></p><p><img src="./slackware_id_num.png" referrerpolicy="no-referrer"></p><p><span>Du siehst das anstatt wie zuvor der Benutzer </span><em><span>linuxuser</span></em><span> und die Gruppe </span><em><span>users</span></em><span> ausgegeben wird, nun die numerischen Bezeichner an der dessen Stelle angezeigt werden. Im Normalfall wirst Du allerdings die wörtlichen Bezeichner verwenden.</span></p><h4><a name="vipw-und-vigr" class="md-header-anchor"></a><span>vipw und vigr</span></h4><p><span>Linux speichert die Informationen über Benutzer in der Datei </span><em><span>/etc/passwd</span></em><span>. Gruppeninformationen werden in der Datei </span><em><span>/etc/groups</span></em><span> hinterlegt.</span></p><p><span>Diese Dateien sollten nicht direkt bearbeitet werden, sondern mit den Kommandos </span><strong><span>vipw</span></strong><span> (für </span><em><span>/etc/passwd</span></em><span>) und </span><strong><span>vigr</span></strong><span> (für /etc/groups).</span></p><p><span>Die Kommandos </span><strong><span>vipw</span></strong><span> und </span><strong><span>vigr</span></strong><span> starten den Editor </span><em><span>elvis</span></em><span> und öffnen die entsprechenden Benutzer- respektive Gruppendateien. Bei </span><em><span>elvis</span></em><span> handelt es sich um einen Clone des Editors </span><em><span>vi</span></em><span>.</span></p><p><span>Elvis wird aufgerufen, wenn man unter Slackware </span><strong><span>vi</span></strong><span> eingibt, da </span><strong><span>vi</span></strong><span> ein sogenannter symbolischer Link ist, der auf das Programm </span><em><span>elvis</span></em><span> zeigt.</span></p><h5><a name="symlinks" class="md-header-anchor"></a><span>Symlinks</span></h5><p><span>Gebe folgenden Befehl ein, um dir den Link anzeigen zu lassen:</span></p><p><code>ls -al /usr/bin/vi</code></p><p><img src="./slackware_elvis.png" referrerpolicy="no-referrer"></p><p><span>Du siehst, dass </span><em><span>/usr/bin/vi</span></em><span> auf eine Datei Namens </span><em><span>elvis</span></em><span> zeigt. Wird beim Linkziel kein Pfad angegeben, wird davon ausgegangen, dass sich das Ziel im gleichen Verzeichnis wie der Link befindet (</span><em><span>/usr/bin</span></em><span>)</span></p><p><span>Symbolische Links werden in der Ausgabe von </span><strong><span>ls -al</span></strong><span> wie folgt dargestellt:</span></p><blockquote><p><strong><code>lrwxrwxrwx</code></strong></p></blockquote><p><span>Das erste </span><strong><span>l</span></strong><span> gibt an, dass es sich um einen Link handelt. Die Permissions des Linkfiles sind immer 777. Das heisst, der Link selbst darf von allen aufgelöst werden, bedeutet aber nicht, dass man Zugriff auf das Linkziel hat. Denn es gelten letztendlich die Berechtigungen, die auf dem Linkziel gesetzt sind.</span></p><p><span>Wir möchten statt </span><em><span>elvis/vi</span></em><span> die erweiterte Version mit dem Namen </span><em><span>vim</span></em><span> verwenden (</span><em><span>vi impoved</span></em><span>). Dazu müssen wir dem System zunächst mitteilen, dass bei einem Aufruf des Kommandos </span><strong><span>vi</span></strong><span> nicht </span><strong><span>elvis</span></strong><span> sondern </span><strong><span>vim</span></strong><span> gestartet wird.</span></p><p><span>Das können wir lösen, indem wir einen Symlink erstellen, der auf </span><em><span>vim</span></em><span> statt auf </span><em><span>elvis</span></em><span> zeigt.</span></p><h5><a name="path" class="md-header-anchor"></a><span>PATH</span></h5><p><span>Linux sucht ausführbare Programme (Binaries) anhand der sogenannten PATH Variable. Diese wird linear abgearbeitet. Du kannst dir den Inhalt der Pfad Variable mit folgendem Befehl ausgeben lassen:</span></p><p><code>echo $PATH</code></p><p><img src="./slackware_path.png" referrerpolicy="no-referrer"></p><p><span>Das System sucht in diesem Fall Programme zunächst im Verzeichnis </span><em><span>/usr/local/sbin</span></em><span> dann in </span><em><span>/usr/sbin</span></em><span>, </span><em><span>/sbin</span></em><span>, </span><em><span>/usr/local/bin</span></em><span> </span><em><span>/usr/bin</span></em><span> und so weiter.</span></p><p><span>Die </span><em><span>sbin</span></em><span> Verzeichnisse stehen nur dem Benutzer root zur Verfügung, normale Benutzer haben diese Verzeichnisse nicht in der $PATH Variable.</span></p><p><span>Du siehst, dass immer erst in den </span><em><span>/usr/local</span></em><span> Verzeichnissen gesucht wird. Diese Verzeichnisse dienen lokalen Systemanpassungen. Gleichnamige Programme in diesen Verzeichnissen werden bevorzugt. Das heisst, wenn in /usr/local/bin eine Datei oder ein Link mit dem Namen </span><em><span>vi</span></em><span> existiert, wird dieser vor einer gleichnamigen Datei oder einem Link in </span><em><span>/usr/bin</span></em><span> bevorzugt.</span></p><p><span>Diesen Mechanismus können wir uns zu nutze machen, indem wir einen symbolischen Link für </span><em><span>vi</span></em><span> in </span><em><span>/usr/local/bin</span></em><span> anlegen, der auf </span><em><span>vim</span></em><span> zeigt:</span></p><p><code>ln -s /usr/bin/vim /usr/local/bin/vi</code></p><p><img src="./slackware_vim_link.png" referrerpolicy="no-referrer"></p><p><span>Der Befehl </span><strong><span>ln</span></strong><span> erstellt einen Link. Der Parameter </span><strong><span>-s</span></strong><span> gibt an, dass es sich um einen symbolischen Link handelt. Darauf folgt das Linkziel (</span><em><span>/usr/bin/vim</span></em><span>) und der Name des Links (</span><em><span>/usr/local/bin/vi</span></em><span>).</span></p><p><span>Damit die Änderungen appliziert werden, musst Du dich einmal abmelden und erneut als Benutzer root anmelden. Eine aktive Shellsitzung kannst Du mit </span><strong><span>Strg d</span></strong><span> oder durch Eingabe von </span><strong><span>exit</span></strong><span> beenden.</span></p><div style="page-break-after: always;"></div><p><span>Wenn Du nun </span><em><span>vi</span></em><span> eingibst, öffnet sich der Editor </span><em><span>vim</span></em><span>.</span></p><p><img src="./slackware_vim_welcome.png" referrerpolicy="no-referrer"></p><p><span>Ein wichtiger Befehl vorab: </span><strong><code>Esc</code></strong><code>+</code><strong><code>:</code></strong><code>+</code><strong><code>q</code></strong><code>+</code><strong><code>!</code></strong><span>, also </span><strong><span>Escape</span></strong><span> gefolgt von einem </span><strong><span>:</span></strong><span>, einem </span><strong><span>q</span></strong><span> und einem </span><strong><span>!</span></strong><span>. Dieser Befehl verlässt den Editor ohne die Änderungen, die Du gemacht hast, abzuspeichern. Dies ist besonders jetzt in der Übungsphase hilfreich, da Du so nicht unbeabsichtigt etwas an wichtigen Systemdateien verstellen kannst. </span></p><p><strong><span>Hinweis</span></strong><span>: im Folgenden verzichten wir auf die Verwendung des </span><strong><span>+</span></strong><span> Zeichens zur Erläuterung der Befehlsverkettungen.</span></p><p><span>Testweise kannst Du </span><em><span>elvis</span></em><span> aufrufen, indem Du den kompletten Pfad zu dem Systemsymlink angibst:</span></p><p><code>/usr/bin/vi</code></p><p><span>Du siehst, dass dich </span><em><span>elvis</span></em><span> nicht mit dem ausführlichen Willkommenstext von </span><em><span>vim</span></em><span> begrüsst.</span>
  554. <span>u</span>
  555. <span>Die Grundkommandos in </span><em><span>elvis/vi</span></em><span> und </span><em><span>vim</span></em><span> sind allerdings identisch. Auch hier kannst Du </span><strong><code>Esc :q!</code></strong><span> eingeben um den Editor zu verlassen.</span></p><div style="page-break-after: always;"></div><h4><a name="vim" class="md-header-anchor"></a><span>vim</span></h4><p><span>Nun kannst Du deinen Ausflug in die Welt des Editors </span><em><span>vim</span></em><span> beginnen. </span></p><p><span>Der Editor </span><strong><span>vim</span></strong><span> ist ganz anders als alle Editoren, die Du wahrscheinlich kennst. Er ist sehr mächtig und wird von vielen Linux-Anwendern gerne verwendet. Alle Funktionen des Editors zu erklären würde den Rahmen dieses Kurses sprengen. </span></p><p><span>Bevor Du </span><strong><span>vim</span></strong><span> das allererste mal startest, bietet es sich an, einige Vorkonfigurationen vorzunehmen. Diese Einstellungen kannst Du mit dem Editor </span><strong><span>nano</span></strong><span> vornehmen:</span></p><p><code>nano ~/.vimrc</code></p><p><span>Das </span><em><span>~/</span></em><span> steht für das Homeverzeichnis des aktuell angemeldeten Benutzers, in diesem Falle </span><em><span>/root</span></em><span>. Wir bearbeiten die vim Konfigurationsdatei </span><em><span>.vimrc</span></em><span> im Verzeichnis /root.</span></p><p><span>Folgende Konfiguration hat sich bewährt:</span></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">set mouse=</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">set nobackup</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">set noswapfile</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">set noundofile</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">set noai</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">set paste</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">set noincsearch</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">set nohlsearch</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 184px;"></div><div class="CodeMirror-gutters" style="display: none; height: 184px;"></div></div></div></pre><p><span>Speichere die Datei in nano mit </span><strong><span>Strg o</span></strong><span> ab und verlasse nano mit </span><strong><span>Strg x</span></strong><span>.</span></p><p><span>Wir schauen uns als nächstes die Grundfunktion von </span><strong><span>vim</span></strong><span> am Beispiel des Kommandos </span><strong><span>vipw</span></strong><span> an. Doch zuvor sichern wir die wichtige Systemdatei </span><em><span>/etc/passwd</span></em><span> mit folgendem Befehl:</span></p><p><code>cp /etc/passwd /etc/passwd.orig</code></p><div style="page-break-after: always;"></div> <p><span>Daraufhin kannst Du </span><strong><span>vipw</span></strong><span> starten:</span></p><p><code>vipw</code></p><p><img src="./slackware_vipw.png" referrerpolicy="no-referrer"></p><p><span>Der grösste Unterschied von </span><em><span>vim</span></em><span> im Vergleich zu anderen Editoren ist, dass es einen Befehlsmodus und einen Eingabemodus gibt. Der Editor startet standardmässig immer in den Befehlsmodus. Dort kannst Du zwar mit den Cursortasten navigieren, allerdings nicht einfach lostippen. Du kannst jederzeit wieder mit der Escape-Taste in den Befehlsmodus zurückkehren.</span></p><p><span>Befehle werden in vi am unteren Bildschrimrand angezeigt und mit der Entertaste ausgelöst.</span></p><p><img src="./slackware_vim_q.png" referrerpolicy="no-referrer"></p><p><span>Versuche nun einmal den Anzeigenamen deines Benutzers zu ändern. Navigiere dazu mit den Pfeiltasten auf den ersten Buchstaben des Anzeigenamens deines Benutzers; in unserem Beispiel wäre dies </span><em><span>Linux User</span></em><span>. </span></p><div style="page-break-after: always;"></div> <p><span>Drücke die </span><strong><span>i</span></strong><span> Taste um in den Eingabemodus zu gelangen. Dieser wird unten links signalisiert.</span></p><p><img src="./slackware_vim_change_user.png" referrerpolicy="no-referrer"></p><p><span>Erst jetzt hast Du die Möglichkeit Text einzufügen. Schreibe nun etwas anderes dort hinein, in diesem Beispiel </span><em><span>Slackware Linux User</span></em><span>.</span></p><p><span>Wenn Du einen Fehler gemacht hast, kannst Du mit </span><strong><code>Esc u</code></strong><span>, also </span><strong><span>Escape</span></strong><span> gefolgt von </span><strong><span>u</span></strong><span> deine letzte Änderung rückgängig machen. </span><em><span>vim</span></em><span> kann im Gegensatz zu </span><em><span>elvis/vi</span></em><span> beliebig viele Befehle rückgängig machen.</span></p><p><span>Beachte bitte, dass Du nach der Nutzung der </span><em><span>undo</span></em><span> Funktion erst wieder mit </span><em><span>i</span></em><span> in den Eingabemodus wechseln musst, um erneut Text einzufügen. </span></p><p><span>Abspeichern kannst Du deine Änderung jederzeit mit </span><strong><code>Esc :w!</code></strong><span>. Mit Hilfe von </span><strong><code>Esc :wq!</code></strong><span> speicherst Du die Änderungen ab und verlässt den Editor.</span></p><p><img src="./slackware_vim_save_q.png" referrerpolicy="no-referrer"></p><p><span>Wie Du vielleicht festgestellt hast, beginnt die Eingabe genau an der Stelle, an der sich der Cursor befindet, wenn Du den Eingabemodus mit </span><strong><span>i</span></strong><span> gestartet hast. Alternativ kannst Du </span><strong><span>a</span></strong><span> verwenden um die Eingabe rechts neben dem Cursor zu starten.</span></p><p><span>Nachdem Du ein wenig herumexperimentiert hast, wirst Du wahrscheinlich feststellen, dass insbesondere das Löschen von Zeichen oder Wörtern anders funktioniert als in anderen Editoren.</span></p><p><span>Am einfachsten geht das Löschen von Zeichen im Eingabemodus mit Hilfe der </span><strong><span>Delete</span></strong><span> Taste. Diese löscht das Zeichen unter dem Cursor.</span></p><p><span>Noch komfortabler geht es im Befehlsmodus. Gehe dazu mit dem Cursor auf den ersten Buchstaben des Wortes, das Du löschen möchtest. In unserem Beispiel möchten wir versuchen, den Benutzernamen von </span><em><span>Slackware Linux User</span></em><span> auf </span><em><span>Slackware User</span></em><span> abzuändern. Wenn Du auf dem </span><em><span>L</span></em><span> von </span><em><span>Linux</span></em><span> stehst, drücke </span><strong><code>Esc dw</code></strong><span>, also Escape gefolgt von </span><em><span>d</span></em><span> und </span><em><span>w</span></em><span> und das gesamte Wort unter dem Cursor wird gelöscht. </span></p><p><span>Alternativ kannst Du mit </span><strong><code>Esc d Pfeil-rechts oder Pfeil-links</code></strong><span> ein Zeichen rechts oder links neben dem Cursor entfernen. Mit Hilfe von </span><strong><code>Esc dd</code></strong><span> löscht Du eine ganze Zeile.</span></p><div style="page-break-after: always;"></div><p><span>Noch ein paar nützliche Kommandos:</span></p><ul><li><strong><code>Esc Shift_a</code></strong><span>, Escape gefolgt von Shift und a (gleichzeitig) springt an das Ende einer Zeile und startet den Eingabemodus</span></li><li><strong><code>Esc Shift_g</code></strong><span> Escape gefolgt von Shift und g (gleichzeitig) springt in die letzte Zeile der Datei, bleibt allerdings im Befehlsmodus</span></li><li><strong><code>Esc /Suchwort</code></strong><span> Escape gefolgt von / und einem Suchwort (z.B. </span><strong><code>Esc /User</code></strong><span>) durchsucht die Datei nach dem Suchwort und springt mit dem Cursor zum ersten Treffer. Weitere Treffer können angezeigt werden, wenn Du nach der Suche direkt </span><strong><span>n</span></strong><span> für </span><em><span>next</span></em><span> angibst.</span></li></ul><p><span>Ein wirklich praktisches Features ist die integrierte Suchen-und-Ersetzen Funktion von </span><em><span>vim</span></em><span>. Sie wird wie folgt aufgerufen:</span></p><p><strong><code>Esc :%s/Suchwort/Ersatz/g</code></strong></p><p><span>Dieser Befehl ersetzt alle Vorkommnisse von dem Begriff </span><em><span>Suchwort</span></em><span> durch </span><em><span>Ersatz</span></em><span>. </span></p><p><span>Damit hast Du die wichtigsten Kommandos zum Umgang mit dem Editor </span><em><span>vim</span></em><span> gelernt, den wir auch in diesem Kurs in Zukunft zum Bearbeiten von Dateien verwenden werden. Eine gute Referenzkarte für den Editor findest Du auf der Webseite der /dev/LUG: </span><nobr><a href='https://devlug.de/blog/2018/vim.html' target='_blank' class='url'>https://devlug.de/blog/2018/vim.html</a></nobr></p><p><span>Solltest Du dir während der Tests die wichtige Systemdatei </span><em><span>/etc/passwd</span></em><span> verstellt haben, kannst Du die Sicherung mit folgendem Befehl zurückspielen:</span></p><p><code>cp /etc/passwd.orig /etc/passwd</code></p><h5><a name="rm" class="md-header-anchor"></a><span>rm</span></h5><p><span>Mit Hilfe des </span><strong><span>rm</span></strong><span> Befehls kannst Du die </span><em><span>.orig</span></em><span> Datei löschen:</span></p><p><code>rm /etc/passwd.orig</code></p><p><strong><span>rm</span></strong><span> hat die Datei ohne Nachfrage entfernt. Das möchten wir gerne ändern, damit nicht versehentlich wichtige Dateien gelöscht werden.</span></p><p><span>Erstelle dazu bitte die Datei </span><em><span>.bash_profile</span></em><span>. Dabei handelt es sich um eine benutzerspezifische Konfigurationsdatei der BASH, die bei jeder interaktiven Anmeldung an einem Terminal ausgeführt wird.</span></p><p><code>vi /root/.bash_profile</code></p><p><span>Trage dort folgende Zeile ein:</span></p><p><code>alias rm=&#39;rm -i&#39;</code></p><p><span>Mit dieser Konfigurationseinstellung (</span><em><span>alias</span></em><span>) legst Du fest, dass jedes Mal wenn Du den Befehl </span><strong><span>rm</span></strong><span> ausführst, stattdessen </span><strong><span>rm -i</span></strong><span> gestartet wird.</span></p><p><span>Der Parameter </span><strong><span>-i</span></strong><span> sorgt dafür, dass vor dem Entfernen einer Datei eine Nachfrage erscheint.</span></p><p><span>Damit die Einstellung auch in der aktuell laufenden Shell appliziert wird, kannst Du die Konfigurationsdatei einlesen. Man spricht bei diesem Vorgang auch von </span><em><span>sourcen</span></em><span>:</span></p><p><code>. /root/.bash_profile</code></p><p><span>Achte bitte hierbei auf das Leerzeichen zwischen dem Punkt und dem </span><em><span>/</span></em><span>. Alternativ könntest Du dich abmelden und als Benutzer </span><em><span>root</span></em><span> erneut anmelden.</span></p><div style="page-break-after: always;"></div> <p><span>Teste ob die Anpassungen aktiv sind, indem Du zunächst eine leere Datei anlegst und daraufhin versuchst diese zu löschen. </span></p><p><span>Leere Dateien lassen sich einfach mit Hilfe des Befehls </span><strong><span>touch</span></strong><span> erstellen:</span></p><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">touch /root/test</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">rm /root/test</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 46px;"></div><div class="CodeMirror-gutters" style="display: none; height: 46px;"></div></div></div></pre><p><span>Die Nachfrage, die erscheint, kannst Du mit </span><strong><span>y</span></strong><span> bestätigen.</span></p><p><img src="./slackware_rm_i.png" referrerpolicy="no-referrer"></p><h4><a name="benutzer-ändern" class="md-header-anchor"></a><span>Benutzer ändern</span></h4><p><span>Du hast bereits gelernt wie man mit </span><strong><span>useradd</span></strong><span> einen unprivilegierten Benutzer mit dem Loginnamen </span><em><span>linuxuser</span></em><span> und dem Klarnamen </span><em><span>Slackware Linux User</span></em><span> erstellt. Diesen kannst Du mit dem </span><strong><span>usermod</span></strong><span> Kommando auf Deinen eigenen Namen anpassen.</span></p><p><span>Ein Beispiel für Maria Muster:</span></p><p><code>usermod -c &#39;Maria Muster&#39; -d /home/mmuster -m -l mmuster linuxuser</code></p><p><span>Hier wurde der Loginname in der Form $ERSTER_BUCHSTABE_VOM_VORNAMEN gefolgt von $NACHNAME angegeben (</span><em><span>mmuster</span></em><span>). Du kannst natürlich auch einfach deinen Vornamen oder einen Fantasienamen angeben.</span></p><p><span>Der Parameter </span><strong><span>-c &#39;Maria Muster&#39;</span></strong><span> legt den neuen Klarnamen des Benutzers fest. </span><strong><span>-d /home/mmuster</span></strong><span> ist das neue Homeverzeichnis. Es wird empfohlen, dass der Name des Homeverzeichnisses dem des Loginnamens entspricht (in diesem Fall </span><em><span>mmuster</span></em><span>). Mit </span><strong><span>-m</span></strong><span> legst Du fest, dass der Inhalt des vorhandenen Homeverzeichnisses übernommen werden soll. </span><strong><span>-l mmuster</span></strong><span> gibt den neuen Loginnamen an. Der Parameter am Ende des Befehls ist der Loginname des Benutzers den Du ändern möchtest (hier: </span><em><span>linuxuser</span></em><span>).</span></p><p><span>Überprüfen kannst Du die Änderungen wie gelernt mit </span><code>ls -al /home</code><span> und dem Befehl </span><strong><span>vipw</span></strong><span> sowie dem Befehl </span><strong><span>id</span></strong><span> gefolgt vom Loginnamen des Benutzers. Alternativ zu </span><strong><span>id</span></strong><span> kannst Du das Kommando </span><strong><span>groups</span></strong><span> verwenden, welches ebenfalls mit dem Loginnamen als Parameter aufgerufen werden kann.</span></p><p><strong><span>Hinweis</span></strong><span>: Im Verlauf des Kurses wird weiterhin der Benutzer </span><em><span>linuxuser</span></em><span> als Beispiel verwendet. Bei entsprechenden Befehlsaufrufen musst Du diesen durch deinen neuen Loginnamen ersetzen:</span></p><p><code>groups linuxuser</code></p><p><img src="./slackware_groups.png" referrerpolicy="no-referrer"></p><div style="page-break-after: always;"></div> <h4><a name="passwort-festlegen" class="md-header-anchor"></a><span>Passwort festlegen</span></h4><p><span>Dem neu erstellten Benutzer wurde bisher noch kein Passwort zugewiesen. Dies kannst Du nun mit dem Befehl </span><strong><span>passwd</span></strong><span> nachholen.</span></p><p><code>passwd linuxuser</code></p><p><span>Den Loginnamen des Benutzers kannst Du durch deinen neuen Loginnamen ersetzen. Das Passwort wird während der Eingabe nicht angezeigt.</span></p><p><img src="./slackware_passwd.png" referrerpolicy="no-referrer"></p><p><span>Abschliessend kannst Du dich mit deinem neuen Benutzerkonto am System anmelden. Öffne dazu eine weitere </span><em><span>tty</span></em><span> durch Eingabe von </span><code>Strg Alt F2</code><span>. Die Tasten werden gleichzeitig gedrückt. Bei einer </span><em><span>tty</span></em><span> handelt es sich um eine virtuelle Konsole. Üblicherweise gibt es unter Linux sechs virtuelle Konsolen, die Du mit </span><nobr><code>Strg Alt F1 - F6</code></nobr><span> erreichst. Die grafische Oberfläche wird später mit </span><code>Strg Alt F7</code><span> anwählbar sein.</span></p><p><span>Melde dich dort mit deinem Benutzernamen und Passwort des normalen Benutzerkontos an.</span></p><p><img src="./slackware_user_login.png" referrerpolicy="no-referrer"></p><p><span>Zu deiner Rootshell kannst Du mit Hilfe von </span><strong><span>Strg Alt F1</span></strong><span> zurückwechseln.</span></p><h2><a name="virtualbox-gasterweiterungen" class="md-header-anchor"></a><span>VirtualBox Gasterweiterungen</span></h2><p><span>Falls Du dein Linux-System in einer VirtualBox installiert hast, kannst Du die Gasterweiterungen einbinden. Wähle dazu um VirtualBox Menü den Punkt </span><strong><span>Geräte</span></strong><span> den Punkt </span><strong><span>Gasterweiterungen einlegen</span></strong><span>. In diesem Moment wird eine virtuelle CD an das System angehängt die Du mit Root-Rechten und folgendem Befehl mounten kannst:</span></p><p><code>mount /dev/cdrom /media/cdrom</code></p><p><span>Wechsle mit Hilfe von </span><code>cd</code><span> in das Verzeichnis:</span></p><p><code>cd /media/cdrom</code></p><p><span>Führe dort das Script zur Installation der Erweiterungen aus:</span></p><p><code>./VBoxLinuxAdditions.run</code></p><div style="page-break-after: always;"></div> <p><span>Somit hast Du die ersten Schritte in deinem Linux-System getan, erfolgreich die Sprache umgestellt, Systemdienste kennengelernt und erste Erfahrungen mit vielen wichtigen Kommandos machen können. Du hast dein eigenes Benutzerkonto erstellt, mit dem Du dich an deinem Linux-System anmelden kannst. Im nächsten Kursteil geht es um die Einrichtung der grafischen Benutzeroberfläche.</span></p><p><span>Grafische Oberfläche &lt; PDF &gt;</span></br>
  556. <span>↪ </span><a href='https://linuxkurs.ch/kurs/Grafische_Benutzeroberflaeche.pdf' target='_blank' class='url'>https://linuxkurs.ch/kurs/Grafische_Benutzeroberflaeche.pdf</a></p><p><span>Grafische Oberfläche &lt; HTML &gt;</span></br>
  557. <span>↪ </span><a href='https://linuxkurs.ch/kurs/Grafische_Benutzeroberflaeche.html' target='_blank' class='url'>https://linuxkurs.ch/kurs/Grafische_Benutzeroberflaeche.html</a></p><hr /><p><span>© Lioh Moeller</span></p></div>
  558. </body>
  559. </html>