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 (47)
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.
echo "Not yet 😉" > "második videó.md"
\ No newline at end of file
#!/bin/bash
if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
#echo "Not yet 😉" > "második videó.md"
echo "Lorem Ipsum is simply dummy text of the printing and typesetting industry."
fi
<!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
favicon.ico

117 KiB

# 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.
......@@ -8,7 +8,13 @@
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<script async defer data-domain="home.sch.bme.hu" src="https://analytics.mikesweb.site/js/plausible.js"></script>
<link rel="icon" type="image/x-icon" href="favicon.ico" />
<link rel="stylesheet" href="https://unpkg.com/docute@4/dist/docute.css">
<style>
.medium-zoom-overlay {
background: #2f3136 !important;
}
</style>
</head>
<body>
<div id="docute"></div>
......@@ -29,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
......@@ -198,7 +198,7 @@ Ne ijedjünk meg az ismeretlen fogalmaktól, erről mind lesz szó bővebben.
- kapcsolók: programok különböző funkcióit
lehet velük ki-be kapcsolni
- pl:
- `ls -la`: kilistáza a mostani mappa tartalmát
- `ls -la`: kilistázza a mostani mappa tartalmát
- `ls`: listázó program
- `-l`: listaként jelenjen meg
- `-a`: rejtett fájlokat is megjeleníti
......@@ -218,9 +218,9 @@ Ne ijedjünk meg az ismeretlen fogalmaktól, erről mind lesz szó bővebben.
- egy program kimenetét beleírja egy másik program bemenetébe
- pl:
- `ls -l *.txt | grep alma`:
- `ls -l *.txt`: kíírja a jelenlegi mappában lévő
- `ls -l *.txt`: kiírja a jelenlegi mappában lévő
txt fájlok neveit, ez lesz a grep bemenete
- `grep alma`: kiszűri a bementén kapott szövegből
- `grep alma`: kiszűri a bemenetén kapott szövegből
azokat a sorokat, amikben nem szerepel az alma szó
- → kilistázza azokat a txt fájlokat, amelyek nevében
szerepel az, hogy alma.
......@@ -239,7 +239,7 @@ Ne ijedjünk meg az ismeretlen fogalmaktól, erről mind lesz szó bővebben.
- terminál alján kiír pár támogatott billentyűkombinációt
- használat:
- `nano <fájl>`
- írkáljunk
- irkáljunk
- `CTRL+S` ment
- `CTRL+X` bezár
- `vi`: bonyolultabb picivel, de többet tud
......@@ -248,7 +248,7 @@ Ne ijedjünk meg az ismeretlen fogalmaktól, erről mind lesz szó bővebben.
- használat
- `vim <fájl>`
- `i` (insert mode)
- írkáljunk
- irkáljunk
- `ESC` (normal mode)
- `:wq` (parancs: write, quit)
- a fejlettebb funkcióit nem mutatjuk most be
......@@ -400,7 +400,7 @@ disztróspecifikus csomagkezelővel
<Note type="danger" label="Légy óvatos">
Itt szó lesz két azonos nevű, de különbőző dologról.
Itt szó lesz két azonos nevű, de különböző dologról.
- `root` user
- `root` mappa
......@@ -556,7 +556,7 @@ drwxr-xr-x 2 mike daemon 40 Mar 11 13:37 negyedik
- `r`: visszafelé rendezve
(ezt meg lehetne adni úgy is, hogy `ls -latr`,
de az olvashatóság kevéért mi külön vettük)
de az olvashatóság kedvéért mi külön vettük)
</details>
......@@ -664,17 +664,17 @@ de az olvashatóság kevéért mi külön vettük)
### Jogosultságok megváltoztatása
Vannak különböző parancsok, melyek segítségével megváltoztathatjuk mind a user-ek,
mind a group-ok, mind a többi felhasználó jogosultságait, sőt megváltoztathajtuk a
mind a group-ok, mind a többi felhasználó jogosultságait, sőt megváltoztathatjuk a
tulajdonosokat is.
#### `chmod`
Segítségével megváltoztathajtuk az állományok hozzáférési jogait (change mode).
Segítségével megváltoztathatjuk az állományok hozzáférési jogait (change mode).
Ha nem a saját fájljaink, mappáink jogait szeretnénk módosítani, ahhoz `sudo` is kell.
Ehhez megadjuk a `chmod` után, hogy kire vonatkozzon (user, group, others),
megadjuk, hogy hozzáférést szeretnénk-e adni vagy elvenni akarjuk azt,
valamint magát az állományt. A különböző paramétérek a következőek:
valamint magát az állományt. A különböző paraméterek a következőek:
`u` - user, a birtokló user
......@@ -701,7 +701,7 @@ Például:
Ugyanezen konvenció alapján működik mindegyik parancs.
Kicsit szemléletessebben:
Kicsit szemléletesebben:
```
patrik@ubuntu:~/Documents$ ls -la
......@@ -734,11 +734,11 @@ a második változott meg, míg eddig egy `-` jel volt, vagyis nincs joga hozzá
most pedig `w` lett, vagyis van hozzá joga.
Ha egyszerre szeretnénk jogot adni a user-nek, group-nak, others-nek vagy elvenni,
valamint ha többféle joggal szeretnénk ezt, akkor több paramétért is megadhatunk egy parancsban.
valamint ha többféle joggal szeretnénk ezt, akkor több paramétert is megadhatunk egy parancsban.
Ezt kétféleképpen is megtehetjük:
- `chmod` `u` `g` `o` közül a kiválaszottak `+` vagy `-` az `r` `w` `x` közül a
kiválaszottak. Vagyis a bal oldalra írjuk kinek a jogait szeretnénk módosítani,
- `chmod` `u` `g` `o` közül a kiválasztottak `+` vagy `-` az `r` `w` `x` közül a
kiválasztottak. Vagyis a bal oldalra írjuk kinek a jogait szeretnénk módosítani,
középre, hogy elvenni vagy adni szeretnénk, jobb oldalra pedig, hogy mely jogokat.
```
......@@ -812,3 +812,30 @@ drwxr-xr-x 15 patrik patrik 4096 Mar 17 16:20 ..
patrik@ubuntu:~/Documents$
```
<Note type="tip" label="Tip">
A csoportot nem csak az előbbi `chgrp` paranccsal lehet módosítani, hanem
a `chown` paranccsal is.
Ehhez a következőt kell tenni:
`sudo chown username:groupname fájl`
```shell-session
patrik@ubuntu:~/Documents$ ls -la
total 8
drwxr-xr-x 2 patrik patrik 4096 Mar 19 19:18 .
drwxr-xr-x 15 patrik patrik 4096 Mar 17 16:20 ..
-rw-r----- 1 patrik patrik 0 Mar 18 19:38 pörkölt.txt
-rw-rw-r-- 1 mike mike 0 Mar 18 19:37 recept.txt
patrik@ubuntu:~/Documents$ sudo chown patrik:patrik recept.txt
[sudo] password for patrik:
patrik@ubuntu:~/Documents$ ls -la
total 8
drwxr-xr-x 2 patrik patrik 4096 Mar 19 19:18 .
drwxr-xr-x 15 patrik patrik 4096 Mar 17 16:20 ..
-rw-r----- 1 patrik patrik 0 Mar 18 19:38 pörkölt.txt
-rw-rw-r-- 1 patrik patrik 0 Mar 18 19:37 recept.txt
patrik@ubuntu:~/Documents$
```
</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;
}
}