Files
Linux/Task_4-6/Linux-Cl-Praktikum_04_en.html

1259 lines
78 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="author" content="Prof. Dr. Andreas Claßen">
<title>Linux Praktikumstermin 2025_04: User Handling / Processes</title>
<style>
/*! Asciidoctor default stylesheet | MIT License | https://asciidoctor.org */
/* Uncomment the following line when using as a custom stylesheet */
html{font-family:sans-serif;-webkit-text-size-adjust:100%}
a{background:none}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
b,strong{font-weight:bold}
abbr{font-size:.9em}
abbr[title]{cursor:help;border-bottom:1px dotted #dddddf;text-decoration:none}
dfn{font-style:italic}
hr{height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
audio,video{display:inline-block}
audio:not([controls]){display:none;height:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type=checkbox],input[type=radio]{padding:0}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,::before,::after{box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;line-height:1;position:relative;cursor:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4;word-wrap:anywhere;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:0}
p{line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
ul,ol,dl{line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ul.square{list-style-type:square}
ul.circle ul:not([class]),ul.disc ul:not([class]),ul.square ul:not([class]){list-style:inherit}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}
table{background:#fff;margin-bottom:1.25em;border:1px solid #dedede;word-wrap:normal}
table thead,table tfoot{background:#f7f8f7}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt{background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.center{margin-left:auto;margin-right:auto}
.stretch{width:100%}
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
.clearfix::after,.float-group::after{clear:both}
:not(pre).nobreak{word-wrap:normal}
:not(pre).nowrap{white-space:nowrap}
:not(pre).pre-wrap{white-space:pre-wrap}
:not(pre):not([class^=L])>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background:#f7f7f8;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
pre{color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;line-height:1.45;text-rendering:optimizeSpeed}
pre code,pre pre{color:inherit;font-size:inherit;line-height:inherit}
pre>code{display:block}
pre.nowrap,pre.nowrap pre{white-space:pre;word-wrap:normal}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background:#f7f7f7;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.2),inset 0 0 0 .1em #fff;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menuref{color:#000}
.menuseq b:not(.caret),.menuref{font-weight:inherit}
.menuseq{word-spacing:-.02em}
.menuseq b.caret{font-size:1.25em;line-height:.8}
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
b.button::before{content:"[";padding:0 3px 0 2px}
b.button::after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin:0 auto;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
#content{margin-top:1.25em}
#content::before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
#header>h1:only-child{border-bottom:1px solid #dddddf;padding-bottom:8px}
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:flex;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span::before{content:"\00a0\2013\00a0"}
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber::after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc li{line-height:1.3334;margin-top:.3334em}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#7a2518;font-size:1.2em}
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
#toc.toc2{margin-top:0!important;background:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}
#content #toc{border:1px solid #e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:none;background:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:hsla(0,0%,100%,.8);line-height:1.44}
#content{margin-bottom:.625em}
.sect1{padding-bottom:.625em}
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
.sect1{padding-bottom:1.25em}}
.sect1:last-child{padding-bottom:0}
.sect1+.sect1{border-top:1px solid #e7e7e9}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
details,.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
details{margin-left:1.25rem}
details>summary{cursor:pointer;display:block;position:relative;line-height:1.6;margin-bottom:.625rem;outline:none;-webkit-tap-highlight-color:transparent}
details>summary::-webkit-details-marker{display:none}
details>summary::before{content:"";border:solid transparent;border-left:solid;border-width:.3em 0 .3em .5em;position:absolute;top:.5em;left:-1.25rem;transform:translateX(15%)}
details[open]>summary::before{border:solid transparent;border-top:solid;border-width:.5em .3em 0;transform:translateY(15%)}
details>summary::after{content:"";width:1.25rem;height:1em;position:absolute;top:.3em;left:-1.25rem}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
.paragraph.lead>p,#preamble>.sectionbody>[class=paragraph]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:none}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6);word-wrap:anywhere}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border:1px solid #e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;border-radius:4px}
.sidebarblock{border:1px solid #dbdbd6;margin-bottom:1.25em;padding:1.25em;background:#f3f3f2;border-radius:4px}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:first-child,.sidebarblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child,.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock>.content>pre{border-radius:4px;overflow-x:auto;padding:1em;font-size:.8125em}
@media screen and (min-width:768px){.literalblock pre,.listingblock>.content>pre{font-size:.90625em}}
@media screen and (min-width:1280px){.literalblock pre,.listingblock>.content>pre{font-size:1em}}
.literalblock pre,.listingblock>.content>pre:not(.highlight),.listingblock>.content>pre[class=highlight],.listingblock>.content>pre[class^="highlight "]{background:#f7f7f8}
.literalblock.output pre{color:#f7f7f8;background:rgba(0,0,0,.9)}
.listingblock>.content{position:relative}
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:inherit;opacity:.5}
.listingblock:hover code[data-lang]::before{display:block}
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:inherit;opacity:.5}
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.prettyprint{background:#f7f7f8}
pre.prettyprint .linenums{line-height:1.45;margin-left:2em}
pre.prettyprint li{background:none;list-style-type:inherit;padding-left:0}
pre.prettyprint li code[data-lang]::before{opacity:1}
pre.prettyprint li:not(:first-child) code[data-lang]::before{display:none}
table.linenotable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.linenotable td[class]{color:inherit;vertical-align:top;padding:0;line-height:inherit;white-space:normal}
table.linenotable td.code{padding-left:.75em}
table.linenotable td.linenos,pre.pygments .linenos{border-right:1px solid;opacity:.35;padding-right:.5em;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
pre.pygments span.linenos{display:inline-block;margin-right:.75em}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock:not(.excerpt)>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
.verseblock{margin:0 1em 1.25em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans-serif;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
.quoteblock.excerpt>blockquote,.quoteblock .quoteblock{padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
.quoteblock.excerpt,.quoteblock .quoteblock{margin-left:0}
.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;font-size:.85rem;text-align:left;margin-right:0}
p.tableblock:last-child{margin-bottom:0}
td.tableblock>.content{margin-bottom:1.25em;word-wrap:anywhere}
td.tableblock>.content>:last-child{margin-bottom:-1.25em}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>*>tr>*{border-width:1px}
table.grid-cols>*>tr>*{border-width:0 1px}
table.grid-rows>*>tr>*{border-width:1px 0}
table.frame-all{border-width:1px}
table.frame-ends{border-width:1px 0}
table.frame-sides{border-width:0 1px}
table.frame-none>colgroup+*>:first-child>*,table.frame-sides>colgroup+*>:first-child>*{border-top-width:0}
table.frame-none>:last-child>:last-child>*,table.frame-sides>:last-child>:last-child>*{border-bottom-width:0}
table.frame-none>*>tr>:first-child,table.frame-ends>*>tr>:first-child{border-left-width:0}
table.frame-none>*>tr>:last-child,table.frame-ends>*>tr>:last-child{border-right-width:0}
table.stripes-all>*>tr,table.stripes-odd>*>tr:nth-of-type(odd),table.stripes-even>*>tr:nth-of-type(even),table.stripes-hover>*>tr:hover{background:#f8f8f7}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
ul.unstyled,ol.unstyled{margin-left:0}
li>p:empty:only-child::before{content:"";display:inline-block}
ul.checklist>li>p:first-child{margin-left:-1em}
ul.checklist>li>p:first-child>.fa-square-o:first-child,ul.checklist>li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
ul.checklist>li>p:first-child>input[type=checkbox]:first-child{margin-right:.25em}
ul.inline{display:flex;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
ul.inline>li{margin-left:1.25em}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
td.hdlist2{word-wrap:anywhere}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
.colist td:not([class]):first-child img{max-width:none}
.colist td:not([class]):last-child{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:4px solid #fff;box-shadow:0 0 0 1px #ddd}
.imageblock.left{margin:.25em .625em 1.25em 0}
.imageblock.right{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none;display:inline-block}
a.image object{pointer-events:none}
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
sup.footnote a,sup.footnoteref a{text-decoration:none}
sup.footnote a:active,sup.footnoteref a:active,#footnotes .footnote a:first-of-type:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background:#00fafa}
.black{color:#000}
.black-background{background:#000}
.blue{color:#0000bf}
.blue-background{background:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background:#fa00fa}
.gray{color:#606060}
.gray-background{background:#7d7d7d}
.green{color:#006000}
.green-background{background:#007d00}
.lime{color:#00bf00}
.lime-background{background:#00fa00}
.maroon{color:#600000}
.maroon-background{background:#7d0000}
.navy{color:#000060}
.navy-background{background:#00007d}
.olive{color:#606000}
.olive-background{background:#7d7d00}
.purple{color:#600060}
.purple-background{background:#7d007d}
.red{color:#bf0000}
.red-background{background:#fa0000}
.silver{color:#909090}
.silver-background{background:#bcbcbc}
.teal{color:#006060}
.teal-background{background:#007d7d}
.white{color:#bfbfbf}
.white-background{background:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background:#fafa00}
span.icon>.fa{cursor:default}
a span.icon>.fa{cursor:inherit}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background:rgba(0,0,0,.8);border-radius:50%;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]::after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt,summary{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,td.hdlist1,span.alt,summary{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background:#fffef7;border-color:#e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@page{margin:1.25cm .75cm}
@media print{*{box-shadow:none!important;text-shadow:none!important}
html{font-size:80%}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]{border-bottom:1px dotted}
abbr[title]::after{content:" (" attr(title) ")"}
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
thead{display:table-header-group}
svg{max-width:100%}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#header,#content,#footnotes,#footer{max-width:none}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span::before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]::before{display:block}
#footer{padding:0 .9375em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
@media amzn-kf8,print{#header>h1:first-child{margin-top:1.25rem}
.sect1{padding:0!important}
.sect1+.sect1{border:0}
#footer{background:none}
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{color:rgb(0,177,172);}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{color:rgb(0,177,172);}
#header>h1:first-child{color:rgb(0,177,172);}
details>summary::before{left:-2.25rem;} /* ... move triangle slightly left */
#itsheader {
/* border:2px solid red; */
float: left;
width: 100%;
}
#itsheader #header-text {
width: 90%;
float: left;
}
#itsheader #header-image {
padding-top: 10px;
float: right;
/* width: 20%; */
}
.h2-summary{font-size:2.3125em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:rgb(0,177,172);text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em}
.h3-summary{font-size:1.6875em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:rgb(0,177,172);text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em}
headingcode{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;}
.close-button{background-color:white;border-color:rgb(0,177,172);color:rgb(0,177,172);}
</style>
<script>
const openDetailsIfAnchorHidden = (evt) => {
const el = evt.target;
let details = document.querySelector(el.getAttribute("href"));
if ( !!details.offsetHeight || details.getClientRects().length ) return;
if (details != null)
{
details = details.closest("details:not(#" + details.id + ")");
if (details == null)
return;
const summary = details.querySelector("summary");
details.setAttribute('open', '');
}
}
window.addEventListener("load", function(event) {
[...document.querySelectorAll("[href^='#']")].forEach(
el => el.addEventListener("click", openDetailsIfAnchorHidden )
);
});
</script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<body class="article">
<div id="header">
<div id="itsheader">
<div id="header-text">
<h1>Linux Praktikumstermin 2025_04: User Handling / Processes</h1>
</div>
<div id="header-image"><img src="https://login.fh-aachen.de/idp/images/fh-logo-left.svg" height="120px" alt="FH Logo" id="topright"/></div>
</div>
<div class="details">
<span id="author" class="author">Prof. Dr. Andreas Claßen</span><br>
<span id="email" class="email"><a href="mailto:a.classen@fh-aachen.de">a.classen@fh-aachen.de</a></span><br>
</div>
<div id="toc" class="toc">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel1">
<li><a href="#sect_id_general_notes_with_respect_to_this_lab_exercise">General Notes with respect to this Lab Exercise</a>
<ul class="sectlevel2">
<li><a href="#sect_id_faq_concerning_lab_work_of_lehrgebiet_informationstechnische_systeme_its">FAQ concerning Lab Work of Lehrgebiet <em>Informationstechnische Systeme (ITS)</em></a></li>
<li><a href="#sect_id_on_your_own_computer_virtualbox_installation">On your own computer: VirtualBox Installation</a></li>
<li><a href="#sect_id_operating_the_virtualbox_vm">Operating the VirtualBox VM</a></li>
<li><a href="#sect_id_persistence_of_data_and_changes">Persistence of data and changes</a></li>
<li><a href="#sect_id_interrupting_the_lab_work_shut_down_the_vm_do_not_pause_it">Interrupting the Lab Work: Shut down the VM, do not pause it</a></li>
<li><a href="#sect_id_superuser_permissions">Superuser Permissions</a></li>
</ul>
</li>
<li><a href="#sect_id_download_and_setup_of_the_virtual_machine_vm_users_processes_vm"> Download and Setup of the Virtual Machine (VM) <code>Users_Processes_VM</code></a>
<ul class="sectlevel2">
<li><a href="#sect_id_starting_the_vm">Starting the VM</a></li>
<li><a href="#sect_id_account_data_for_the_vm">Account Data for the VM</a></li>
</ul>
</li>
<li><a href="#sect_id_result_logging">Result logging</a></li>
<li><a href="#sect_id_user_management_under_linux">User Management under Linux</a>
<ul class="sectlevel2">
<li><a href="#sect_id_user_identity">user identity</a></li>
<li><a href="#sect_id_user_switch_is_via_command_line_session">user switch is via command line session</a></li>
<li><a href="#sect_id_sudo">sudo</a></li>
<li><a href="#sect_id_useradd">useradd</a></li>
<li><a href="#sect_id_set_password">Set password</a></li>
<li><a href="#sect_id_renaming_the_new_user">Renaming the new user</a></li>
<li><a href="#sect_id_delete_the_new_user">Delete the new user</a></li>
</ul>
</li>
<li><a href="#sect_id_processes_and_signaling">Processes and Signaling</a>
<ul class="sectlevel2">
<li><a href="#sect_id_signal_processing_a_bash_script">Signal Processing, a bash script</a></li>
<li><a href="#sect_id_signal_processing_several_bash_scripts">signal processing, several bash scripts</a></li>
</ul>
</li>
<li><a href="#sect_id_pid_namespaces_using_unshare">PID namespaces using <code>unshare</code></a></li>
<li><a href="#sect_id_upload_of_console_log_file_and_completion_of_this_lab">Upload of console log file and completion of this lab</a></li>
</ul>
</div>
</div>
<div id="content">
<div class="sect1"><details id="sect_id_general_notes_with_respect_to_this_lab_exercise">
<summary class="h2-summary">General Notes with respect to this Lab Exercise</summary>
<div class="sectionbody">
<div class="sect2"><details id="sect_id_faq_concerning_lab_work_of_lehrgebiet_informationstechnische_systeme_its">
<summary class="h3-summary">FAQ concerning Lab Work of Lehrgebiet <em>Informationstechnische Systeme (ITS)</em></summary>
<div class="paragraph">
<p>As the technical setup (using VirtualBox Virtual Machines) is similar
in several of Prof. Classen&#8217;s lectures / labs, we provide shared FAQ answers
in a separate, shared Ilias course at
<a href="https://www.ili.fh-aachen.de/goto_elearning_crs_367289.html">Support für die WF Praktika Prof. Claßen</a>.
Feel free to become a member of that Ilias course.</p>
</div>
<div class="paragraph">
<p>A
<a href="https://www.ili.fh-aachen.de/ilias.php?baseClass=ilWikiHandlerGUI&amp;ref_id=367292&amp;cmd=view">Wiki</a>
there provides FAQ answers
related to the technical setup of the Prof. Classen labs.
New FAQ answers will be added on demand.
If you have problems creating and starting the VM,
first check the information in our FAQ.
In particular, the points on the topic of activating hardware virtualization on Windows systems.</p>
</div>
<div class="paragraph">
<p>Specific questions specifically related
to one module' lab only will however not be answered there, but in the Ilias of the specific module
instead. Only questions that are valid for multiple / all of the labs will be handled
via the shared Support Wiki.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_faq_concerning_lab_work_of_lehrgebiet_informationstechnische_systeme_its').open=false">(close: FAQ concerning Lab Work of Lehrgebiet <em>Informationstechnische Systeme (ITS)</em>)</button>
</details></div>
<div class="sect2"><details id="sect_id_on_your_own_computer_virtualbox_installation">
<summary class="h3-summary">On your own computer: VirtualBox Installation</summary>
<div class="paragraph">
<p>VirtualBox Version 7.x is installed on the terminal computers.</p>
</div>
<div class="paragraph">
<p>If you are working on your own computer,
so you should also install and use the latest version of Virtualbox 7.x.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_on_your_own_computer_virtualbox_installation').open=false">(close: On your own computer: VirtualBox Installation)</button>
</details></div>
<div class="sect2"><details id="sect_id_operating_the_virtualbox_vm">
<summary class="h3-summary">Operating the VirtualBox VM</summary>
<div class="paragraph">
<p>With VirtualBox, the mouse and keyboard may be "caught" in the VM,
as soon as you click in the console window.
You can then "release" it by pressing the right <code>Ctrl</code> key.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_operating_the_virtualbox_vm').open=false">(close: Operating the VirtualBox VM)</button>
</details></div>
<div class="sect2"><details id="sect_id_persistence_of_data_and_changes">
<summary class="h3-summary">Persistence of data and changes</summary>
<div class="paragraph">
<p>The changes in the virtual machine are persistent
even if you have to shut down or reboot the virtual machine during the lab exercises.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_persistence_of_data_and_changes').open=false">(close: Persistence of data and changes)</button>
</details></div>
<div class="sect2"><details id="sect_id_interrupting_the_lab_work_shut_down_the_vm_do_not_pause_it">
<summary class="h3-summary">Interrupting the Lab Work: Shut down the VM, do not pause it</summary>
<div class="paragraph">
<p>If you need to interrupt your lab work,
please do not pause the VM,
instead, shut down the VM.
Otherwise, when paused, the VM will not have a
working network connection when you continue your work.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_interrupting_the_lab_work_shut_down_the_vm_do_not_pause_it').open=false">(close: Interrupting the Lab Work: Shut down the VM, do not pause it)</button>
</details></div>
<div class="sect2"><details id="sect_id_superuser_permissions">
<summary class="h3-summary">Superuser Permissions</summary>
<div class="paragraph">
<p>Many of the commands and file content changes in the following exercises
require superuser (<code>root</code>) permissions, because they impact general system settings. In many cases, this is explicitly mentioned in the explanation of the respective exercise.
We do however expect you to understand the concept,
so therefore there might be cases where you are expected to recognize and handle this yourself.
As a general hint: should you get error messages like <code>command not found</code> or <code>Permission denied</code>
when issueing a command, this might be an indication
that the respective command needs to be executed as
<code>root</code> superuser.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_superuser_permissions').open=false">(close: Superuser Permissions)</button>
</details></div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_general_notes_with_respect_to_this_lab_exercise').open=false">(close: General Notes with respect to this Lab Exercise)</button>
</details></div>
<div class="sect1"><details id="sect_id_download_and_setup_of_the_virtual_machine_vm_users_processes_vm">
<summary class="h2-summary"> Download and Setup of the Virtual Machine (VM) <headingcode>Users_Processes_VM</headingcode></summary>
<div class="sectionbody">
<details>
<summary class="title"><strong>On the FH Aachen PCs:</strong></summary>
<div class="content">
<div class="paragraph">
<p>Start VirtualBox.</p>
</div>
<div class="paragraph">
<p><strong>Importing the appliance for the ITS-VM ("ITS" == "Lehrgebiet Informationstechnische Systeme, Prof. Claßen"):</strong></p>
</div>
<div class="paragraph">
<p>Open the windows command shell <strong>cmd.exe</strong> by clicking on the menu in the bottom left corner, then "blindly" type in <strong>cmd</strong>, followed
by a left click onto <strong>cmd.exe</strong>.
Enter the following command into the shell:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="cmd"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>net use S: \\ad.fh-aachen.de\files\FB05\StudiShare
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>You should now see a new drive <code>S:</code> in the explorer.</p>
</div>
<div class="paragraph">
<p>=== Importing the appliance for the VM) <code>Users_Processes_VM</code></p>
</div>
<div class="paragraph">
<p>In VirtualBox menu <code>file</code> :
<code>import appliance</code>, select <code>ITS_Client_debian12_AMD64_V02.ova</code> in
<code>S:\Classen\VM_OVAs\</code> ,
click <code>Next</code>,
change <code>name</code> setting to <code>Users_Processes_VM</code>.</p>
</div>
<div class="paragraph">
<p>On FH terminal room computers:
change <code>virtual disk image</code> to
<code>D:\VMs\Users_Processes_VM.vmdk</code>.</p>
</div>
<div class="admonitionblock important">
<table>
<tr>
<td class="icon">
<i class="fa icon-important" title="Important"></i>
</td>
<td class="content">
<div class="title">Assign a new MAC address</div>
Important (on all computers):
Make sure to set the checkbox
<code>Assign new MAC addresses for all network cards</code>,
alternatively go to <code>MAC Address Policy</code>
and set <code>Include all network adapter MAC addresses</code>.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Finally click on <code>Import</code>.</p>
</div>
</div>
</details>
<details>
<summary class="title"><strong>On your private computer:</strong></summary>
<div class="content">
<div class="paragraph">
<p>Download <code>ITS_Client_debian12_AMD64_V02.ova</code> from
<a href="https://fh-aachen.sciebo.de/s/voHfcjRsXAfYbfJ" class="bare">https://fh-aachen.sciebo.de/s/voHfcjRsXAfYbfJ</a></p>
</div>
<div class="paragraph">
<p>In VirtualBox menu <code>file</code> :
<code>import appliance</code>, select <code>ITS_Client_debian12_AMD64_V02.ova</code>
from your local download folder,
click <code>Next</code>,
change <code>name</code> setting to <code>Users_Processes_VM</code>.</p>
</div>
<div class="admonitionblock important">
<table>
<tr>
<td class="icon">
<i class="fa icon-important" title="Important"></i>
</td>
<td class="content">
<div class="title">Assign a new MAC address</div>
Important (on all computers):
Make sure to set the checkbox
<code>Assign new MAC addresses for all network cards</code>,
alternatively go to <code>MAC Address Policy</code>
and set <code>Include all network adapter MAC addresses</code>.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Finally click on <code>Import</code>.</p>
</div>
</div>
</details>
<div class="sect2"><details id="sect_id_starting_the_vm">
<summary class="h3-summary">Starting the VM</summary>
<div class="paragraph">
<p>Start the VM.</p>
</div>
<div class="paragraph">
<p>Should you get an error message when starting the VM regarding
<code>VirtualBox Host-Only Ethernet Adapter is not a Host-Only Network</code>
(or similar), the name of the host-only network in your VirtualBox installation differs from
the name expected by the VM definition.
For the VM refusing to start, click on <code>Configure</code> (upper-left of the
VirtualBox window) and a settings window will open for that VM.
Click on <code>OK</code> without changing any VM settings.
This will nevertheless update the VM settings and correct the problem.
Start the VM again.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_starting_the_vm').open=false">(close: Starting the VM)</button>
</details></div>
<div class="sect2"><details id="sect_id_account_data_for_the_vm">
<summary class="h3-summary">Account Data for the VM</summary>
<div class="paragraph">
<p>The user accounts of the VM are:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>User: <code>itsadmin</code>, Password: <code>itsadmin</code></p>
</li>
<li>
<p>Administrator-User: <code>root</code>, Password: <code>itsadmin</code></p>
</li>
</ul>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_account_data_for_the_vm').open=false">(close: Account Data for the VM)</button>
</details></div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_download_and_setup_of_the_virtual_machine_vm_users_processes_vm').open=false">(close: Download and Setup of the Virtual Machine (VM) <headingcode>Users_Processes_VM</headingcode>)</button>
</details></div>
<div class="sect1"><details id="sect_id_result_logging">
<summary class="h2-summary">Result logging</summary>
<div class="sectionbody">
<div class="paragraph">
<p>To show that you have successfully finished this lab, please upload a log file to ILIAS. The log file
will contain all commands that you typed in during your session and all system outputs.</p>
</div>
<div class="paragraph">
<p>It is not a problem if there are commands in the logfile that did not work on first try or were typed in wrong,
we just want to see that at some point all the required commands were used correctly.</p>
</div>
<div class="paragraph">
<p>Open a terminal in the virtual
machine and start the logging by using the <code>script</code> command
(option <code>-a</code> means: <em>append to file</em> in case the file is non-empty
when the logging to file is started):</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>script<span style="color: #bbbbbb"> </span>-a<span style="color: #bbbbbb"> </span>Linux-praktikum-04.log
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>The following output should appear:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>Script<span style="color: #bbbbbb"> </span>started,<span style="color: #bbbbbb"> </span>file<span style="color: #bbbbbb"> </span>is<span style="color: #bbbbbb"> </span>Linux-praktikum-04.log
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>From now on, please only use the console in which the logger is running, so that everything gets logged correctly!</p>
</div>
<div class="paragraph">
<p>If you want to interrupt the lab and shut down the virtual machine, e.g. to take a break, or if you get interrupted somehow,
you have to restart the logging when you continue.
Choose a new / different file name.
Finally, use a text editor to merge the resulting log files into a single file in the correct order.</p>
</div>
<div class="paragraph">
<p>After completing the lab, upload the complete result files to the Ilias course.</p>
</div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_result_logging').open=false">(close: Result logging)</button>
</details></div>
<div class="sect1"><details id="sect_id_user_management_under_linux">
<summary class="h2-summary">User Management under Linux</summary>
<div class="sectionbody">
<div class="paragraph">
<p>Log into the VM:</p>
</div>
<div class="paragraph">
<p>User: <code>itsadmin</code>, password: <code>itsadmin</code></p>
</div>
<div class="paragraph">
<p>Open a terminal window with a command line session, e.g. via the menu at the bottom left, menu item <code>Terminal</code>.</p>
</div>
<div class="sect2"><details id="sect_id_user_identity">
<summary class="h3-summary">user identity</summary>
<div class="paragraph">
<p>Enter the command <code>whoami</code> to determine the user identity under which you are currently working.</p>
</div>
<div class="paragraph">
<p>Enter the command <code>id</code> in order to determine the user identity under which you are currently working in another way.</p>
</div>
<div class="paragraph">
<p>Compare the output of the two commands. Note that the <code>id</code> command also provides you with the numeric user ID of the user.</p>
</div>
<div class="paragraph">
<p>You do not need to record the results of actions such as "&#8230;&#8203; compare &#8230;&#8203;" or "&#8230;&#8203; analyze &#8230;&#8203;" in any form, i.e. you do not have to "provide written evidence" that you also carried out these analyzes &#8230;&#8203;</p>
</div>
<div class="paragraph">
<p>Change to the identity of the <code>root</code> user by entering</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>su<span style="color: #bbbbbb"> </span>-<span style="color: #bbbbbb"> </span>root
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>Enter the password <code>itsadmin</code> of the` root` user.</p>
</div>
<div class="paragraph">
<p>Use the <code>whoami</code> command to determine whether / that the change of user identity was successful.</p>
</div>
<div class="paragraph">
<p>Enter the <code>exit</code> command to end the session as user` root`.
You return to the session as the original user. Check this out.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_user_identity').open=false">(close: user identity)</button>
</details></div>
<div class="sect2"><details id="sect_id_user_switch_is_via_command_line_session">
<summary class="h3-summary">user switch is via command line session</summary>
<div class="paragraph">
<p>Open a second terminal window with a second command line session, e.g. via the <code>File</code> menu,` New Tab` entry.</p>
</div>
<div class="paragraph">
<p>Give the command there</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>su<span style="color: #bbbbbb"> </span>-<span style="color: #bbbbbb"> </span>root
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>and authenticate as <code>root</code>. Then enter <code>id</code> to check your user identity as` root` there.</p>
</div>
<div class="paragraph">
<p>By selecting the previous tab, switch to the first command line session that is still running and enter the <code>id</code> command there. Observe that the user change did not take place in the first session. This means that you are currently working under different user identities in the two command line sessions.</p>
</div>
<div class="paragraph">
<p>Use the second tab to switch back to the second command line session and enter the command <code>exit</code> there. This will switch you back to the identity of the <code>itsadmin</code> in this session; check this out. You are now working under the same user identity again in both sessions.</p>
</div>
<div class="paragraph">
<p>End the second session by entering the command <code>exit</code> there.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_user_switch_is_via_command_line_session').open=false">(close: user switch is via command line session)</button>
</details></div>
<div class="sect2"><details id="sect_id_sudo">
<summary class="h3-summary">sudo</summary>
<div class="paragraph">
<p>In the now only command line session, check under which user identity you are currently working and make sure that it is not the identity of the <code>root</code> user.</p>
</div>
<div class="paragraph">
<p>As a non-root user, try to update the list of installable software packages using the following command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>apt-get<span style="color: #bbbbbb"> </span>update
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>Notice that you get permission denied error messages. The reason for this is that the package lists are classified as system configuration files and can therefore only be updated by the <code>root</code> user (as administrator user).</p>
</div>
<div class="paragraph">
<p>The <code>sudo</code> software is already installed on the lab VM. It is also configured in such a way that the <code>itsadmin</code> user can use` sudo` to execute any command under any user identity (i.e. also under the identity of the <code>root</code> user) without having to authenticate by entering a password.</p>
</div>
<div class="paragraph">
<p>Enter the <code>whoami</code> command again and then use the` sudo --user = root &#8230;&#8203; <code>command to execute the above command to update the package lists under the</code> root` identity.</p>
</div>
<div class="paragraph">
<p>Then enter <code>whoami</code> again to determine that you are back in the original user identity after executing the` sudo` command, i.e. that the user change with <code>sudo</code> only takes place for the specified command.</p>
</div>
<div class="paragraph">
<p>If the <code>sudo</code> command does not specify a target user identity via` --user = &#8230;&#8203; <code>,</code> root` is assumed as the target user. So enter the command again, but this time without specifying the target user:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>sudo<span style="color: #bbbbbb"> </span>apt-get<span style="color: #bbbbbb"> </span>update
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>Question (please answer this question yourself; answer does not have to be submitted):
Why do the following two commands produce different outputs?</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span>
<span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">2</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>whoami
sudo<span style="color: #bbbbbb"> </span>whoami
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_sudo').open=false">(close: sudo)</button>
</details></div>
<div class="sect2"><details id="sect_id_useradd">
<summary class="h3-summary">useradd</summary>
<div class="paragraph">
<p>Create a new user <code>dummy1</code> using the following command:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>sudo<span style="color: #bbbbbb"> </span>useradd<span style="color: #bbbbbb"> </span>--create-home<span style="color: #bbbbbb"> </span>dummy1
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>Since creating a new user in the system is a system administration task, it can only be done by the <code>root</code> user. Therefore the <code>useradd</code> command must be executed under the identity of the` root` user, or the <code>sudo</code> command is used to execute exactly this command under the identity of the` root` user.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_useradd').open=false">(close: useradd)</button>
</details></div>
<div class="sect2"><details id="sect_id_set_password">
<summary class="h3-summary">Set password</summary>
<div class="paragraph">
<p>Set the password <code>dummy1pw</code> for the new user` dummy1` using the command &#8230;&#8203;</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>sudo<span style="color: #bbbbbb"> </span>passwd<span style="color: #bbbbbb"> </span>dummy1
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>... and by entering the new password twice.</p>
</div>
<div class="paragraph">
<p>The new user is now “ready to use”. Change to his user identity using the command &#8230;&#8203;</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>su<span style="color: #bbbbbb"> </span><span style="color: #bbbbbb"> </span>dummy1
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>... and entering his newly set password.
Check that you are in fact now working under the new user&#8217;s identity.</p>
</div>
<div class="paragraph">
<p>Use the <code>id</code> command to find out the user ID of the new user. Make a note of this user ID.</p>
</div>
<div class="paragraph">
<p>Then create a new text file <code>file1.txt</code> with any content in the home directory` / home / dummy1` of this new user (you are probably located there anyway).
Let yourself be &#8230;&#8203;</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>ls<span style="color: #bbbbbb"> </span>-l<span style="color: #bbbbbb"> </span>/home/dummy1
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>... output the directory contents and make sure that the files there belong to user <code>dummy1</code>.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span>
<span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">2</span>
<span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">3</span>
<span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">4</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>su<span style="color: #bbbbbb"> </span><span style="color: #bbbbbb"> </span>root
<span style="color: #3D7B7B; font-style: italic"># ... dann das Passwort “itsadmin” des root Benutzers eingeben</span>
sed<span style="color: #bbbbbb"> </span>-i<span style="color: #bbbbbb"> </span><span style="color: #BA2121">&quot;s/dummy1/willi/g&quot;</span><span style="color: #bbbbbb"> </span>/etc/passwd
<span style="color: #008000">exit</span><span style="color: #bbbbbb"> </span><span style="color: #3D7B7B; font-style: italic"># ... wechselt zurück zum Benutzer dummy1 / willi</span>
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_set_password').open=false">(close: Set password)</button>
</details></div>
<div class="sect2"><details id="sect_id_renaming_the_new_user">
<summary class="h3-summary">Renaming the new user</summary>
<div class="paragraph">
<p>Use the following commands to change the user name in the central file <code>/ etc / passwd</code>, in which the user IDs and user names are stored:</p>
</div>
<div class="paragraph">
<p>Let yourself be again by means of &#8230;&#8203;</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>ls<span style="color: #bbbbbb"> </span>-l<span style="color: #bbbbbb"> </span>/home/dummy1
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>... output the directory contents and make sure that the files there now belong to the user <code>willi</code>.
Only the user ID of the file owner was saved and this has not changed.</p>
</div>
<div class="paragraph">
<p>Also check under which user identity you are now working.</p>
</div>
<div class="paragraph">
<p>Note that the directory name of the home directory <code>/home/dummy1</code> has not changed as a result of the renaming.</p>
</div>
<div class="paragraph">
<p>Undo the renaming (is important, otherwise deleting the user will not work properly because of the inconsistencies):</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span>
<span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">2</span>
<span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">3</span>
<span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">4</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>su<span style="color: #bbbbbb"> </span><span style="color: #bbbbbb"> </span>root
<span style="color: #3D7B7B; font-style: italic"># ... dann das Passwort “itsadmin” des `root` Benutzers eingeben</span>
sed<span style="color: #bbbbbb"> </span>-i<span style="color: #bbbbbb"> </span><span style="color: #BA2121">&quot;s/willi/dummy1/ g&quot;</span><span style="color: #bbbbbb"> </span>/etc/passwd
<span style="color: #008000">exit</span><span style="color: #bbbbbb"> </span><span style="color: #3D7B7B; font-style: italic"># ... wechselt zurück zum Benutzer dummy1 / willi</span>
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>Exit the new command line after these commands with <code>exit</code>. The new tab closes with it.</p>
</div>
<div class="paragraph">
<p>Check that you are working under the original user identity <code>dummy1</code> in the first tab.</p>
</div>
<div class="paragraph">
<p>Leave the command line session under the new user identity using the <code>exit</code> command.</p>
</div>
<div class="paragraph">
<p>Check that you are working under the original user identity <code>itsadmin</code> again.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_renaming_the_new_user').open=false">(close: Renaming the new user)</button>
</details></div>
<div class="sect2"><details id="sect_id_delete_the_new_user">
<summary class="h3-summary">Delete the new user</summary>
<div class="paragraph">
<p>Delete the new user by entering the command &#8230;&#8203;</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>sudo<span style="color: #bbbbbb"> </span>deluser<span style="color: #bbbbbb"> </span>--remove-home<span style="color: #bbbbbb"> </span>--quiet<span style="color: #bbbbbb"> </span>dummy1
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_delete_the_new_user').open=false">(close: Delete the new user)</button>
</details></div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_user_management_under_linux').open=false">(close: User Management under Linux)</button>
</details></div>
<div class="sect1"><details id="sect_id_processes_and_signaling">
<summary class="h2-summary">Processes and Signaling</summary>
<div class="sectionbody">
<div class="paragraph">
<p>Use <code>ps</code> to display the processes of the current user that are connected to a terminal (input / output, i.e. keyboard and screen).</p>
</div>
<div class="paragraph">
<p>In a Bash command line, the variable <code>$$</code> stores the process ID of this command line.
So use <code>echo $$</code> to output the value of this variable and compare the process ID: s.</p>
</div>
<div class="paragraph">
<p>The <code>pgrep</code> command searches for all processes with a certain name and outputs their process ID: s.
So use <code>pgrep bash</code> to search for the process ID: s of all running command lines.</p>
</div>
<div class="paragraph">
<p>Open a second tab in the terminal and use <code>pgrep bash</code> to display the process ID: s of all Bash command lines.
Close the second tab with <code>exit</code> and enter the command` pgrep bash` one last time.</p>
</div>
<div class="paragraph">
<p>Display the list of all processes using <code>ps aux</code>.
Notice that there are now many more processes from this user listed.
Analyze under which user identities processes were started in the system.</p>
</div>
<div class="paragraph">
<p>Processes are arranged hierarchically in Bash: every process except for the <code>init</code> process has a parent process.
Use <code>pstree</code> to display the hierarchical structure of all processes.</p>
</div>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<i class="fa icon-tip" title="Tip"></i>
</td>
<td class="content">
If <code>pstree</code> is not installed: <code>sudo apt install psmisc</code>
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Start an interactive Python interpreter with the command <code>python3</code>.
Open a second tab in the terminal and determine the process ID of this Python process there.
Send a signal to the process to terminate it (check that the process is terminated).
Then close the second tab again using exit.</p>
</div>
<div class="sect2"><details id="sect_id_signal_processing_a_bash_script">
<summary class="h3-summary">Signal Processing, a bash script</summary>
<div class="paragraph">
<p>Write a bash script which first outputs the current date and time in an endless loop (command <code>date</code> without parameters) and then always sleeps for 60 seconds (` sleep`).</p>
</div>
<div class="paragraph">
<p>Whenever <code>Ctrl-C</code> is pressed, the program should display` Thanks for pressing Ctrl-C` and exit.
Other signals should not be intercepted by the program.</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_signal_processing_a_bash_script').open=false">(close: Signal Processing, a bash script)</button>
</details></div>
<div class="sect2"><details id="sect_id_signal_processing_several_bash_scripts">
<summary class="h3-summary">signal processing, several bash scripts</summary>
<div class="paragraph">
<p>Create two bash scripts <code>child_one.sh</code> and` child_two.sh`, which both execute a <code>sleep 5</code> in an endless loop,
i.e. "sleep" again and again for 5 seconds at a time.
Furthermore, these scripts should have a signal handler that handles the <code>TERM</code> signal and then terminates the process with` exit`. Make both scripts executable.</p>
</div>
<div class="paragraph">
<p>Create another bash script <code>parent.sh</code>, which also executes a` sleep 5` in an endless loop and starts the two child scripts in the background before the loop is executed.
The parent script should also have a signal handler that handles the <code>TERM</code> signal and terminates the process with` exit`. Make this script executable too.</p>
</div>
<div class="paragraph">
<p>Start the parent script and check (in another command line) that all three scripts are running. Send the <code>TERM</code> signal to the parent script. It should end.</p>
</div>
<div class="paragraph">
<p>Check whether the child scripts are still running or not. If so, terminate the child scripts by sending the <code>TERM</code> signal to each of the child scripts as well.</p>
</div>
<div class="paragraph">
<p>Edit the parent script: The child scripts should no longer be started in the background, but in the foreground. Start the parent script and check (in another command line) which of the scripts are running.</p>
</div>
<div class="paragraph">
<p>Send the <code>TERM</code> signal to the parent script. What is happening? (please answer this question yourself; answer does not have to be submitted)</p>
</div>
<div class="paragraph">
<p>Send the <code>TERM</code> signal to all running child scripts (how many are there? &#8658; Please answer this question yourself; answer does not have to be submitted).
What happens to the child script and the parent script?</p>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_signal_processing_several_bash_scripts').open=false">(close: signal processing, several bash scripts)</button>
</details></div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_processes_and_signaling').open=false">(close: Processes and Signaling)</button>
</details></div>
<div class="sect1"><details id="sect_id_pid_namespaces_using_unshare">
<summary class="h2-summary">PID namespaces using <headingcode>unshare</headingcode></summary>
<div class="sectionbody">
<div class="paragraph">
<p>Start a Python interpreter that does nothing but execute an infinite loop:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>python3<span style="color: #bbbbbb"> </span>-c<span style="color: #bbbbbb"> </span><span style="color: #BA2121">&quot;while True: import time ; time.sleep(2)&quot;</span><span style="color: #bbbbbb"> </span>&amp;
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>With the following command you can (still) see the running process of the Python interpreter:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>ps<span style="color: #bbbbbb"> </span>aux<span style="color: #bbbbbb"> </span>|<span style="color: #bbbbbb"> </span>grep<span style="color: #bbbbbb"> </span>python3
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>Start a Bash command line (shell) again in a PID namespace:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>sudo<span style="color: #bbbbbb"> </span>unshare<span style="color: #bbbbbb"> </span>--pid<span style="color: #bbbbbb"> </span>--mount-proc<span style="color: #bbbbbb"> </span>--fork<span style="color: #bbbbbb"> </span>/bin/bash
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>Now look whether the <code>python3</code> process is still visible in this shell:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>ps<span style="color: #bbbbbb"> </span>aux
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>In this PID namespace only the bash shell, which was "encapsulated" in the PID namespace, should now be visible, plus the <code>ps aux</code> command that was just executed while the" process list "output was being generated. The <code>python3</code> process, however, is no longer visible.</p>
</div>
<div class="paragraph">
<p>Also check that this shell "thinks" that it has Process-ID <code>1</code>. Under Unix-based systems, this is a special process ID, namely the ID of the first process (<code>init</code>) on a Unix computer, which is then responsible for starting all further processes on the computer. Our shell “thinks” that it is “alone on the computer” and that it is the “first process started” in its environment.</p>
</div>
<div class="paragraph">
<p>Exit the command line encapsulated in the PID namespace. This also ends the PID namespace itself:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span><span style="color: #008000">exit</span>
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>Quit the running Python interpreter:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>pkill<span style="color: #bbbbbb"> </span>python3
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_pid_namespaces_using_unshare').open=false">(close: PID namespaces using <headingcode>unshare</headingcode>)</button>
</details></div>
<div class="sect1"><details id="sect_id_upload_of_console_log_file_and_completion_of_this_lab">
<summary class="h2-summary">Upload of console log file and completion of this lab</summary>
<div class="sectionbody">
<div class="paragraph">
<p>When you have finalized your lab work, you need to end the logging by entering <code>exit</code> into your console. The following output should appear:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="pygments highlight" style="background: #f8f8f8;"><code data-lang="bash"><div class="lineno"><table class="linenotable"><tr><td class="linenos"><div class="linenodiv"><pre><span style="color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px;">1</span></pre></div></td><td class="code"><div><pre style="line-height: 125%;"><span></span>Script<span style="color: #bbbbbb"> </span><span style="color: #008000; font-weight: bold">done</span>,<span style="color: #bbbbbb"> </span>file<span style="color: #bbbbbb"> </span>is<span style="color: #bbbbbb"> </span>Linux-praktikum-04.log
</pre></div></td></tr></table></div></code></pre>
</div>
</div>
<div class="paragraph">
<p>Start a webbrowser inside the virtual machine and upload the log file to ILIAS, using this web browser.</p>
</div>
<div class="paragraph">
<p>Shut down the VM, remove the VM completely (<code>delete all files</code>) and end your session.</p>
</div>
</div>
<button class="close-button" onclick="document.getElementById('sect_id_upload_of_console_log_file_and_completion_of_this_lab').open=false">(close: Upload of console log file and completion of this lab)</button>
</details></div>
</div>
<div id="footer">
<div id="footer-text">
</div>
</div>
</body>
</html>