Õigused, omanikud ja täitmisbitid
Loogika
Õigused määravad, kes võib faili lugeda, muuta või käivitada. See on seotud kasutajate, gruppide, sudo ja shelliskriptidega, sest kõik need teemad sõltuvad õiguste korrektsest mõistmisest.
Kiirülevaade
Eesmärk on lugeda õiguste rida, teha fail vajadusel käivitatavaks ja mõista “Permission denied” viga.
| Käsk või mõiste | Milleks | Mida tavaliselt näed |
|---|---|---|
ls -l | näita õigusi, omanikku ja gruppi | rida nagu -rw-r--r-- |
chmod | muuda õigusi | edukal juhul sageli vaikne |
chown | muuda omanikku või gruppi | edukal juhul sageli vaikne |
täitmisbitt x | luba faili käivitada | faili saab programmina käivitada |
kataloogi x | luba kataloogi “siseneda” | nimed ja teed muutuvad kasutatavaks |
drwxr-xr-x algab d tähega, sest tegu on kataloogiga.
Tüüpilised algaja vead
- arvatakse, et
chmod +xteeb failist automaatselt “programmi” - muudetakse õigused liiga laiaks, ilma et oleks aru saadud, kellele mida antakse
- aetakse segi faili lugemisõigus ja käivitamisõigus
Kiirspikker
ls -lvaata õigusichmod +x failtee fail käivitatavakschmod 644 failtavaline tekstifailchmod 755 failtavaline käivitatav failchown kasutaja:grupp failmuuda omanikku
Õiguste vaatamine
ls -l
Näites:
-rw-r--r-- 1 mari users 120 Apr 12 10:00 naide.txt
See rida kirjeldab:
- faili tüüpi
- omaniku õigusi
- grupi õigusi
- teiste kasutajate õigusi
Lühidalt:
rtähendab lugemistwtähendab kirjutamistxtähendab faili puhul käivitamist, kataloogi puhul sisenemist
Miks kataloogi x-õigus on eriline
Faili puhul tähendab x, et faili võib programmina käivitada.
Kataloogi puhul tähendab x midagi natuke muud:
- tohid sinna
cdabil siseneda - tohid kasutada selle sees olevaid nimesid
- ilma
x-õiguseta võib kataloog olemas olla, aga sa ei saa selles normaalselt liikuda
See on üks tavaline koht, kus permission denied tundub esmapilgul segane.
Õiguste muutmine
chmod u+x skript.sh
chmod 644 naide.txt
Siin on kaks levinud stiili:
- sümboolne kuju nagu
chmod u+x fail - numbriline kuju nagu
chmod 644 fail
Sümboolne kuju sobib hästi siis, kui tahad teha ühe väikese muudatuse:
u+x faillisa omanikule täitmisõigusg-w failvõta grupilt kirjutamisõigus ära
Numbriline kuju sobib siis, kui tahad seada terve õiguste rea korraga:
644tähendab tavaliselt tekstifaili755tähendab tavaliselt käivitatavat faili või kataloogi
Kõige tavalisemad lipud
ls -lkuva õigused detailvaateschmod +xlisa täitmisõiguschmod 644sea tavalise tekstifaili õigusedchmod 755sea tavalise käivitatava faili õigusedchown kasutaja:gruppmuuda omanikku ja gruppi
Omaniku muutmine
sudo chown kasutaja:grupp fail.txt
Käivitatavaks tegemine
chmod +x ja shebang-rida käivad sageli koos.
- shebang nagu
#!/bin/shvõi#!/usr/bin/env python3ütleb, millise interpretaatoriga faili käivitada - täitmisõigus ütleb, et faili tohib käivitada käsuga
./fail - kui käivitad faili kujul
./fail, siis süsteem vaatab kõigepealt faili algust ja otsib sealt, millega seda tõlgendada
Kui üks neist puudub, siis võib fail küll olemas olla, aga ta ei käivitu ootuspäraselt.
Käivita need käsud
printf '#!/bin/sh\necho tere\n' > tere.sh
chmod +x tere.sh
./tere.sh
printf '#!/usr/bin/env perl\nprint \"tere\\n\";\n' > tere.pl
chmod +x tere.pl
./tere.pl
Mida tähendab käivitatav fail
Täidetavaks tegemine ei muuda faili maagiliselt programmiks. Tavaliselt on vaja:
- õiget shebang-rida
- täitmisõigust
- olemasolevat interpretaatorit või binaari
Kui fail algab näiteks nii:
#!/usr/bin/env perl
siis süsteem proovib selle käivitada Perliga. Kui Perl puudub või tee on vale, siis ei piisa ainult täitmisõigusest.
Minitest
- Tee fail
proov.sh, mis väljastab ühe rea. - Anna talle täitmisõigus.
- Käivita fail nii
sh proov.shkui./proov.sh.
Peatüki täisspikker
Baas ja süsteemipilt
Eesmärk
loe õiguste rida, mõista rwx tähendust ja erista faili käivitatavust kataloogi läbikäigust
Põhikujud
ls -l fail.txtloe õiguste ridachmod u+x skript.shanna omanikule täitminechmod 644 naide.txtsea tekstifaili õigusedchmod 755 skript.shsea käivitatava õigusedsudo chown kasutaja:grupp fail.txtmuuda omanikku
Olulised õigusekujud
rloe sisuwmuuda sisuxkäivita või sisenedtegu on kataloogiga644tüüpiline tekstifail755tüüpiline käivitatav