Ако сте използвали Linux за известно време (и дори OS X), вероятно ще срещнете грешка "разрешения". Но какво точно са те и защо са необходими или полезни? Нека да вземем вътрешен поглед.
През деня компютрите бяха масивни машини, които бяха невероятно скъпи. За да се възползват максимално от тях, бяха свързани няколко терминала за компютри, които позволиха на много потребители да работят едновременно. Обработката и съхраняването на данни са извършени на машината, докато самите терминали са малко повече от средство за преглеждане и въвеждане на данни. Ако мислите за това, всъщност това е начинът, по който имаме достъп до данните за "облака"; погледнете в системата на Amazon Cloud MP3, Gmail и Dropbox и ще забележите, че докато промените могат да бъдат направени локално, всичко се съхранява дистанционно.
(Изображение: Zenith Z-19 "глупав" терминал; кредит: ajmexico)
За да работи това, отделните потребители трябва да имат профили. Те трябва да разполагат с част от пространството за съхранение, която им е определена, и трябва да им се даде възможност да изпълняват команди и програми. Всеки има конкретни "потребителски разрешения", които диктува какво могат и не могат да направят, къде в системата правят и нямат достъп, и чиито файлове могат и не могат да променят. Всеки потребител също се поставя в различни групи, които предоставят или ограничават допълнителен достъп.
В този чакащ свят за много потребители вече сме настроили граници за това, какво могат да направят потребителите. Но какво да кажем за достъп до тях? Е, всеки файл има набор от разрешения и собственик. Определянето на собственика, обикновено обвързано при създаването на файла, декларира кой потребител принадлежи на него и само този потребител може да променя своите разрешения за достъп.
В света на Linux разрешенията са разделени на три категории: четене, писане и изпълнение. Достъпът "Четене" позволява да се види съдържанието на даден файл, достъпът "пишете" позволява да се променя съдържанието на файла и "изпълнение" позволява да се изпълни набор от инструкции, като скрипт или програма. Всяка от тези категории се прилага към различни класове: потребител, група и свят. "Потребител" означава собственик, "група" означава всеки потребител, който е в същата група като собственик, и "свят" означава всеки и всички.
Папките могат също да бъдат ограничени с тези разрешения. Можете например да позволите на други хора във вашата група да преглеждат директории и файлове в домашната ви папка, но не и някой извън вашата група. Вероятно ще искате да ограничите достъпа до "само", освен ако не работите върху споделен проект от някакъв вид. Можете също така да създадете споделена директория, която позволява на всеки да преглежда и променя файловете в тази папка.
GUI
За да промените разрешенията на файл, който притежавате в Ubuntu, трябва само да кликнете с десния бутон на мишката върху файла и да отидете на "Properties".
Можете да промените дали собственикът, групата или други хора могат да четат и пишат, да четат само или да не правят нищо. Можете също така да поставите отметка в квадратчето, за да разрешите изпълнението на файла, и това ще го даде едновременно на собственика, групата и други лица.
Командна линия
Можете също да направите това чрез командния ред. Отидете в директория с файлове в нея и въведете следната команда, за да видите всички файлове в списък:
ls -al
До всеки файл и директория ще видите специална секция, която очертава разрешенията, които има. Това изглежда така:
-rwxrw-r-
Най- R означава "прочетете" w означава "пишете" и х означава "изпълни". Директорите ще започнат с "d" вместо с "-". Ще забележите също, че има 10 интервала, които държат стойност. Можете да пренебрегнете първото, а след това има 3 набора от 3. Първият комплект е за собственика, вторият комплект е за групата, а последният комплект е за света.
За да промените разрешенията на файл или директория, нека разгледаме основната форма на командата chmod.
chmod [клас] [оператор] [разрешение] файл
chmod [ugoa] [+ или -] [rwx] файл
Това може да изглежда сложно в началото, но повярвайте ми, това е доста лесно. Първо, нека да разгледаме класовете:
След това операторите:
Все още ли с мен? А последният раздел е същият като когато проверихме разрешенията на файл:
Сега, да ги съберем заедно. Да приемем, че имаме файл, наречен "todo.txt", който има следните разрешения:
-rw-RW-r-
Това означава, че собственикът и групата могат да четат и пишат, а светът може само да чете. Искаме да променим разрешенията за тях:
-rwxr-
Това означава, че собственикът има пълно разрешение и групата може да чете. Можем да направим това на 3 стъпки. Първо, ще добавим разрешението за изпълнение на потребителя.
chmod u + x todo.txt
След това ще премахнем разрешението за писане за групата.
chmod g-w todo.txt
И накрая, ще премахнем разрешенията за четене за всички останали потребители.
chmod o-r todo.txt
Също така можем да ги комбинираме в една команда:
chmod u + x, g-w, o-r todo.txt
Можете да видите, че всеки раздел е разделен със запетаи и няма интервали.
Ето някои полезни разрешения:
Има няколко други неща, които можете да правите с chmod - като setuid и setgid - но те са малко по-задълбочени и повечето потребители няма да имат нужда да ги използват така или иначе.
В днешно време не винаги пускаме системи, които имат няколко потребители. Защо все още трябва да се тревожим за разрешенията?
Е, Unix и неговите производни - Linux, OS X, между другото - също така разграничават неща, управлявани от потребителя, неща, които се управляват от администратор или с администраторски права, и неща, управлявани от самата система. Като такива, нещата, които са неразделна част от системата, изискват администраторски права да бъдат променени или достъпни. По този начин не правите нищо случайно.
В Ubuntu, за да правите промени в системните файлове, които използвате, "судоку" или "gksudo", за да получите еквивалент на привилегии на администратор. В други дистрибуции превключвате на "глас" или "супер-потребител", което ефективно прави същото, докато не излезете.
Имайте предвид, че и при двете обстоятелства, промяната на разрешенията на файловете може да доведе до неработещи програми, които неволно променят собствеността на файла на root потребителя (вместо на собственика) и да направят системата по-малко сигурна (чрез предоставяне на повече разрешения). Като такъв препоръчваме да не променяте разрешенията за файлове - особено системните файлове - освен ако не е необходимо или знаете какво правите.
Има разрешения за файлове, за да се осигури основна система за сигурност сред потребителите. Да научите как работят те могат да ви помогнат да установите основно споделяне в мулти-потребителска среда, да защитите файловете на "аудиторията" и да ви дадат представа кога нещо се обърка със собствеността на системния файл.
Мислите, че можете да обясните нещата по-лесно? Имате ли корекция? Искате ли да напомните за старите дни? Направете почивка и поставете мислите си в коментарите.