3. modulis · 3.1
Lietotāji, grupas un failu tiesības
3. modulis: Lietotāji, tiesības un sudo · Lasīšanas laiks: 12 min.
Mācīšanās mērķis: Pēc šīs nodarbības Jūs varēsiet izveidot un apskatīt lietotājus un grupas, nolasīt faila vai mapes tiesības komandas ls -l izvadē un pareizi tās iestatīt ar chmod un chown, neatverot visu visiem.
Pamatjēdzieni: root (UID 0), parasts lietotājs, sistēmas lietotājs, /etc/passwd, /etc/shadow, grupa, adduser, id, rwx, īpašnieks, grupa, citi, oktālais skaitlis (644, 755, 600), chmod, chown, umask, setuid, 777
Ikviens ir skaitlis
Linux jau no paša sākuma ir veidots vairākiem lietotājiem uz vienas mašīnas. Katrs process, kas darbojas, darbojas kāda lietotāja vārdā, un katram failam ir īpašnieks. Sistēmai lietotājs galvenokārt ir skaitlis, UID:
- root ir UID 0. Root drīkst visu: lasīt un mainīt jebkuru failu, apturēt jebkuru pakalpojumu, izveidot jebkuru lietotāju. Nav nekāda "vai tiešām esat pārliecināti".
- Parastie lietotāji, piemēram,
anna, Debian un Ubuntu sistēmās saņem UID, sākot no 1000. Viņi drīkst rakstīt savā mājas mapē, bet citur maz ko. - Sistēmas lietotājiem ir mazs numurs, un parasti viņiem nav ne paroles, ne čaulas. Pakalpojumi darbojas šāda lietotāja vārdā: nginx kā
www-data, PostgreSQL kāpostgres. Ja šādu pakalpojumu uzlauž, ielauzējam ir tikai šī lietotāja tiesības, nevis root tiesības.
Kas Jūs esat, varat redzēt ar id:
anna@web1:~$ id
uid=1000(anna) gid=1000(anna) groups=1000(anna),27(sudo),100(users)Annai ir UID 1000, sava grupa anna, un viņa ir arī grupās sudo un users.
Kur glabājas lietotāji
Lietotāju saraksts atrodas failā /etc/passwd, viena rinda katram lietotājam:
anna@web1:~$ grep -E '^(root|www-data|anna):' /etc/passwd
root:x:0:0:root:/root:/bin/bash
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
anna:x:1000:1000:Anna,,,:/home/anna:/bin/bashLauki, atdalīti ar kolu: vārds, x (parole glabājas citur), UID, galvenā grupa, apraksts, mājas mape, čaula. Lietotājam www-data kā čaula norādīts /usr/sbin/nologin: pieteikties nav iespējams.
Pašas paroles glabājas šifrētā (jaucējfunkcijas) veidā failā /etc/shadow. Šo failu var lasīt tikai root. ! vai * paroles lauka sākumā nozīmē: pieteikties ar paroli nav iespējams. Tādā veidā root pēc noklusējuma ir bloķēts Ubuntu sistēmā, kā arī Debian sistēmā, ja instalēšanas laikā nenorādījāt root paroli.
Lietotāju un grupu izveide
Debian un Ubuntu sistēmās izmantojiet draudzīgo adduser:
root@web1:~# adduser anna
info: Adding user `anna' ...
info: Adding new group `anna' (1000) ...
info: Adding new user `anna' (1000) with group `anna (1000)' ...
info: Creating home directory `/home/anna' ...
info: Copying files from `/etc/skel' ...
New password:
Retype new password:
...adduser izveido lietotāju, savu grupu ar tādu pašu nosaukumu, mājas mapi un pieprasa paroli. Pastāv arī zemāka līmeņa useradd (un AlmaLinux un Rocky Linux sistēmās tā ir parastā komanda), taču bez opcijām tā dara mazāk: nav paroles, un dažās sistēmās nav mājas mapes.
Grupa ir veids, kā piešķirt tiesības vairākiem lietotājiem vienlaikus. Lietotāja pievienošana grupai:
root@web1:~# adduser anna www-data
root@web1:~# usermod -aG www-data anna # tas pats, darbojas visurPievērsiet uzmanību -a pie usermod: bez -a Jūs aizstājat visas lietotāja papildu grupas tikai ar šo vienu. Jauna grupa stājas spēkā tikai pēc atkārtotas pieteikšanās.
Konta slēgšana, to neizdzēšot (piemēram, bijušam kolēģim):
root@web1:~# usermod -L -e 1 jan-L bloķē paroli, -e 1 padara kontu novecojušu. Uzmanību: bloķēta parole ne vienmēr aptur SSH atslēgu. Tāpēc izņemiet arī atslēgas no /home/jan/.ssh/authorized_keys (nodarbība 2.3); novecojušu kontu (-e 1) sshd gan atraida.
Tiesību nolasīšana
anna@web1:~$ ls -l /var/www/example.com
total 12
-rw-r--r-- 1 anna www-data 1520 Nov 9 10:12 index.html
-rw-r----- 1 anna www-data 412 Nov 9 10:14 config.php
drwxr-xr-x 2 anna www-data 4096 Nov 9 10:15 images
drwxrwxr-x 2 www-data www-data 4096 Nov 9 10:20 uploadsPirmais desmit rakstzīmju bloks ir atslēga visam:
- 1. rakstzīme: veids.
-ir parasts fails,dmape (direktorija),lsaīsne (simboliskā saite). - 2. līdz 4. rakstzīme: ko drīkst īpašnieks.
- 5. līdz 7. rakstzīme: ko drīkst grupa.
- 8. līdz 10. rakstzīme: ko drīkst citi (visi pārējie).
Pēc tam seko saišu skaits, īpašnieks, grupa, izmērs un datums.
Burtu nozīme failam:
| Burts | Nozīme failam |
|---|---|
r | lasīt |
w | mainīt |
x | izpildīt kā programmu vai skriptu |
Un mapei mazliet citādi:
| Burts | Nozīme mapei |
|---|---|
r | iegūt mapē esošo failu nosaukumus |
w | izveidot, pārdēvēt un dzēst failus mapē |
x | ieiet mapē un atvērt tajā esošos failus |
Pēdējais daudzus pārsteidz. Bez x mapei Jūs netiekat pie tajā esošajiem failiem, pat ja tie paši ir lasāmi. Un tas, kam ir w uz mapi, var tajā dzēst failus, pat ja tie pieder kādam citam.
Piemērā: index.html drīkst lasīt visi; config.php (ar datubāzes paroli) Anna drīkst lasīt un mainīt, grupa www-data (tātad tīmekļa serveris) tikai lasīt, bet pārējie neko. Mapē uploads tīmekļa serveris drīkst rakstīt, jo tur nonāk apmeklētāju augšupielādes.
Tiesības kā skaitlis
Tiesības bieži raksta kā trīs ciparus, oktālo skaitli. Katram burtam ir vērtība: r = 4, w = 2, x = 1. Saskaitiet katrai grupai:
| Tiesības | Skaitlis | Lietojums |
|---|---|---|
rw-r--r-- | 644 | parasts fails, ko drīkst lasīt visi |
rw-r----- | 640 | fails īpašniekam un grupai, piemēram, konfigurācija ar paroli |
rw------- | 600 | slepens fails, piemēram, authorized_keys vai privātā atslēga |
rwxr-xr-x | 755 | mape vai programma, ko drīkst izmantot visi |
rwx------ | 700 | privāta mape, piemēram, ~/.ssh |
Tiesību maiņa: chmod un chown
anna@web1:~$ chmod 640 /var/www/example.com/config.php
anna@web1:~$ chmod g+w /var/www/example.com/uploads
root@web1:~# chown anna:www-data /var/www/example.com/config.phpchmod maina tiesības ar skaitli vai ar burtiem (u, g, o īpašniekam, grupai, citiem; + vai - un burts). chown eigenaar:groep maina īpašnieku un grupu; to drīkst tikai root. Ar -R abas darbojas uz visu mapi, un tieši tur bieži rodas kļūdas: chmod -R 644 uz mapi padara visas apakšmapes nelietojamas, jo mapēm vajadzīgs x. Visam kokam labāk izmantojiet find:
root@web1:~# find /var/www/example.com -type d -exec chmod 755 {} +
root@web1:~# find /var/www/example.com -type f -exec chmod 644 {} +Nekad 777
"Nestrādāja, tāpēc uzliku 777." 777 nozīmē: ikviens serverī drīkst to lasīt, mainīt un izpildīt. Ja kādreiz Jūsu serverī kaut viens pakalpojums vai viena vietne tiek kompromitēta, ielauzējs var rakstīt visur, kur ir 777, ieskaitot Jūsu PHP failus. Īstā problēma gandrīz vienmēr ir īpašnieks vai grupa: caur grupu piešķiriet tīmekļa serverim tieši tās tiesības, kas tam vajadzīgas, un tikai tajā mapē, kur tās vajadzīgas.
Noklusējuma tiesības un īpašie biti
Jaunie faili tiesības saņem ar umask palīdzību. Ar ierasto umask 022 jaunie faili kļūst 644, bet jaunās mapes 755. Savu umask varat redzēt ar komandu umask.
Dažreiz x vietā redzams s, piemēram, pie /usr/bin/passwd (-rwsr-xr-x). Tas ir setuid bits: programma darbojas ar īpašnieka (root) tiesībām, pat ja to palaiž parasts lietotājs. Tas ir vajadzīgs dažām sistēmas programmām, taču nekad neuzlieciet to pats uz skripta. Negaidīts setuid fails ir labi zināma ielaušanās pazīme; ar find / -perm -4000 -type f 2>/dev/null Jūs redzat tos visus.
AlmaLinux un Rocky Linux sistēmās
adduser tur ir cits nosaukums komandai useradd; izmantojiet useradd -m anna un pēc tam passwd anna. Grupas pievieno ar usermod -aG. SELinux pievieno papildu slāni līdzās šajā nodarbībā aplūkotajām tiesībām: failam ar pareizām tiesībām piekļuvi tomēr var atteikt, ja tam ir nepareiza SELinux etiķete (ls -Z to parāda).
Kopsavilkums
- Katram lietotājam ir UID; root (0) drīkst visu, pakalpojumi darbojas ar saviem sistēmas lietotājiem bez čaulas.
- Lietotāji atrodas failā
/etc/passwd, paroļu jaucējvērtības failā/etc/shadow. Izveidojiet lietotājus aradduserun pievienojiet grupas arusermod -aG. ls -lparāda veidu, īpašnieka, grupas un citu tiesības, un pēc tam īpašnieku un grupu. Mapeixnozīmē ieiešanu, betwfailu izveidi un dzēšanu.- Ierastie skaitļi: 644 un 755 publiskiem failiem, 640 konfigurācijai ar noslēpumiem, 600 un 700 privātiem. Nekad 777.
- Izmantojiet
find, lai iestatītu tiesības visam kokam; uzmaniet setuid failus.
Tests (quiz)
Uzdevums
Uzdevums Z3.1: Tiesību nolasīšana. Atveriet piemēra failu rechten-1.txt: komandas id izvadi trim lietotājiem un komandas ls -l izvadi tīmekļa mapē. Katrā jautājumā atbildiet, kas ko drīkst (piemēram: "vai tīmekļa serveris var mainīt config.php?", "kuram failam ir pārāk plašas tiesības?", "kāds skaitlis atbilst .env?"). Programma salīdzina Jūsu atbildes ar fiksēto atslēgu un katram jautājumam paskaidro, kāpēc.
Vairāk lasīt
Šajos rakstos aprakstītie soļi attiecas uz WebOké hostinga plāniem un VPS; pie citiem pakalpojumu sniedzējiem tas darbojas līdzīgi.
- Aizliegts (403): Jums nav atļaujas piekļūt /, izmantojot šo serveri.
- Pieteikšanās Jūsu VPS, izmantojot SSH (un SSH atslēgas izveide)
- WordPress kursā: nodarbība 7.4 "Vietnes nostiprināšana: tiesības, galvenes un drošības spraudņi"
- Debian rokasgrāmata adduser: https://manpages.debian.org/trixie/adduser/adduser.8.en.html
- Debian rokasgrāmata chmod: https://manpages.debian.org/trixie/coreutils/chmod.1.en.html
