Това, което прави Linux различен от Windows по отношение на изпълнението на файлове, е, че първата система определя изпълнимите файлове като програмни файлове не чрез тяхното разширение, а чрез специален флаг за изпълнимост. Така че всеки файл има три режима на изпълнимост: четене, изпълнение и запис. Именно тези режими определят какво може да прави системата с даден файл. Когато потребителят изтегля различни инсталатори от интернет или създава скрипт, по подразбиране му се задават следните режими: четене и запис. Накратко, потребителят няма да може да прави нищо с такава програма, тъй като с нея трябва да се направи нещо друго.
Но преди всичко трябва да се занимаем с такъв въпрос като: какво е изпълнимост и какво означава тя по принцип? Нека започнем с програмата, която представлява набор от инструкции, изпълнявани от процесор върху набор от данни, за да се получи желаният резултат. За процесора няма разлика между инструкциите и данните.
Както първите, така и вторите се състоят от цифри - байтове. Това означава, че определена комбинация от цифри ще означава за процесора необходимостта от извършване на определено действие. За процесора няма принципна разлика кой процес да се изпълни - данни на операционната система или текстов файл. И първото, и второто ще бъдат изпълнени, с изключение на това, че в случая с текстовия файл необходимостта от инструкции всъщност отпада.
Флаговете за изпълняемост са измислени, за да може системата да разбере кои инструкции трябва да се изпълняват и кои не трябва да се изпълняват. Всъщност съдържанието не се променя по никакъв начин в зависимост от зададения клас на изпълнимост - разликата се свежда само до няколко реда. При скриптовете всичко работи по същия начин, само че командите се изпълняват не от процесора, а от интерпретатор, например при bash скриптовете - от самата bash обвивка. Обикновените програми също имат свой собствен програматор за зареждане - това е ld-linux.so.2.
Системата Linux разполага със специална помощна програма, която ви позволява да управлявате флаговете, която се нарича chmod
. За да извикате тази помощна програма, трябва да използвате синтаксиса:
$ chmod category action flag file_address
И тук трябва да се има предвид следното:
Флаг - един от наличните флагове -
r
(четене),w
(запис),x
(изпълнение).Категория - може да се зададе за три категории: собственик на файла, група данни и всички останали потребители. В командата те са обозначени съответно с
u
(user)g
(group)o
(other).Действие - може да бъде + (плюс), което ще означава задаване на флага, или - (минус) премахване на флага.
По този начин, за да направи даден скрипт изпълним в Linux, потребителят трябва да изпълни:
$ chmod u+x file_address
Често това вече е достатъчно, за да го направи изпълним, но ако други потребители трябва да бъдат упълномощени да изпълняват тези файлове, трябва да се добави още нещо:
$ chmod ugo+x file_address
За да ги видите в терминала, просто използвайте помощната програма ls:
$ ls -l file_directory
Флаговете са включени за всички категории. Първите rwx
са флагове за собственика, вторите са за групата, а третите са за всички останали. Ако не е зададено, на негово място ще се постави тире.
Отмяната на настройката на флага за изпълними файлове е много лесна. Използва се същата команда, само че със знак минус:
$ chmod u-x file_address
След това нека разгледаме въпроса за задаване на управляемост в графичния потребителски интерфейс.
За начинаещите тази инструкция ще бъде по-лесна. Нека вземем за пример мениджъра на GNOME, Nautilus. Щракнете с десния бутон на мишката върху обекта на нашата програма или скрипт, за да отворите контекстното меню, след което изберете Свойства:
Отидете в раздела за разрешения и поставете отметка на "Разреши на файла да се изпълнява като програма":
Сега той ще бъде стартиран от системата директно от мениджъра. Това е цялата инструкция. Сега вече няма да имате никакви затруднения със стартирането на програма или скрипт от интернет.