Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • asztrikx/linux-presentation
  • zoli0/linux-presentation
2 results
Show changes
Commits on Source (27)
image: kroniak/ssh-client
# image: kroniak/ssh-client
stages:
- generate
- build
- deploy
home:
variables:
CI_REGISTRY_IMAGE: ${CI_REGISTRY}/${CI_PROJECT_NAME}
KUBECONFIG_VAR_NAME: KUBECONFIG
# home:
# stage: deploy
# before_script:
# - eval $(ssh-agent -s)
# - echo "$SSH" | tr -d '\r' | ssh-add -
# - mkdir -p ~/.ssh/socket
# - chmod 700 ~/.ssh
# - cp .magic_ssh_config ~/.ssh/config
# script:
# # AFS magic incoming
# - ssh mikewashere@centaur.sch.bme.hu cp /afs/sch.bme.hu/home/mikewashere/.system/mikewashere.keytab /tmp/mikewashere.keytab
# - ssh mikewashere@centaur.sch.bme.hu kinit -k -t /tmp/mikewashere.keytab mikewashere
# - ssh mikewashere@centaur.sch.bme.hu rm /tmp/mikewashere.keytab
# - ssh mikewashere@centaur.sch.bme.hu aklog sch.bme.hu -k SCH.BME.HU
# - ssh mikewashere@centaur.sch.bme.hu mkdir -p /home/mikewashere/public_html/linux
# # actual work
# - scp -r $PWD/* mikewashere@centaur.sch.bme.hu:/home/mikewashere/public_html/linux/
# - ssh mikewashere@centaur.sch.bme.hu env sh -c 'echo lolwut; cd public_html/linux; bash cirun.sh'
# only:
# refs:
# - master
gen_pres:
stage: generate
image:
name: marpteam/marp-cli
entrypoint: [""]
script:
- alias marp="node /home/marp/.cli/marp-cli.js"
- cd eloadas
- marp -o index.html presentation.md
artifacts:
paths:
- eloadas/index.html
container:
stage: build
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
before_script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(echo -n ${CI_REGISTRY_USER}:${CI_REGISTRY_PASSWORD} | base64)\"}}}" > /kaniko/.docker/config.json
script:
- |
/kaniko/executor --context ${CI_PROJECT_DIR} \
--dockerfile ${CI_PROJECT_DIR}/Dockerfile \
--destination ${CI_REGISTRY_IMAGE}:latest
only:
- master
except:
- tags
kubernetes:
stage: deploy
image:
name: harbor.sch.bme.hu/kszk/kube-tools:latest
entrypoint: [""]
before_script:
- eval $(ssh-agent -s)
- echo "$SSH" | tr -d '\r' | ssh-add -
- mkdir -p ~/.ssh/socket
- chmod 700 ~/.ssh
- cp .magic_ssh_config ~/.ssh/config
- chmod 600 ${!KUBECONFIG_VAR_NAME}
- export KUBECONFIG=${!KUBECONFIG_VAR_NAME}
script:
# AFS magic incoming
- ssh mikewashere@centaur.sch.bme.hu cp /afs/sch.bme.hu/home/mikewashere/.system/mikewashere.keytab /tmp/mikewashere.keytab
- ssh mikewashere@centaur.sch.bme.hu kinit -k -t /tmp/mikewashere.keytab mikewashere
- ssh mikewashere@centaur.sch.bme.hu rm /tmp/mikewashere.keytab
- ssh mikewashere@centaur.sch.bme.hu aklog sch.bme.hu -k SCH.BME.HU
- ssh mikewashere@centaur.sch.bme.hu mkdir -p /home/mikewashere/public_html/linux
# actual work
- scp -r $PWD/* mikewashere@centaur.sch.bme.hu:/home/mikewashere/public_html/linux/
- ssh mikewashere@centaur.sch.bme.hu env sh -c 'echo lolwut; cd public_html/linux; bash cirun.sh'
- kubectl rollout restart deployment linux-presentation
only:
refs:
- master
\ No newline at end of file
- master
except:
- tags
......@@ -2,4 +2,7 @@ Host centaur.sch.bme.hu
StrictHostKeyChecking no
ControlMaster auto
ControlPersist yes
ControlPath ~/.ssh/socket/%r@%h:%p
\ No newline at end of file
ControlPath ~/.ssh/socket/%r@%h:%p
KexAlgorithms +diffie-hellman-group1-sha1
Ciphers +3des-cbc,aes128-cbc,aes192-cbc,aes256-cbc,aes128-ctr,aes192-ctr,aes256-ctr
HostKeyAlgorithms +ssh-rsa
FROM nginx:1.21.6
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY . /usr/share/nginx/html
......@@ -33,7 +33,8 @@
- Pár fontosabb parancsról
- Egy (web)szerver üzemeltetéséhez szükséges tudásról
## Anyag előadásonként
## Jegyzet
- [Linux alapok](linux%20alapok.md)
- [Szerver kezelés](szerver%20kezelés.md)
- [1. Videó](első%20videó.md)
- [2. Videó](második%20videó.md)
This diff is collapsed.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="generator" content="pandoc">
<meta name="author" content="Tóth Miklós">
<meta name="dcterms.date" content="2021-03-21">
<title>Linux előadás</title>
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link rel="stylesheet" href="https://unpkg.com/reveal.js@^4//dist/reset.css">
<link rel="stylesheet" href="https://unpkg.com/reveal.js@^4//dist/reveal.css">
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
<link rel="stylesheet" href="https://unpkg.com/reveal.js@^4//dist/theme/black.css" id="theme">
</head>
<body>
<div class="reveal">
<div class="slides">
<section id="title-slide">
<h1 class="title">Linux előadás</h1>
<p class="author">Tóth Miklós</p>
<p class="date">March 21, 2021</p>
</section>
<section id="pár-egyéb-hasznos-parancs" class="slide level1">
<h1>Pár egyéb hasznos parancs</h1>
</section>
<section id="wc" class="slide level1">
<h1><code>wc</code></h1>
<ul>
<li>word counter</li>
<li>szavak, sorok számolása</li>
</ul>
<pre class="shell-session"><code>[mike@thinkyboi ~]$ echo &quot;egy két há&quot; | wc -w
3
[mike@thinkyboi ~]$ echo &quot;egy két há&quot; | wc -l
1
[mike@thinkyboi ~]$ echo &quot;egy
két
&quot; | wc -l
3</code></pre>
</section>
<section id="tr" class="slide level1">
<h1><code>tr</code></h1>
<ul>
<li>karaktereket cserél ki vagy töröl</li>
</ul>
<pre class="shell-session"><code>[mike@thinkyboi ~]$ echo &quot;almafa&quot; | tr &quot;a&quot; &quot;e&quot;
elmefe
[mike@thinkyboi ~]$ echo &quot;almafa körtefa eperfa&quot; | tr &quot; &quot; &quot;\n&quot;
almafa
körtefa
eperfa
[mike@thinkyboi ~]$ echo &quot;almafa&quot; | tr -d &quot;a&quot;
lmf</code></pre>
</section>
<section id="curl" class="slide level1">
<h1><code>curl</code></h1>
<ul>
<li>http shellből</li>
<li>stdout-ra írja ki, kivéve, ha van <code>-o</code> kapcsoló</li>
</ul>
<pre class="shell-session"><code>[mike@thinkyboi ~]$ curl https://home.sch.bme.hu/~mikewashere/linux/eloadas.md | grep stdout
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 777 100 777 0 0 33782 0 --:--:-- --:--:-- --:--:-- 33782
- stdout-ra írja ki
[mike@thinkyboi ~]$ curl https://home.sch.bme.hu/~mikewashere/linux/eloadas.md -o eloadas.md
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 777 100 777 0 0 31080 0 --:--:-- --:--:-- --:--:-- 31080
[mike@thinkyboi ~]$ </code></pre>
</section>
<section id="sh-fileok" class="slide level1">
<h1><code>.sh</code> fileok</h1>
<ul>
<li>shell automatizálása</li>
<li>mintha soronként kiadnánk a parancsokat</li>
</ul>
</section>
<section id="egy-.sh-file" class="slide level1">
<h1>egy <code>.sh</code> file</h1>
<pre class="shell-session"><code>[mike@thinkyboi tmp]$ vi test.sh
[mike@thinkyboi tmp]$ cat test.sh
echo &quot;ez simán működik&quot; | cowsay
curl &quot;https://home.sch.bme.hu/~mikewashere/linux/eloadas.md&quot; | grep &quot;soronként&quot; | cowsay
[mike@thinkyboi tmp]$ bash test.sh
_____________________
&lt; ez simán működik &gt;
---------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1596 100 1596 0 0 69391 0 --:--:-- --:--:-- --:--:-- 69391
_________________________________
/ - mintha soronként kiadnánk a \
\ parancsokat /
---------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
[mike@thinkyboi tmp]$ </code></pre>
</section>
<section id="shebang" class="slide level1">
<h1>shebang</h1>
<ul>
<li>file futtatásakor a kernel meglesi mi van az elején</li>
<li>el tudunk indítani scripteket programként</li>
<li><code>#!&lt;program&gt;</code></li>
</ul>
</section>
<section id="shebang-1" class="slide level1">
<h1>shebang</h1>
<pre class="shell-session"><code>[mike@thinkyboi tmp]$ vi test.sh
[mike@thinkyboi tmp]$ cat test.sh
#!/bin/bash
echo &quot;ez simán működik&quot; | cowsay
curl &quot;https://home.sch.bme.hu/~mikewashere/linux/eloadas.md&quot; | grep &quot;soronként&quot; | cowsay
[mike@thinkyboi tmp]$ chmod +x test.sh
[mike@thinkyboi tmp]$ ./test.sh
_____________________
&lt; ez simán működik &gt;
---------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1596 100 1596 0 0 11319 0 --:--:-- --:--:-- --:--:-- 11319
_________________________________
/ - mintha soronként kiadnánk a \
\ parancsokat /
---------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
[mike@thinkyboi tmp]$ </code></pre>
</section>
<section id="tűzfal" class="slide level1">
<h1>tűzfal</h1>
<ul>
<li>a kernel belsejében -&gt; gyors, de low-level</li>
<li>iptables</li>
<li>kényelmesebb egy tűzfal-kezelő</li>
</ul>
</section>
<section id="ufw" class="slide level1">
<h1>UFW</h1>
<ul>
<li>uncomplicated firewall</li>
<li>egyszerű</li>
</ul>
<pre class="shell-session"><code>[mike@thinkyboi tmp]$ sudo ufw allow 80
Rules updated
Rules updated (v6)
[mike@thinkyboi tmp]$ sudo ufw allow https
Rules updated
Rules updated (v6)
[mike@thinkyboi tmp]$ sudo ufw enable</code></pre>
</section>
<section id="ssh-kulcsok" class="slide level1">
<h1>SSH kulcsok</h1>
<ul>
<li>biztonságosabb, mint egy jelszó</li>
<li>sok algoritmus, RSA, elliptikus görbék</li>
<li>publikus-privát</li>
<li>privát saját gépen, védve</li>
<li>publikus ott, ahova belépnénk</li>
<li><code>~/.ssh/authorized_keys</code></li>
</ul>
</section>
<section id="generálás" class="slide level1">
<h1>Generálás</h1>
<pre class="shell-session"><code>mike@thinkyboi:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mike/.ssh/id_rsa):
Created directory &#39;/home/mike/.ssh&#39;.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mike/.ssh/id_rsa
Your public key has been saved in /home/mike/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:tYZX08XEZfJP5j/um2Y9KUgG+jffe82ONwgzkt4p0hc mike@thinkyboi
The key&#39;s randomart image is:
+---[RSA 3072]----+
| .+*|
| . =o|
| . o . +|
| + o . +.|
| S * o|
| . = E .|
| + = B .o=|
| . = B ooBO|
| . + o.*XB|
+----[SHA256]-----+
mike@thinkyboi:~$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDjAZMAbpNutuc/ZgHWMcjWcPQOC0d8+JrDaHMnxZfRtfdyrgZDfPmMER95148JVEfkjjhur8a+IEfQM59o+yq95+yNvJFT6Nr5JzHK8dC5IuDvvEVNrKPwmW4UIgm1e5b95pGivJ5cnoiXevtp87seaxh0DlZFONKUeIFnwyDBUII7mRyXDn7MrFlAcxXtlZnSSCXXLGUMZI7nldiyRI9gXlZYCpfA8XrXrnM6JAIA+6VozhJurAKhygV6rH5yD4Vg+/Bs+wigywE3U79gbqpPzRegmxzKdgv+NNKV900DQVYNzvCU5o6q9d2amU+CDSw6KjU+4SLFOgZ3myXCyE9er3aaROj22sQdPwv8CnwtZstRibpp2SU627J4Vr7caPl8wrZcGvmXgD50mPh9Kdd+Yr5WJFSaAcog082aWBdrB3Qr9LM5DgcWulyDmUMmjA2WWCJN+t6vDT5d+2mYeBiZ2OY5ZkHyUjD6GVGBOZP/lP9EAxi3XwoM3V8TwoEgLD8= mike@thinkyboi
mike@thinkyboi:~$ </code></pre>
</section>
<section id="operátor" class="slide level1">
<h1><code>&gt;&gt;</code> operátor</h1>
<ul>
<li><code>&gt;</code> tesója</li>
<li>filehoz appendál</li>
</ul>
<pre class="shell"><code>curl https://git.sch.bme.hu/mikewashere.keys &gt;&gt; ~/.ssh/authorized_keys</code></pre>
</section>
<section id="házi-feladatok" class="slide level1">
<h1>Házi Feladatok</h1>
</section>
<section id="alap-házi" class="slide level1">
<h1>Alap házi</h1>
<p>Csinálj felhasználót a csapattársaidnak a VM-edre úgy, hogy hozzáférjenek a statikus weboldalak mappájához, ezután próbáljátok ki, hogy valóban hozzáfértek-e és ha igen, rakjatok valami funky html-t a mappába ajándékba a társaitoknak.</p>
<p>Hint: adduser/useradd, usermod/gpasswd, chmod.</p>
</section>
<section id="side-quest" class="slide level1">
<h1>Side Quest</h1>
<p>Állíts be kulcsos hitelesítést a képzés VM-eden az SSH kapcsolatodhoz. Ehhez szükséged lesz egy privát és egy publikus kulcsra a kliensgépeden.</p>
<p>Hint: ssh-keygen.</p>
</section>
<section id="expert-sudo" class="slide level1">
<h1>Expert (sudo)</h1>
<p>Nyomozz hogyan és miért műküdik a sudo parancs! Ha megtaláltad próbáld meg összefoglalni nekünk néhány mondatban.</p>
<p>Hint: setuid</p>
</section>
<section id="expert-csomag-mágus" class="slide level1">
<h1>Expert (Csomag mágus)</h1>
<p>Készíts egy új csomagot (package) egy általad válaszott programból (saját program is lehet), egy általad választott disztribúcióhoz.</p>
</section>
<section id="jó-munkát" class="slide level1">
<h1>Jó munkát!</h1>
</section>
</div>
</div>
<script src="https://unpkg.com/reveal.js@^4//dist/reveal.js"></script>
// reveal.js plugins
<script src="https://unpkg.com/reveal.js@^4//plugin/notes/notes.js"></script>
<script src="https://unpkg.com/reveal.js@^4//plugin/search/search.js"></script>
<script src="https://unpkg.com/reveal.js@^4//plugin/zoom/zoom.js"></script>
<script>
// Full list of configuration options available at:
// https://revealjs.com/config/
Reveal.initialize({
// Push each slide change to the browser history
history: true,
// reveal.js plugins
plugins: [
RevealNotes,
RevealSearch,
RevealZoom
]
});
</script>
</body>
</html>
% Linux előadás
% Tóth Miklós
% March 21, 2021
# Pár egyéb hasznos parancs
# `wc`
- word counter
- szavak, sorok számolása
```shell-session
[mike@thinkyboi ~]$ echo "egy két há" | wc -w
3
[mike@thinkyboi ~]$ echo "egy két há" | wc -l
1
[mike@thinkyboi ~]$ echo "egy
két
há" | wc -l
3
```
# `tr`
- karaktereket cserél ki vagy töröl
```shell-session
[mike@thinkyboi ~]$ echo "almafa" | tr "a" "e"
elmefe
[mike@thinkyboi ~]$ echo "almafa körtefa eperfa" | tr " " "\n"
almafa
körtefa
eperfa
[mike@thinkyboi ~]$ echo "almafa" | tr -d "a"
lmf
```
# `curl`
- http shellből
- stdout-ra írja ki, kivéve, ha van `-o` kapcsoló
```shell-session
[mike@thinkyboi ~]$ curl https://home.sch.bme.hu/~mikewashere/linux/eloadas.md | grep stdout
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 777 100 777 0 0 33782 0 --:--:-- --:--:-- --:--:-- 33782
- stdout-ra írja ki
[mike@thinkyboi ~]$ curl https://home.sch.bme.hu/~mikewashere/linux/eloadas.md -o eloadas.md
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 777 100 777 0 0 31080 0 --:--:-- --:--:-- --:--:-- 31080
[mike@thinkyboi ~]$
```
# `.sh` fileok
- shell automatizálása
- mintha soronként kiadnánk a parancsokat
# egy `.sh` file
```shell-session
[mike@thinkyboi tmp]$ vi test.sh
[mike@thinkyboi tmp]$ cat test.sh
echo "ez simán működik" | cowsay
curl "https://home.sch.bme.hu/~mikewashere/linux/eloadas.md" | grep "soronként" | cowsay
[mike@thinkyboi tmp]$ bash test.sh
_____________________
< ez simán működik >
---------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1596 100 1596 0 0 69391 0 --:--:-- --:--:-- --:--:-- 69391
_________________________________
/ - mintha soronként kiadnánk a \
\ parancsokat /
---------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
[mike@thinkyboi tmp]$
```
# shebang
- file futtatásakor a kernel meglesi mi van az elején
- el tudunk indítani scripteket programként
- `#!<program>`
# shebang
```shell-session
[mike@thinkyboi tmp]$ vi test.sh
[mike@thinkyboi tmp]$ cat test.sh
#!/bin/bash
echo "ez simán működik" | cowsay
curl "https://home.sch.bme.hu/~mikewashere/linux/eloadas.md" | grep "soronként" | cowsay
[mike@thinkyboi tmp]$ chmod +x test.sh
[mike@thinkyboi tmp]$ ./test.sh
_____________________
< ez simán működik >
---------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1596 100 1596 0 0 11319 0 --:--:-- --:--:-- --:--:-- 11319
_________________________________
/ - mintha soronként kiadnánk a \
\ parancsokat /
---------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
[mike@thinkyboi tmp]$
```
# tűzfal
- a kernel belsejében -> gyors, de low-level
- iptables
- kényelmesebb egy tűzfal-kezelő
# UFW
- uncomplicated firewall
- egyszerű
```shell-session
[mike@thinkyboi tmp]$ sudo ufw allow 80
Rules updated
Rules updated (v6)
[mike@thinkyboi tmp]$ sudo ufw allow https
Rules updated
Rules updated (v6)
[mike@thinkyboi tmp]$ sudo ufw enable
```
# SSH kulcsok
- biztonságosabb, mint egy jelszó
- sok algoritmus, RSA, elliptikus görbék
- publikus-privát
- privát saját gépen, védve
- publikus ott, ahova belépnénk
- `~/.ssh/authorized_keys`
# Generálás
```shell-session
mike@thinkyboi:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mike/.ssh/id_rsa):
Created directory '/home/mike/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mike/.ssh/id_rsa
Your public key has been saved in /home/mike/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:tYZX08XEZfJP5j/um2Y9KUgG+jffe82ONwgzkt4p0hc mike@thinkyboi
The key's randomart image is:
+---[RSA 3072]----+
| .+*|
| . =o|
| . o . +|
| + o . +.|
| S * o|
| . = E .|
| + = B .o=|
| . = B ooBO|
| . + o.*XB|
+----[SHA256]-----+
mike@thinkyboi:~$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDjAZMAbpNutuc/ZgHWMcjWcPQOC0d8+JrDaHMnxZfRtfdyrgZDfPmMER95148JVEfkjjhur8a+IEfQM59o+yq95+yNvJFT6Nr5JzHK8dC5IuDvvEVNrKPwmW4UIgm1e5b95pGivJ5cnoiXevtp87seaxh0DlZFONKUeIFnwyDBUII7mRyXDn7MrFlAcxXtlZnSSCXXLGUMZI7nldiyRI9gXlZYCpfA8XrXrnM6JAIA+6VozhJurAKhygV6rH5yD4Vg+/Bs+wigywE3U79gbqpPzRegmxzKdgv+NNKV900DQVYNzvCU5o6q9d2amU+CDSw6KjU+4SLFOgZ3myXCyE9er3aaROj22sQdPwv8CnwtZstRibpp2SU627J4Vr7caPl8wrZcGvmXgD50mPh9Kdd+Yr5WJFSaAcog082aWBdrB3Qr9LM5DgcWulyDmUMmjA2WWCJN+t6vDT5d+2mYeBiZ2OY5ZkHyUjD6GVGBOZP/lP9EAxi3XwoM3V8TwoEgLD8= mike@thinkyboi
mike@thinkyboi:~$
```
# `>>` operátor
- `>` tesója
- filehoz appendál
```shell
curl https://git.sch.bme.hu/mikewashere.keys >> ~/.ssh/authorized_keys
```
# Házi Feladatok
# Alap házi
Csinálj felhasználót a csapattársaidnak a VM-edre úgy, hogy
hozzáférjenek a statikus weboldalak mappájához,
ezután próbáljátok ki, hogy valóban hozzáfértek-e
és ha igen, rakjatok valami funky html-t a mappába ajándékba a társaitoknak.
Hint: adduser/useradd, usermod/gpasswd, chmod.
# Side Quest
Állíts be kulcsos hitelesítést a képzés VM-eden az SSH kapcsolatodhoz.
Ehhez szükséged lesz egy privát és egy publikus kulcsra a kliensgépeden.
Hint: ssh-keygen.
# Expert (sudo)
Nyomozz hogyan és miért műküdik a sudo parancs!
Ha megtaláltad próbáld meg összefoglalni nekünk néhány mondatban.
Hint: setuid
# Expert (Csomag mágus)
Készíts egy új csomagot (package) egy általad válaszott programból
(saját program is lehet), egy általad választott disztribúcióhoz.
# Jó munkát!
presentation.html
index.html
---
marp: true
theme: gaia
class: [lead, invert]
---
# KSZKépzés Linux
Tóth Miklós
---
<!-- class: [invert] -->
## Mi is a Linux?
- kernel
- de! GNU/Linux már OS
- disztrók
- GUI
- CLI
---
## CLI
*Command Line Interface*
- terminál
- shell
- sh
- bash
- zsh
- fish
---
## Shelles fogalmak
- kapcsolók `rm -rf`
- redirekció `ls > fajllista.txt`
- piping `cat alma.txt | grep körte`
- shell execution `echo a mappa tartalma: $(ls)`
---
## Szövegszerkesztők
- nano
- vi, vim, nvim
---
## Gyakori parancsok
- ls
- man
- cat
- echo
- cd
- mkdir
- rm
- rmdir
- touch
---
## Csomagkezelés
- Mi a csomag?
- Hogyan telepítünk programokat Linuxon?
- Miért jó ez?
- Hogy működik az `apt`?
---
## Fájlkezelés
- `/` jel van `\` helyett
- nincs `C:\`, hanem `/`-ből indul minden
- `/etc`, `/dev`, `/home`, `/bin`, `/lib`, `/proc`, stb.
- `../`, `./`, `~`, `~bela`
---
## Jogosultságok
- `user`, `group`, `others`
- `rwx` hármasok
- `setuid`, `setgid`, `sticky bit`
- `chmod`, `chown`, `chgrp`
---
## UNIX elvek
- KISS
- Everything is a file
---
## Architektúra
- Bootloader
- Kernel
- Init rendszer
- "Userland"
---
## Felhasználókezelés
- `useradd`, `usermod`, `userdel`
- (`adduser`, `deluser`)
- `passwd`
- `sudo`
---
## Csoportok
- `groups`
- `groupadd`, `groupdel`
- `usermod`
- `gpasswd`
---
## Init rendszer, systemd
- Miért?
- Mi egy service?
- systemctl
- journalctl
---
## Hálózat
- `ip address`, `ip addr add`
- `ip route`, `ip route add`
- hálózatkezelők, `NetworkManager`
---
## SSH
- secure remote shell
- kulcsok
- sok egyéb okos feature
---
<!-- class: [lead, invert] -->
# Kahoot!
---
# Workshop time!
---
<!-- class: [invert] -->
## 1. feladat
Telepíts fel egy apache2 webszervert és állítsd be, hogy egy mappában lévő szkripteket lefuttasson és kimenetüket leküldje!
---
```sh
sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/
```
```sh
sudo nano /etc/apache2/sites-enabled/000-default.conf
```
```
<VirtualHost *:80>
[...]
<Directory "/var/www/html/scripts">
AllowOverride None
Require all granted
Options +ExecCGI
AddHandler cgi-script .cgi .pl .py .sh
</Directory>
DocumentRoot /var/www/html
[...]
</VirtualHost>
```
---
```sh
#!/bin/bash
echo Content-type: text/html
echo
echo hello world
```
---
## 2. Feladat
- Nézzük meg milyen userként fut a webszerver!
- Csináljunk egy oldalt, ami kiírja az időt és azt, hogy hány user van belépve!
- Csináljunk egy oldalt, ami kiírja, hogy hányadik hét van!
- hint: `jq`, https://hanyadikhetvan.attiss.eu/api
\ No newline at end of file
# Gyakorlat
## 0. csatlakozás a VM-hez
[see here](saját%20vm.md)
Ha gondoljátok vagy ha valaki nem nézett videót/jegyzetet és nem érti mi van,
akkor akár itt érdemes shellt mutogatni.
## 1. saját user létrehozása root jogokkal
Mindenki választ magának usert (nem kell schacc legyen), aztán
```shell
sudo useradd -s /bin/bash -m bela
```
`-m` = legyen home mappa
ha megadják a `-G sudo` kapcsolót is, akkor nice, már van is sudo joguk,
a kövi rész skippelhető
legyen jelszó:
```shell
passwd bela
```
legyen sudo:
```shell
sudo usermod -aG sudo bela
```
ezzel lett sudo joga
### Alternatív
legyen user:
```shell
sudo adduser bela
```
legyen sudo:
```shell
sudo adduser bela sudo
```
---
a végén jelentkezzetek át az új userbe
## 2. shell játszadozás
Feladat: számoljuk meg, hogy a *Bee Movie* szövegében hányszor szerepel a
kis és nagybetűs "bee" szó.
Ha lehet oldják meg maguktól, de vezethetitek is.
A szöveg elérhető itt: https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt
Vezessük végig őket lépésenként, hogy mit csinál a csomó parancs:
```shell
curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt
```
-> letölti a szöveget és kiírja
olvassunk be less-sel
```shell
curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt | less
```
Na de oldjuk is meg a feladatot:
Okés, de:
számolni a `wc`-vel lehet, de kéne szűrni a bee-kre, arra kell a `grep`,
de:
a `grep` az egész sort odaadja, amiben egyszer is ott a bee
tehát szét kéne szedni úgy, hogy minden szó külön sor legyen
Megoldás: cseréljük ki a space-eket `\n`-re a `tr` használatával.
```shell
curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt | tr " " "\n"
```
Az idézőjelek fontosak.
Most már soronként jelenik meg, mehet a grep.
```shell
curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt | tr " " "\n" | grep -i bee
```
Na most van egy csomó bee-nk, mehet a wc.
```shell
curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt | tr " " "\n" | grep -i bee | wc -l
```
Elvileg **171**-et kéne kapni.
Ha zavar minket a curl letöltés mutató szövege, akkor adjunk neki egy `2>/dev/null`-t.
```shell
curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt 2>/dev/null | tr " " "\n" | grep -i bee | wc -l
```
2 = stderr, /dev/null = speciális file, amibe bármit írhatunk, elveszik
---
Feladat: A méhek száma évről évre csökken, *let's save the bees*!
Írjuk bele a "bee"-ket egy fileba!
```shell
curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt | tr " " "\n" | grep -i bee > save_the_bees.txt
```
`nano save_the_bees.txt`-vel megleshetjük, hogy működött.
## 3. Script irogatás
Feladat: csináljunk egy scriptet, ami megmenti a méheket, és egy tehénnel kimondatja, hogy
hányan vannak.
A `cowsay` nincs fent a VM-eken, telepítsétek.
```shell
sudo apt install cowsay
```
Nyugodtan próbálgassátok ki.
```shell
cowsay hello
echo hello | cowsay
```
Csináljunk nano-val (vagy vim-mel, ha valaki azt szereti inkább)
egy új file-t, nevezzük el `bees.sh`-nak.
```shell
nano bees.sh
```
Vezessétek végig őket a megírásán vagy csináltassátok meg velük, itt egy mintamegoldás:
```shell
#!/bin/bash
curl https://home.sch.bme.hu/~mikewashere/linux/best_movie_ever.txt | tr " " "\n" | grep -i bee > save_the_bees.txt
echo $(cat save_the_bees.txt | wc -l ) méh van. | cowsay
```
*A felső sor opcionális.*
Ha megvan, futtassátok:
```shell
bash bees.sh
```
vagy, ha odatettétek az elejére a shebang-et:
```shell
chmod +x bees.sh
./bees.sh
```
## 4. Webszerver telepítése
Feladat: állítsanak be egy webszervert nginx-el, és rakjanak ki valami szöveget.
Telepítés:
```shell
sudo apt install nginx
```
Magától elindul, nézzük meg:
```shell
systemctl status nginx
```
Alapból a `/var/www/html`-t szolgálja ki, menjünk oda
```shell
cd /var/www/html
ls -la
```
Látjuk, hogy root-é minden, adjuk oda a www-data-nak, magunknak meg adjunk www-data csoporttagságot
és adjunk a csoportnak minden jogot rekurzívan.
```shell
sudo chown -R www-data:www-data /var/www/html
sudo usermod -aG www-data bela
sudo chmod -R g+rwx /var/www/html
```
`-R`: rekurzívan
vegyük fel a csoporttagságot, ehhez vagy ki és bejelentkezni kell vagy:
```shell
newgrp www-data
```
Most töröljük a korábbi weblapot és tegyünk ki valami sajátot:
```shell
cd /var/www/html
rm index.nginx-debian.html
nano index.html # írjanak bele bármi funky szöveget
```
## 5. Csináljunk tűzfalat
Az UFW (Uncomplicated FireWall) egy egyszerű tűzfalvezérlő progi.
Nézzük meg fut-e:
```shell
sudo systemctl status ufw
sudo ufw status
```
Fut, de ki van kapcsolva.
Előszöris engedjük be az SSH-t és http-t, hogy ne zárjuk ki magunkat:
```shell
sudo ufw limit ssh
sudo ufw allow http
```
A limit-tel limitálva engedélyeztük az ssh-t, így nem lehet gyorsan brute-force-olni.
és kapcsoljuk be:
```shell
sudo ufw enable
sudo ufw status
```
nice.
## Extra feladatötlet turbóújoncoknak
Csináljanak valami fancy weboldalt. Bármit.
# Házi Feladatok
## Alap házi
Csinálj felhasználót a csapattársaidnak a VM-edre úgy, hogy
hozzáférjenek a statikus weboldalak mappájához,
ezután próbáljátok ki, hogy valóban hozzáfértek-e
és ha igen, rakjatok valami funky html-t a mappába ajándékba a társaitoknak.
Hint: adduser/useradd, usermod/gpasswd, chmod.
## Side Quest
Állíts be kulcsos hitelesítést a képzés VM-eden az SSH kapcsolatodhoz.
Ehhez szükséged lesz egy privát és egy publikus kulcsra a kliensgépeden.
Hint: ssh-keygen.
## Expert (sudo)
Nyomozz hogyan és miért műküdik a sudo parancs!
Ha megtaláltad próbáld meg összefoglalni nekünk néhány mondatban.
Hint: setuid
## Expert (Csomag mágus)
Készíts egy új csomagot (package) egy általad válaszott programból
(saját program is lehet), egy általad választott disztribúcióhoz.
......@@ -35,8 +35,8 @@
}
let tmp = [
"első videó",
"második videó",
"linux alapok",
"szerver kezelés",
];
let pages = [];
......
apiVersion: apps/v1
kind: Deployment
metadata:
name: linux-presentation
namespace: kszk-kepzes-site
spec:
selector:
matchLabels:
app: linux-presentation
template:
metadata:
labels:
app: linux-presentation
spec:
containers:
- name: linux-presentation
image: harbor.sch.bme.hu/kszk/linux-presentation:latest
resources:
limits:
memory: "64Mi"
ports:
- containerPort: 80
imagePullSecrets:
- name: harbor
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: 'true'
nginx.ingress.kubernetes.io/proxy-body-size: 20m
nginx.ingress.kubernetes.io/rewrite-target: /$1
name: linux-presentation
namespace: kszk-kepzes-site
spec:
rules:
- host: ujonc.kszk.bme.hu
http:
paths:
- path: /studies/linux/(.*)
pathType: Prefix
backend:
service:
name: linux-presentation
port:
number: 80
tls:
- hosts:
- ujonc.kszk.bme.hu
secretName: kszkepzes-cert
apiVersion: v1
kind: Service
metadata:
name: linux-presentation
namespace: kszk-kepzes-site
spec:
selector:
app: linux-presentation
ports:
- port: 80
targetPort: 80
# 1. videó segédlet
# Linux alapok (1. videó segédlet)
## Mi is a Linux
......@@ -838,4 +838,4 @@ drwxr-xr-x 15 patrik patrik 4096 Mar 17 16:20 ..
patrik@ubuntu:~/Documents$
```
</Note>
\ No newline at end of file
</Note>
server {
listen 80;
listen [::]:80;
server_name localhost;
root /usr/share/nginx/html;
location / {
index index.html index.htm;
# kill cache
add_header Last-Modified $date_gmt;
add_header Cache-Control 'no-store, no-cache';
if_modified_since off;
expires off;
etag off;
}
# Media: images, icons, video, audio, HTC
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
expires 1M;
access_log off;
add_header Cache-Control "public";
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
}
......@@ -3,50 +3,40 @@
## Pár szó
Mostani alkalomtól biztosítunk mindannyiótoknak
1-1 virtuális gépet, melyet az SCH belső hálózatáról
fogtok elérni.
1-1 virtuális gépet,
Ezek a gépek a saját
[VMWare](https://en.wikipedia.org/wiki/VMware) klaszterünkben
[Proxmox](https://en.wikipedia.org/wiki/Proxmox_Virtual_Environment) klaszterünkben
futnak majd egészen a képzés végéig.
Specifikáció:
- Oprendszer: Ubuntu 20.04.2
- RAM: 1GB
- CPU: 1 Mag (AMD Opteron 6128 vagy AMD EPYC 7251 attól függ
, hogy a klaszter mely gépén fut)
- Hálózat: belső korlátozott hálózat, nagyvilág felé csak a
80 és a 443-as portra lát ki
A gépeken a saját felhasználóinkat (mike, patrik)
beregisztráltuk rendszergazda hozzáféréssel, hogyha bármi lenne,
akkor könnyedén tudjunk segíteni.
- Oprendszer: Ubuntu 20.04
- RAM: 2GB
- CPU: 2 Mag (AMD Opteron 6128)
## Elérés
A gépet [SSH](második videó#távoli-hozzáférés-ssh)
A gépet [SSH](szerver kezelés#távoli-hozzáférés-ssh)
-n keresztül tudod majd menedzselni, viszont csak
az SCH belső hálózatán.
Ahhoz, hogy elérd kívülről a gépet, be kell
SSH-zz először a publikus terminál szerverünkre
és onnan tovább.
A gépek egy belső hálón vannak, azonban van egy gép,
ami kívülről elérhetővé teszi őket, a kepzodok.sch.bme.hu.
Ezen a gépen különböző portokon éritek el a saját gépeteket.
Ennek menete:
```
$ ssh home.sch.bme.hu
...
Belépsz az SCH-s fiókoddal (SCHACC)
...
$ ssh kepzodo@kepzes-{ID}.internal
$ ssh kepzodo@kepzodok.sch.bme.hu -p <kapott port>
...
Belépsz a Mattermoston kapott infókkal
...
```
Ha windowsról vagy hasonló a folyamat.
A Putty nevezetű programot használva SSH-zz be először a home.sch.bme.hu-ra,
majd pedig onnan a parancssorban kiadva az `ssh kepzodo@kepzes-{ID}.internal` parancsot
be is léphetsz a gépedre.
Ha windowsról vagy hasonló a folyamat.
Nyiss egy Windows Terminált vagy egy parancssort vagy egy PowerShell-t,
és oda írd be ugyanezeket a parancsokat.
Ha Windows 7 vagy korábbi verzión vagy, akkor
a Putty nevezetű programot használva tudsz csatlakozni a gépedre.
# 2. videó segédlet
# Szerver kezelés (2. videó segédlet)
## UNIX alapelvek
......@@ -341,7 +341,7 @@ Debian alapú disztrókon a `sudo adduser mike almafa` is működik.
#### Felhasználók eltávolítása a csoportból
`sudo gpasswd -d <groupname> <username>` parancs segítségével törölhetünk
`sudo gpasswd -d <username> <groupname>` parancs segítségével törölhetünk
egy felhasználót a csoportból.
```
......@@ -398,15 +398,15 @@ igény szerint kézzel indítani, leállítani, újraindítani.
#### `systemctl`: a systemd-t piszkáló, vele kommunikáló eszköz
`systemctl status <service_neve.service>` Szolgáltatás indítása
`systemctl status <service_neve.service>` Szolgáltatás státusza
`systemctl list-unit-files` Létező szolgáltatások kilistázása
`systemctl start <service_neve.service>` Szolgáltatás leállítása
`systemctl start <service_neve.service>` Szolgáltatás indítása
`systemctl stop <service_neve.service>` Szolgáltatás újraindítása
`systemctl stop <service_neve.service>` Szolgáltatás leállítása
`systemctl restart <service_neve.service>` Szolgáltatás státusza
`systemctl restart <service_neve.service>` Szolgáltatás újraindítása
`systemctl enable <service_neve.service>` Indítás a rendszerrel
......@@ -483,9 +483,7 @@ default via 172.16.228.2 dev ens33 proto dhcp metric 100
patrik@ubuntu:~$
```
- ip beállítása
`sudo ip addr add IP_cím/hálózati_maszk dev interfész`
- ip beállítása: `sudo ip addr add IP_cím/hálózati_maszk dev interfész`
```shell-session {highlight: [14]}
patrik@ubuntu:~$ sudo ip addr add 192.168.4.44/24 dev ens33
......@@ -508,9 +506,7 @@ patrik@ubuntu:~$ ip a
patrik@ubuntu:~$
```
- router beállítása
`ip route add default via default_gateway_IP_címe`
- router beállítása: `ip route add default via default_gateway_IP_címe`
```shell-session
patrik@ubuntu:~$ sudo ip route add default via 192.168.4.44
......@@ -571,14 +567,6 @@ nmtui activate connecntion
</center>
<br>
<center>
<ImageZoom
src="pics/nmtui3.png"
/>
nmtui activate connecntion
<br>
</center>
<br>
- A hálózati beállítások a grafikus felület beállításaiban is megváltoztathatóak (gnome settings, kde settings...)
......@@ -656,7 +644,7 @@ A networkd-nek egy nagyon hasznos eszköze, a `networkctl`.
Ennek segítségével ellenőrizhetjük és teljes
információkat szerezhetünk a hálózati interfészekről.
Ha új konfigurációs fájlt hoztunk létre és szeretnénk betölteni, azt a
`networkctl reload` parancs segítségével tehetjük meg.
`networkctl reload` parancs segítségével tehetjük meg, majd a `networkctl reconfigure` segítségével alkalmazhatjuk is.
## Távoli hozzáférés (SSH)
......@@ -699,4 +687,4 @@ Ez mit is mutat?
- `whoami` parancs kiadása a távoli gépem
- Itt már a `hallgato` nevet kapom vissza, ebből is látszik,
hogy most egy másik felhasználóként használom a shell-t
\ No newline at end of file