През последните няколко месеца бях на курс по Linux и един аспект на Linux, който винаги ме бъркаше, беше как разрешенията работят. Например, когато качвате файл на моя уеб сървър веднъж и получавате грешка, ми беше казано от уеб хоста ми да променя разрешенията за файлове до 755.
Нямах представа какво означава това, въпреки че промяната на разрешенията реши проблема. Вече разбрах, че разрешенията на Linux не са толкова сложни, просто трябва да разберете системата. В тази статия ще говоря за разрешения за Linux на високо ниво и ще ви покажа как да използвате командата chmod за промяна на разрешения за файлове и папки.
Разрешения и нива на Linux
В Linux има три основни разрешения, за които обикновено трябва да се притеснявате: четене, писане и изпълнение. И трите са доста очевидни. Сега, когато тези разрешения се прилагат към файл, те се прилагат в нива.
Има три нива на разрешения в Linux: собственик, група и други. Собственикът е потребителят, който притежава файла / папката, групата включва други потребители в групата на файла и други просто представляват всички други потребители, които не са собственик или в групата.
Четене, запис и изпълнение се представят или като символни символи, или като осмични числа. Например, ако направите ls -l в директория с някои файлове, ще видите символното представяне на разрешенията.
Разрешенията се записват по следния начин: първият бит е или тире, или буквата d. Dash означава, че е файл и d означава директория. Имайте предвид, че първият бит може да бъде и l, ако името на файла е връзка. След това има три групи от по три бита. Първият бит във всяка група е за четене, вторият бит е за запис и третия бит е за изпълнение. Първите три бита са за собственика, вторите три за групата, а третите три за други. Ето по-визуално обяснение.
Ако вместо писмо видите тире, това означава, че собственикът, групата или всички други потребители нямат това разрешение. В примера по-горе собственикът, групата и всички останали имат права за четене и изпълнение.
Ако погледнете изхода от командата ls -l, ще забележите, че моят текстов файл на практика има следните разрешения:
-rw-RW-RW-
Това означава, че всеки има само разрешения за четене / запис за файла. Ето още един пример:
drwxr - r--
Ако погледнем първия бит, можем да видим, че разрешенията са за директория. Собственикът има права за четене / запис / изпълнение, но групата и другите потребители имат само разрешение за четене.
Октално число
Ето как разрешенията се показват в Linux с помощта на символи. Вторият начин за представяне на същите разрешения е чрез използване на осмични числа. Когато използваме командата chmod по-късно, ще видите, че можете да промените разрешенията, използвайки символи или осмични числа.
И така, как Linux представя четене, писане и изпълнение, използвайки осмични числа? По принцип, той само присвоява номер на всяко разрешение, както е показано по-долу.
Разрешението за четене е представено с 4, запис от 2 и изпълнение от 1. Всичко, което трябва да направите, е да ги добавите, за да получите окталното разрешение. Да вземем например примера по-горе, където всеки има всички разрешения:
-rwxrwxrwx
Собственикът има rwx, така че ще добавим 4 + 2 + 1, за да получим стойност 7. Правим същото за групата и за едно и също. Крайната осмична стойност е 777. Нека да разгледаме примера, в който даваме само разрешения за четене / запис:
-rw-RW-RW-
Първото осмично число ще бъде 4 + 2, тъй като ние добавяме четене и запис. Вторият ще бъде същият като този на третото осмично число. Тук имаме крайна осмична стойност от 666.
Така че сега нека опитаме по друг начин. Да кажем, че искаме да знаем какво представлява разрешението 755 ? Е, доста лесно е да разберем дали ще го разделиш по отделни номера. Първото число е 7, което можем да получим само като добавим 4 + 2 + 1, което означава, че собственикът има разрешение за четене / запис / изпълнение. Пет могат да бъдат придобити само чрез добавяне на 4 + 1, което означава, че групата и другите потребители са чели и изпълнявали разрешения.
Надяваме се, че това е добро обяснение за това как да представяте разрешения в Linux с помощта на осмични числа. Това е доста просто като цяло.
Използване на chmod за промяна на разрешения
Сега, когато разбираме как да четем разрешения, нека поговорим за това как можем да ги променяме. Най-лесната програма за тази цел е командата chmod. Ето как работи. Най-добрият начин да обясните командата е да преминете през пример.
Да започнем с разрешенията, за които говорихме по-горе, а именно:
-rw-RW-RW-
Ако искаме да добавим разрешение за изпълнение за собственик, група и други, можем да го направим по два начина. Можем да използваме метода на символите или осмичния метод. За символния метод ще направим следното, както е показано по-долу:
Точната команда е
chmod a + x име на файл
Синтаксисът е както следва: буквата или буквите, представляващи собственика ( u ), група ( g ), други ( o ) или всички ( a ), последвани от + за добавяне на разрешения или - за отнемане на разрешения и след това писмо за разрешение ( r за четене, w за запис и x за изпълнение).
В горния пример добавих разрешение за изпълнение за всички потребители. Резултатът, който можете да видите на екрана по-горе, е x за собственик, група и други. Да речем, че искам да премахна разрешенията за писане и изпълнение само за групата и другите потребители.
Както можете да видите тук, използвах следната команда, за да постигна това:
име на файла chmod go-wx
Тъй като искам да променя разрешенията за група и други, използвам буквата g и буквата o . Искам да премахна разрешенията, затова използвам знака - . И накрая, искам да премахна разрешенията за писане и изпълнение, така че използвам w и x . Ето една удобна малка маса за използване на символа:
Така че това е всичко, което трябва да се използва метода символ. Сега да поговорим за осемтения метод, който е малко по-лесен. Octal е хубаво, защото можете да добавяте или премахвате разрешения всички наведнъж.
Ако започнем със следните разрешения за даден файл, нека да видим как можем да ги променим, като използваме осмичния метод:
-rw-RW-RW-
По-горе можете да видите, че използвах следната команда:
име на файла chmod 744
Това основно казва, че собственикът получава разрешение за четене / запис / изпълнение, а групата и другите получават само разрешение за четене. Както виждате, лесно е да добавяте или премахвате разрешения в една проста команда. Нека продължим да казваме, че искам отново да променя разрешенията.
Сега използвах следната команда, отново много проста:
chmod 640 име на файл
Тук сме дали на собственика права за четене / запис, само разрешението за четене на групата и другата група няма разрешения. Използвате нула за означаване на никакви разрешения. Доста проста, нали?
В заключение, това е много прост преглед на разрешенията на Linux и може да стане много по-сложно от това, но за начинаещи, това е добро място за започване. В бъдеще ще публикувам още статии за по-усъвършенствани разрешения. Ако имате някакви въпроси, не се колебайте да коментирате. Наслади се!