Mustand: sisu ei ole veel tehniliselt ega keeleliselt täielikult kontrollitud ega toimetatud.

Peatüki vaade

Linux/Unix/macOS käsurea kiirõpik

Praegu loed peatükki Õigused, omanikud ja täitmisbitid, mis kuulub osasse Osa II: Süsteemi pilt ja haldus.

Õ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 -l vaata õigusi
  • chmod +x fail tee fail käivitatavaks
  • chmod 644 fail tavaline tekstifail
  • chmod 755 fail tavaline käivitatav fail
  • chown kasutaja:grupp fail muuda 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 -l kuva õigused detailvaates
  • chmod +x lisa täitmisõigus
  • chmod 644 sea tavalise tekstifaili õigused
  • chmod 755 sea tavalise käivitatava faili õigused
  • chown kasutaja:grupp muuda 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/sh võ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:

  1. õiget shebang-rida
  2. täitmisõigust
  3. 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

  1. Tee fail proov.sh, mis väljastab ühe rea.
  2. Anna talle täitmisõigus.
  3. Käivita fail nii sh proov.sh kui ./proov.sh.