Õigused, omanikud ja täitmisbitid
Unix-laadsetes süsteemides on igal failil omanik, grupp ja õigused.
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.
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
Õiguste muutmine
chmod u+x skript.sh
chmod 644 naide.txt
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.