|
| 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