Skip to content

Commit a011fcb

Browse files
committed
úkoly 3: Správa uživatelů
1 parent aefd38f commit a011fcb

2 files changed

Lines changed: 325 additions & 0 deletions

File tree

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Úkoly – Správa uživatelů, Sudo
2+
3+
## 🧠 Teoretická část
4+
5+
# Domácí úkol – Linux: práce se soubory, uživateli a právy
6+
7+
## A. Práce se soubory a výstupem
8+
9+
1. **Co udělá `cat` a kdy je vhodné ho použít?**
10+
`cat` vypíše obsah souboru do terminálu, případně spojí víc souborů za sebe. Výstup lze přesměrovat i do souboru. Ideální pro kratší soubory nebo spojování.
11+
12+
2. **Rozdíl mezi `less` a `cat`**
13+
`cat` jen vypíše celý obsah a hotovo. `less` vypíše obsah souboru tak, že se dá v něm posunovat po obrazovkách pomocí šipek /`PgUp`/`PgDn` a hledat (`/text`). Lepší pro delší soubory.
14+
15+
3. **K čemu slouží `head` a jak určit počet řádků?**
16+
`head` vypíše začátek souboru (automaticky 10 řádků). Počet řádků lze nastavit parametrem `-n`, např. `head -n 25 soubor.txt`.
17+
18+
4. **Jak zjistit počet řádků nebo slov v souboru?**
19+
Pomocí `wc` (word count):
20+
- řádky: `wc -l soubor.txt`
21+
- slova: `wc -w soubor.txt`
22+
- znaky: `wc -m soubor.txt`
23+
- vše najednou: `wc soubor.txt`
24+
25+
5. **Jak zobrazit posledních 10 řádků souboru?**
26+
`tail soubor.txt` (defaultně 10 řádků). Pro jiný počet: `tail -n 50 soubor.txt`.
27+
28+
---
29+
30+
## B. Uživatelé, skupiny a práva
31+
32+
1. **Rozdíl mezi uživatelem a skupinou v Linuxu**
33+
Uživatel = účet (UID) s domovským adresářem a shell konfigurací. Skupina = logické seskupení uživatelů (GID) pro sdílení oprávnění. Uživatel může být členem více skupin; každá entita má primární skupinu.
34+
35+
2. **Význam `-rw-r--r--`**
36+
První znak typ: `-` soubor (`d` složka, `l` symlink).
37+
Pak práva uživatele - číst a zapisovat, práva skupiny - číst, práva všech ostatních - číst.
38+
39+
3. **Rozdíl mezi vlastníkem souboru a skupinou souboru**
40+
Vlastník (user) je jeden konkrétní účet, který soubor vytvořil (nebo mu byl přiřazen); skupina je jedna vybraná skupina, jejíž členové mohou mít další práva k souboru (klidně i stejná, či dokonce vyšší než uživatel).
41+
42+
4. **Co obsahují `/etc/passwd` a `/etc/shadow`**
43+
Etc je složka, ve které se nachází konfigurace. Není ve domovském adresáři; je to top-level vedle /home, /bin, /var, …
44+
- `/etc/passwd`: základní údaje o účtech (login, UID, GID, domovský adresář, shell). Dnes neobsahuje hesla, ale placeholder `x`.
45+
- `/etc/shadow`: hashovaná hesla a politiky (expirace apod.); přístup má jen root (kvůli bezpečnosti).
46+
47+
5. **K čemu slouží `chmod` a jak se používá**
48+
Mění přístupová práva. Dva způsoby:
49+
- Symbolicky: `chmod u+rwx,g+rx,o-r soubor`
50+
- Osmiciferně (čísly): `chmod 754 soubor`
51+
52+
6. **K čemu slouží `useradd`, `groupadd`, `usermod`, `passwd`, `userdel`, `groupdel`**
53+
- `useradd`: vytvoří nový účet (např. `sudo useradd -m -s /bin/bash jenda`).
54+
- `groupadd`: vytvoří novou skupinu (např. `sudo groupadd editors`).
55+
- `usermod`: změní vlastnosti účtu (např. přidání do skupin `sudo usermod -aG editors jenda`, změna shellu `-s`, domova `-d` …).
56+
- `passwd`: nastaví/změní heslo uživatele (`sudo passwd jenda`).
57+
- `userdel`: smaže účet (s domovem `-r`: `sudo userdel -r jenda`).
58+
- `groupdel`: smaže skupinu (pokud už není primární pro nějaký účet).
Lines changed: 267 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,267 @@
1+
---
2+
Po vypracování, odzkoušení všeho, vypracováno Chatem GPT toto shrnutí, jen pro mě, myslím, že netřeba kontrolovat koučem.
3+
---
4+
5+
## 💻 Praktická část
6+
7+
### Úkol 1: Vytvoření skupin a uživatelů
8+
9+
1. Vytvoř skupiny:
10+
- `studenti`
11+
- `ucitele`
12+
```bash
13+
sudo groupadd studenti
14+
sudo groupadd ucitele
15+
```
16+
17+
2. Vytvoř uživatele:
18+
- `eva` (člen skupiny `studenti`)
19+
- `adam` (člen skupiny `studenti`)
20+
- `petr` (člen skupiny `ucitele`)
21+
```bash
22+
sudo useradd -m -G studenti eva
23+
sudo useradd -m -G studenti adam
24+
sudo useradd -m -G ucitele petr
25+
```
26+
27+
3. Nastav každému uživateli heslo (např. `test123`).
28+
```bash
29+
sudo passwd eva
30+
sudo passwd adam
31+
sudo passwd petr
32+
```
33+
34+
4. Ověř, do jakých skupin uživatelé patří.
35+
```bash
36+
groups eva
37+
groups adam
38+
groups petr
39+
```
40+
41+
5. Přidej uživatele `eva` také do skupiny `ucitele`.
42+
```bash
43+
sudo usermod -aG ucitele eva
44+
groups eva
45+
```
46+
47+
6. Smaž uživatele `adam` a skupinu `ucitele`.
48+
```bash
49+
sudo userdel -r adam
50+
sudo groupdel ucitele
51+
```
52+
53+
---
54+
55+
### Úkol 2: Práva a přístup k souborům
56+
57+
1. Přepni se na uživatele `petr`.
58+
```bash
59+
su - petr
60+
```
61+
62+
2. V jeho domovské složce vytvoř soubor `poznamka.txt`.
63+
```bash
64+
touch poznamka.txt
65+
```
66+
67+
3. Zobraz výpis oprávnění.
68+
```bash
69+
ls -l poznamka.txt
70+
```
71+
72+
4. Nastav oprávnění tak, aby:
73+
- vlastník mohl číst i zapisovat,
74+
- skupina mohla pouze číst,
75+
- ostatní neměli žádný přístup.
76+
```bash
77+
chmod 640 poznamka.txt
78+
```
79+
80+
5. Ověř, že změna proběhla správně.
81+
```bash
82+
ls -l poznamka.txt
83+
```
84+
85+
6. Změň vlastníka souboru na uživatele `eva` a skupinu na `studenti`.
86+
```bash
87+
sudo chown eva:studenti poznamka.txt
88+
```
89+
90+
7. Ověř, že soubor má nového vlastníka i skupinu.
91+
```bash
92+
ls -l poznamka.txt
93+
```
94+
95+
---
96+
97+
### Úkol 3: Sdílená složka pro skupinu
98+
99+
1. Jako `root` vytvoř složku `/home/spolecne`.
100+
```bash
101+
sudo mkdir /home/spolecne
102+
```
103+
104+
2. Nastav vlastníka `root` a skupinu `studenti`.
105+
```bash
106+
sudo chown root:studenti /home/spolecne
107+
```
108+
109+
3. Nastav práva tak, aby:
110+
- vlastník měl práva `rw`,
111+
- skupina měla práva `rw`,
112+
- ostatní neměli žádná.
113+
```bash
114+
sudo chmod 770 /home/spolecne
115+
```
116+
117+
4. Nastav **setgid bit**, aby nově vytvořené soubory ve složce zdědily skupinu `studenti`:
118+
```bash
119+
chmod g+s /home/spolecne
120+
```
121+
122+
5. Ve složce `/home/spolecne` vytvoř soubor `zkouska.txt` jako uživatel `eva`.
123+
```bash
124+
su - eva
125+
touch /home/spolecne/zkouska.txt
126+
```
127+
128+
6. Ověř, že soubor má skupinu `studenti`.
129+
```bash
130+
ls -l /home/spolecne
131+
```
132+
133+
7. Přepni se na uživatele `adam` a zkontroluj, že může tento soubor číst i upravovat.
134+
```bash
135+
su - adam
136+
cat /home/spolecne/zkouska.txt
137+
echo "test" >> /home/spolecne/zkouska.txt
138+
```
139+
140+
---
141+
142+
### Úkol 4: Struktura „Školní tým“
143+
144+
1. Znovu vytvoř skupinu `ucitele`.
145+
```bash
146+
sudo groupadd ucitele
147+
```
148+
149+
2. Vytvoř uživatele:
150+
- `reditel`
151+
- `ucitelka`
152+
- `student1`
153+
- `student2`
154+
```bash
155+
sudo useradd -m reditel
156+
sudo useradd -m ucitelka
157+
sudo useradd -m student1
158+
sudo useradd -m student2
159+
```
160+
161+
3. Přiřaď uživatele do skupin:
162+
- `reditel`, `ucitelka``ucitele`
163+
- `student1`, `student2``studenti`
164+
```bash
165+
sudo usermod -aG ucitele reditel
166+
sudo usermod -aG ucitele ucitelka
167+
sudo usermod -aG studenti student1
168+
sudo usermod -aG studenti student2
169+
```
170+
171+
4. Vytvoř strukturu složek:
172+
```console
173+
/opt/skola/
174+
├── ucitele/
175+
└── studenti/
176+
```
177+
```bash
178+
sudo mkdir -p /opt/skola/ucitele
179+
sudo mkdir -p /opt/skola/studenti
180+
```
181+
182+
5. Nastav:
183+
- `/opt/skola/ucitele` → vlastník `root`, skupina `ucitele`, práva `770`
184+
- `/opt/skola/studenti` → vlastník `root`, skupina `studenti`, práva `770`
185+
```bash
186+
sudo chown root:ucitele /opt/skola/ucitele
187+
sudo chown root:studenti /opt/skola/studenti
188+
sudo chmod 770 /opt/skola/ucitele
189+
sudo chmod 770 /opt/skola/studenti
190+
```
191+
192+
6. Do obou složek přidej soubor `info.txt` s krátkým textem *(např. „Vítejte ve složce učitelů“)*.
193+
```bash
194+
echo "Vítejte ve složce učitelů" | sudo tee /opt/skola/ucitele/info.txt
195+
echo "Vítejte ve složce studentů" | sudo tee /opt/skola/studenti/info.txt
196+
```
197+
198+
7. Ověř, že:
199+
- Učitelé mají přístup pouze do složky `ucitele`.
200+
- Studenti pouze do `studenti`.
201+
- Ostatní uživatelé nemají přístup do žádné z nich.
202+
```bash
203+
su - reditel
204+
cd /opt/skola/ucitele # funguje
205+
cd /opt/skola/studenti # Permission denied
206+
```
207+
208+
---
209+
210+
## Bonus: Sudo zapomíná
211+
212+
Co by měl dělat tento příkaz?
213+
214+
```console
215+
ll /var/db/sudo/lectured/
216+
```
217+
218+
👉 Zobrazí soubory, které si sudo ukládá pro každého uživatele – informaci o tom, že už viděl varování („sudo lecture“).
219+
220+
Příkaz ale pod běžným uživatelským účtem nefunguje; potřebuješ `sudo ll /var/db/sudo/lectured/`.
221+
To ale taky nefunguje, protože `ll` není skutečný příkaz, ale alias, který není dostupný pro root.
222+
223+
✅ Použij místo toho:
224+
```bash
225+
sudo ls -l /var/db/sudo/lectured/
226+
```
227+
228+
* Jaké soubory jsou v `/var/db/sudo/lectured/`? Komu patří? Jak jsou velké?
229+
→ Každý soubor odpovídá jednomu uživateli (název podle UID). Patří rootovi, mají pár bajtů, práva `-rw-------`.
230+
231+
* Jaké soubory jsou v `/var/run/sudo/ts`? Komu patří? Jak jsou velké? Kdo k nim má jaká práva?
232+
→ Jsou to timestampy – sudo si tu pamatuje, že jsi zadala heslo.
233+
Každý soubor patří rootovi, pojmenovaný podle UID, malý soubor, přístup jen root.
234+
235+
* Jak by vypadal příkaz, který smaže „tvůj“ soubor v `/var/run/sudo/ts`?
236+
```bash
237+
sudo rm /var/run/sudo/ts/$(id -u)
238+
```
239+
240+
Když spustíš příkaz `sudo`, zeptá se tě na heslo. Když ho spustíš podruhé (ve stejném terminálu), už se neptá – pamatuje si, že jsi heslo před chvilkou zadala.
241+
242+
Vyzkoušej si ale, že tohle nefunguje s příkazem pro smazání „tvého“ souboru v `/var/run/sudo/ts`. Když ho pustíš několikrát za sebou, `sudo` se vždycky znovu zeptá na heslo.
243+
244+
* Proč?
245+
→ Protože mazáním souboru timestamp (`/var/run/sudo/ts`) mažeš právě tu informaci, že jsi heslo už zadala.
246+
Sudo tedy pokaždé zapomene, že ses ověřila.
247+
248+
* Zadej tyhle příkazy:
249+
* Smaž „svůj“ soubor z `/var/db/sudo/lectured/`.
250+
```bash
251+
sudo rm /var/db/sudo/lectured/$(id -u)
252+
```
253+
* Smaž „svůj“ soubor z `/var/run/sudo/ts`.
254+
```bash
255+
sudo rm /var/run/sudo/ts/$(id -u)
256+
```
257+
* Spusť `sudo echo`.
258+
```bash
259+
sudo echo
260+
```
261+
262+
A odpověz:
263+
* Co je u `sudo echo` jinak?
264+
→ Znovu se zobrazí výstraha („lecture“) a sudo se ptá na heslo. Lucie-edit: Tady jsem to pokazila. Nestalo se vůbec nic. Protože lecture se zobrazí až při dalším zadávání suda, což jsem hned dělat nemusela, protože jsem nesmazala ts. A možná by bylo fajn tady použít sudo true (místo sudo echo) a seznámit tak na ideálním místě nováčka s tímhle příkazem.
265+
266+
* K čemu slouží soubory ve `/var/db/sudo/lectured/`?
267+
→ Ukládají informaci, že uživatel už jednou viděl výstražnou hlášku sudo – aby se znovu nezobrazovala.

0 commit comments

Comments
 (0)