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

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õisteMilleksMida tavaliselt näed
ls -lnäita õigusi, omanikku ja gruppirida nagu -rw-r--r--
chmodmuuda õigusiedukal juhul sageli vaikne
chownmuuda omanikku või gruppiedukal juhul sageli vaikne
täitmisbitt xluba faili käivitadafaili saab programmina käivitada
kataloogi xluba 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 +x teeb 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 -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

Lühidalt:

  • r tähendab lugemist
  • w tähendab kirjutamist
  • x tä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 cd abil 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 fail lisa omanikule täitmisõigus
  • g-w fail võta grupilt kirjutamisõigus ära

Numbriline kuju sobib siis, kui tahad seada terve õiguste rea korraga:

  • 644 tähendab tavaliselt tekstifaili
  • 755 tähendab tavaliselt käivitatavat faili või kataloogi

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.

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 rida
  • chmod u+x skript.shanna omanikule täitmine
  • chmod 644 naide.txtsea tekstifaili õigused
  • chmod 755 skript.shsea käivitatava õigused
  • sudo chown kasutaja:grupp fail.txtmuuda omanikku

Olulised õigusekujud

  • rloe sisu
  • wmuuda sisu
  • xkäivita või sisene
  • dtegu on kataloogiga
  • 644tüüpiline tekstifail
  • 755tüüpiline käivitatav