Linux failų teisės: chmod, chown ir rwx paprastai
Paskutinį kartą atnaujinta: 2026-10-06 · Ovanap Team, knygos „Linux nuo nulio“ autoriai (leidėjas – Ovanap, Monine AS)
Trumpas atsakymas: kiekvienas Linux failas ir katalogas turi tris teises – skaityti (r), keisti (w) ir vykdyti (x) – atskirai trims rateliams: savininkui, grupei ir visiems kitiems. Teises parodo ls -l, keičia chmod (pavyzdžiui, chmod u+x scenarijus.sh arba chmod 644 failas), o savininką keičia sudo chown. Skaičiais r = 4, w = 2, x = 1, todėl 644 reiškia rw-r--r--, o 755 – rwxr-xr-x.
Svarbiausia
- Trys teisės × trys rateliai:
r,w,xsavininkui (u), grupei (g) ir kitiems (o) (chmod(1)). - Katalogui
xreiškia ne vykdymą, o teisę įeiti – be jos nepasieksi failų viduje. - Sistema pritaiko pirmą tau tinkantį ratelį – savininko, grupės arba kitų – ir toliau nebežiūri.
rootteisių taisyklės nesaugo: administratoriaus raktas atrakina visas spynas, todėl klaida susudopavojingesnė.- Nauji failai Mint ir Ubuntu sistemose gimsta be
x(rw-rw-r--), todėl ką tik parašytas scenarijus pats nepasileidžia.
Pranešimas Permission denied naujokui dažnai atrodo kaip siena. Iš tiesų tai tik sistemos atsakymas „šiam veiksmui tau trūksta vienos raidės“. Kai išmoksti perskaityti vieną ls -l eilutę, beveik kiekviena tokia klaida pasidaro aiški per kelias sekundes.
Pavyzdžiuose vartotoja – ona, dirbama bandomajame kataloge ~/bandomasis, kur klaida nieko nekainuoja.
Modelis: kiekvienos durys turi tris spynas
Įsivaizduok, kad kiekvienas failas ir katalogas – tai durys. Ant jų ne viena, o trys spynos: skaitymo, keitimo ir vykdymo. Ir kiekvienam iš trijų žmonių ratelių šios spynos nustatytos atskirai:
- savininkas – vartotojas, kuriam failas priklauso;
- grupė – vartotojai, priklausantys failui priskirtai grupei;
- kiti – visi likę sistemos vartotojai.
Kai bandai atidaryti failą, sistema žiūri, kas tu esi. Esi savininkas – taikomos savininko spynos. Ne, bet priklausai grupei – grupės. Nei to, nei to – „kitų“. Sistema teisių nesumuoja: paima pirmą tinkantį ratelį ir sustoja, kaip apsaugininkas, kuris radęs tave VIP sąraše kitų sąrašų nebetikrina.
Prieigos teisės (angl. permissions) – prie kiekvieno failo prisegtas užrašas, nusakantis, kas jį gali skaityti, keisti ar vykdyti.
Kaip perskaityti ls -l eilutę
cd ~/bandomasis
ls -l scenarijus.sh
-rw-rw-r-- 1 ona ona 27 liep. 25 08:25 scenarijus.sh
| Vieta | Pavyzdys | Ką sako |
|---|---|---|
| Teisių eilutė | -rw-rw-r-- |
kas tai yra ir kam kas leidžiama |
| Nuorodų skaičius | 1 |
pradedančiajam galima praleisti |
| Savininkas | ona |
kam failas priklauso |
| Grupė | ona |
kuriai grupei priskirtas |
| Dydis | 27 |
baitai |
| Pakeitimo laikas | liep. 25 08:25 |
kada keistas paskutinį kartą |
| Vardas | scenarijus.sh |
failo vardas |
Teisių eilutę sudaro dešimt ženklų. Pirmasis sako, kas tai: - – paprastas failas, d – katalogas. Likę devyni – trys tripletai: savininko, grupės ir kitų. -rw-rw-r-- žodžiais: „paprastas failas; savininkas skaito ir keičia, grupė skaito ir keičia, kiti tik skaito“. Brūkšnys raidės vietoje reiškia, kad tos teisės nėra; tvarka tripletuose visada ta pati – rwx.
Grupė ona – ne klaida: Mint ir Ubuntu kiekvienam naujam vartotojui sukuria asmeninę grupę tuo pačiu vardu. Kadangi joje esi tik tu, grupės w niekam kitam keisti neleidžia.
Trys raidės failui ir katalogui
| Raidė | Failui | Katalogui |
|---|---|---|
r (read) |
perskaityti turinį | matyti, kas viduje (ls) |
w (write) |
keisti ir išsaugoti | kurti, pervadinti, šalinti failus jame |
x (execute) |
paleisti kaip programą | įeiti (cd) ir naudotis tuo, kas viduje |
Katalogo x – painiausia vieta, todėl pratęskime durų modelį. Katalogo r yra langas: pro jį matai, kas kambaryje. x yra durys: pro jas įeini. Pro langą gali matyti turinį, bet nieko paliesti negali. O be durų į kambarį nepateksi net tada, kai daiktų viduje teisės leistų viską – kelias užtvertas anksčiau.
Gyvas pavyzdys: Mint 22.3 ir Ubuntu namų katalogams nustato teises rwxr-x---. „Kiti“ neturi x, todėl kitas sistemos vartotojas į /home/ona net neįeis – nesvarbu, kokios teisės nustatytos failams viduje.
Skaičių kodas: 4, 2, 1
Tą pačią eilutę galima užrašyti skaičiais: r = 4, w = 2, x = 1, o tripleto skaičius – jo teisių suma. rw- = 4 + 2 = 6, r-- = 4, rwx = 7. Todėl -rw-rw-r-- ir 664 – tas pats dviem kalbomis.
Visų kombinacijų mokytis nereikia. Užtenka atpažinti tas, kurias sutiksi nuolat:
| Skaičius | Raidėmis | Kur naudojama |
|---|---|---|
644 |
rw-r--r-- |
įprastas failas: savininkas keičia, kiti tik skaito |
755 |
rwxr-xr-x |
vykdomas failas ar katalogas: paleisti gali visi, keisti – tik savininkas |
600 |
rw------- |
slaptas failas: .env su API raktu, SSH privatusis raktas |
700 |
rwx------ |
katalogas tik sau, pavyzdžiui, atsarginių kopijų katalogas su slaptais failais |
777 |
rwxrwxrwx |
viskas visiems – nenaudok (kodėl – žemiau) |
Raidės patogios skaityti, skaičiai – rašyti komandose.
644skaityk „savininkas keičia, kiti tik žiūri“,755– „savininkas daro viską, kiti gali paleisti“.
chmod: teisių keitimas
chmod (iš change mode) keičia teises dviem būdais.
Simbolinis – prideda ar atima po vieną teisę. Formulė: kam (u, g, o) + ką darai (+ arba -) + kurią teisę (r, w, x):
chmod u+x scenarijus.sh
ls -l scenarijus.sh
-rwxrw-r-- 1 ona ona 27 liep. 25 08:25 scenarijus.sh
Pirmajame triplete atsirado x, o dydis ir data nepasikeitė – keitei spynas, ne kambarį. Atšaukiama priešinga komanda chmod u-x. Panašiai g-w atima keitimo teisę iš grupės, o-r – skaitymo teisę iš kitų.
Skaitinis – vienu kartu perrašo visus tris tripletus ir nustato tikslią galutinę būseną:
chmod 644 scenarijus.sh
Po šios komandos ls -l rodys -rw-r--r--: x dingo, o grupė neteko w. Simbolinis būdas tinka, kai žinai, ką pakeisti; skaitinis – kai žinai, kaip turi būti galiausiai.
Patikrai patogi trumpa komanda – ji rodo tik teises, savininką ir vardą:
stat -c '%A %U %n' scenarijus.sh
-rw-r--r-- ona scenarijus.sh
chown: savininko keitimas
Klasikinė situacija: savo namų kataloge sukūrei katalogą su sudo, o dabar jame negali nieko sukurti.
cd ~
sudo mkdir projektas
ls -ld projektas
drwxr-xr-x 2 root root 4096 liep. 25 08:40 projektas
Parinktis -d rodo patį katalogą, ne jo turinį. Savininkas – root, o tau, kaip „kitam“, liko r-x: gali įeiti ir apsižiūrėti, bet w nėra, todėl touch projektas/failas.txt baigtųsi Permission denied. Sprendimas – perduoti nuosavybę:
sudo chown ona:ona projektas
ls -ld projektas
drwxr-xr-x 2 ona ona 4096 liep. 25 08:40 projektas
chown (iš change owner) priima vartotoją ir, po dvitaškio, grupę. Teisių eilutė nepasikeitė – pasikeitė tik tai, kam taikomas pirmasis tripletas. chown beveik visada rašoma su sudo, net tavo namuose: jei nuosavybę galėtų perleisti bet kas, visos teisių taisyklės būtų lengvai apeinamos.
Permission denied: kaip rasti trūkstamą raidę
Klasikinis atvejis – ką tik parašytas scenarijus:
./scenarijus.sh
bash: ./scenarijus.sh: Permission denied
Naujas failas gimė su rw-rw-r-- – be x, todėl apvalkalas atsisako jį vykdyti. Sprendimas – viena raidė: chmod u+x scenarijus.sh (arba chmod 755 scenarijus.sh, jei paleisti turi galėti ir kiti), ir scenarijus pasileidžia.
Bendra tvarka bet kuriai Permission denied klaidai:
- Perskaityk klaidą lėtai. Ji visada sako, kokį veiksmą sistema atmetė: skaityti, rašyti ar vykdyti.
- Pažiūrėk teises:
ls -l failas(katalogui –ls -ld katalogas). - Patikrink, kas tu esi:
whoami– gal dirbi ne tuo vartotoju. - Jei veiksmui tikrai reikia administratoriaus teisių, kartok su
sudo– bet tik supratęs, ką komanda daro.sudonėra būdas apeiti nesuprastą klaidą.
Kodėl ne chmod 777 ir atsargiai su -R
Forumuose prie kiekvienos teisių problemos kas nors pasiūlo chmod 777. Tai „veikia“, nes kai leidžiama viskas, Permission denied nebeatsiranda. Bet problema ne išsprendžiama – iš staktos tiesiog išimamos durys. Po to failą gali pakeisti ar paleisti bet kuris sistemos vartotojas, o serveryje – ir įsilaužėlio perimta programa. Teisinga tvarka: perskaityk teises, rask trūkstamą raidę ir pridėk tik ją.
chmod su parinktimi -R pakeičia ne vieną failą, o viską kataloge ir visuose jo pakatalogiuose. Savo duomenims tai patogu. Tačiau sudo chmod -R prie sistemos katalogų (/etc, /usr, /) vienu kartu perrašo tūkstančių failų teises, o kelio atgal nėra: kiekvienas sistemos failas turėjo savas pradines teises, ir niekas jų iš anksto neišsaugojo. Po to sistema gali nebeįsikelti. Todėl eksperimentuok virtualioje mašinoje su momentine kopija.
Pamiršai, kokios teisės buvo? Trys tvarkingi atsakymai, nuo kurių gali tikslinti toliau: paprastam failui – 644, vykdomam scenarijui – 755, katalogui – 755.
Kur teisės svarbiausios praktikoje
- Slapti raktai. API raktas laikomas
.envfaile suchmod 600– skaityti gali tik tu. - SSH. SSH ignoruoja privatųjį raktą, kurį gali skaityti kiti, todėl
~/.ssh/id_ed25519turi rodyti-rw-------. Visas taisykles aprašėme straipsnyje SSH raktai: prisijungimas be slaptažodžio. - Programos. Diegiamos programos paprastai atkeliauja su
755: paleisti gali visi, keisti – tikroot.
Darbalaukyje tas pačias teises rodo ir failų tvarkyklė: dešinysis pelės mygtukas → „Savybės“ → „Leidimai“. Varnelė „Leisti vykdyti failą kaip programą“ – tai ta pati x. Kitas teisėms artimas komandas (whoami, id, sudo) rasi Linux komandų atmintinėje.
Dažni klausimai
Ką reiškia chmod 755?
rwxr-xr-x: savininkas skaito, keičia ir vykdo (7), grupė ir kiti – skaito ir vykdo (5). Įprasta vykdomo failo ir katalogo būsena.
Kodėl chmod 777 yra blogas patarimas?
Jis suteikia visas teises visiems: klaida dingsta, bet failą gali keisti ir paleisti bet kas. Pridėk tik trūkstamą raidę, pavyzdžiui, chmod u+x.
Kuo skiriasi chmod ir chown?
chmod keičia teises, chown – savininką ir grupę, kuriems tos teisės taikomos. chown beveik visada rašoma su sudo.
Ką reiškia chmod 600?
rw-------: skaityti ir keisti gali tik savininkas. Taip saugomi slapti failai – .env su API raktu ar SSH privatusis raktas.
Kodėl gaunu Permission denied, nors failas mano?
Dažniausiai trūksta vienos raidės: scenarijui – x (chmod u+x), o katalogui x reikia, kad galėtum į jį įeiti.
Teisės – ne kliūtis, o apsauga
Knygos „Linux nuo nulio“ 9 skyriuje Permission denied iššauki tyčia ir ištaisai dviem būdais – simboliniu ir skaitiniu – bandomajame kataloge, kur klaida nieko nekainuoja. Vėliau tos pačios teisės saugo tavo serverio raktus, atsargines kopijas ir AI paslaugos API raktą. Visos 9 skyriaus komandos – priedo komandų puslapyje, o platesnį mokymosi kelią aprašėme straipsnyje Linux pradedantiesiems: nuo ko pradėti.
Pradėk nuo nemokamos ištraukos (įvadas ir visas terminalo skyrius, registruotis nereikia), o jei patiks – įsigyk knygą.