Введение
В этом практическом занятии (лабораторной работе) вы научитесь определять, является ли файл исполняемым в Linux, используя различные методы. Вы начнете с использования команды test с опцией -x для проверки исполняемых разрешений и поймете, как интерпретировать ее статус завершения.
Затем вы узнаете, как использовать команду ls -l для просмотра подробных разрешений файла и идентификации флага исполняемости. Наконец, вы научитесь использовать команду stat для проверки информации о доступе к файлу, что представляет собой еще один способ подтвердить исполняемость файла.
Проверка исполняемости с помощью test -x
На этом этапе вы научитесь проверять, является ли файл исполняемым, используя команду test с опцией -x. Команда test является встроенной командой оболочки (shell), которая оценивает условные выражения. Опция -x предназначена для проверки исполняемых разрешений.
Сначала создадим простой текстовый файл в каталоге ~/project. Используем команду echo для записи некоторого текста в файл с именем my_script.sh.
echo "echo 'Hello from the script!'" > ~/project/my_script.sh
Теперь проверим, является ли этот файл исполняемым. По умолчанию, когда вы создаете новый файл таким образом, у него не будут исполняемые разрешения.
Используйте команду test -x, за которой следует путь к файлу:
test -x ~/project/my_script.sh
После выполнения этой команды вы не увидите никакого вывода, если проверка прошла успешно (то есть файл НЕ является исполняемым). Если бы файл был исполняемым, команда test -x вернула бы статус 0, который обычно интерпретируется как "истина" или "успех" в сценариях оболочки (shell scripting), но по умолчанию она не выводит ничего в терминал.
Чтобы увидеть результат команды test, мы можем проверить статус завершения предыдущей команды, используя $?. Статус завершения 0 означает, что проверка дала истинный результат (файл является исполняемым), а не нулевой статус (обычно 1) означает, что проверка дала ложный результат (файл не является исполняемым).
echo $?
Вы должны увидеть вывод 1, что указывает на то, что my_script.sh в настоящее время не является исполняемым.
Теперь сделаем файл исполняемым с помощью команды chmod. Команда chmod используется для изменения разрешений файлов и каталогов. Мы используем +x для добавления исполняемых разрешений для владельца файла.
chmod +x ~/project/my_script.sh
Теперь проверим исполняемость файла еще раз:
test -x ~/project/my_script.sh
И проверим статус завершения:
echo $?
На этот раз вывод должен быть 0, что подтверждает, что файл теперь является исполняемым.
Наконец, попробуем запустить скрипт, чтобы увидеть вывод:
~/project/my_script.sh
Вы должны увидеть:
Hello from the script!
Это подтверждает, что вы успешно сделали файл исполняемым и запустили его.
Проверка разрешений с помощью ls -l
На этом этапе вы научитесь просматривать подробные разрешения файлов с помощью команды ls -l. Эта команда предоставляет расширенный формат списка, показывая различные атрибуты файлов и каталогов, включая разрешения, владельца, размер и время изменения.
Перейдите в каталог ~/project, если вы еще не находитесь в нем. Вы можете использовать команду cd:
cd ~/project
Теперь выведите список файлов в этом каталоге с помощью команды ls -l:
ls -l
Вы должны увидеть вывод, похожий на следующий (точные детали, такие как дата и время, могут отличаться):
-rwxr-xr-x 1 labex labex 30 <date> <time> my_script.sh
Разберем первую часть вывода, которая представляет разрешения файла: -rwxr-xr-x. Эта строка из десяти символов сообщает вам много о том, кто может делать с файлом.
Первый символ указывает на тип файла:
-: Обычный файл (как нашmy_script.sh)d: Каталогl: Символическая ссылка
Следующие девять символов группируются в три группы по три символа, представляющие разрешения для:
- Владельца: Пользователь, который владеет файлом (в данном случае,
labex). - Группы: Группа, которая владеет файлом (также
labex). - Других: Все остальные пользователи системы.
В каждой группе из трех символов разрешения представляются следующим образом:
r: Разрешение на чтение (позволяет просматривать содержимое файла)w: Разрешение на запись (позволяет изменять или удалять файл)x: Разрешение на выполнение (позволяет запускать файл как программу)-: Указывает, что разрешение не предоставлено
Таким образом, для -rwxr-xr-x:
- Владелец (
labex) имеет разрешенияrwx: чтение, запись и выполнение. - Группа (
labex) имеет разрешенияr-x: чтение и выполнение, но не запись. - Другие имеют разрешения
r-x: чтение и выполнение, но не запись.
Этот вывод подтверждает, что после использования chmod +x на предыдущем этапе, владельцу (labex) теперь предоставлено разрешение на выполнение (x) для файла my_script.sh.
Вы также можете использовать ls -l для проверки разрешений каталогов. Например, давайте посмотрим на разрешения для самого каталога ~/project:
ls -ld ~/project
Опция -d сообщает команде ls вывести информацию о самом каталоге, а не о его содержимом. Вывод может выглядеть следующим образом:
drwxr-xr-x 2 labex labex 4096 <date> <time> /home/labex/project
Здесь первый символ d указывает, что это каталог. Разрешения rwxr-xr-x означают:
- Владелец (
labex) имеет разрешения на чтение, запись и выполнение в каталоге. Для каталога разрешение на "выполнение" позволяет вам войти в каталог и получить доступ к его содержимому. - Группа (
labex) и другие имеют разрешения на чтение и выполнение в каталоге, но не на запись.
Понимание вывода команды ls -l является фундаментальным для работы с файлами и разрешениями в Linux.
Проверка доступа к файлу с помощью stat
На этом этапе вы будете использовать команду stat для получения подробной информации о файле, включая время доступа, модификации и изменения, а также его разрешения в более структурированном формате, чем ls -l.
Команда stat отображает статус файла. Она может быть особенно полезна при написании скриптов или когда вам нужны точные временные метки.
Давайте используем stat для файла my_script.sh, который вы создали на предыдущих этапах. Убедитесь, что вы находитесь в каталоге ~/project или укажите полный путь к файлу.
stat ~/project/my_script.sh
Вы увидите вывод, похожий на следующий:
File: /home/labex/project/my_script.sh
Size: 30 Blocks: 8 IO Block: 4096 regular file
Device: <device_id> Inode: <inode_number> Links: 1
Access: (<permissions>/-rwxr-xr-x) Uid: ( 5000/ labex) Gid: ( 5000/ labex)
Access: <date> <time>.<nanoseconds> +<timezone_offset>
Modify: <date> <time>.<nanoseconds> +<timezone_offset>
Change: <date> <time>.<nanoseconds> +<timezone_offset>
Birth: -
Рассмотрим некоторые ключевые строки в выводе:
File: Имя и путь к файлу.Size: Размер файла в байтах.Access: (<permissions>/-rwxr-xr-x): Эта строка показывает разрешения файла как в восьмеричном формате (например,0755, которое соответствуетrwxr-xr-x), так и в символьном формате, который вы видели с помощьюls -l. Также здесь показаны идентификаторы пользователя (Uid) и группы (Gid) владельца файла и его группы.Access: Время последнего доступа (чтения) к файлу.Modify: Время последнего изменения содержимого файла.Change: Время последнего изменения метаданных файла (например, разрешений, владельца и т.д.).Birth: Время создания файла (может отсутствовать на некоторых файловых системах).
Команда stat предоставляет более подробный обзор информации о файле по сравнению с ls -l. Она особенно полезна, когда вам нужно проверить временные метки или числовое представление разрешений.
Вы также можете использовать stat для каталогов:
stat ~/project
Вывод будет аналогичным, но тип File будет указывать, что это каталог.
Попробуйте использовать stat для разных файлов и каталогов в вашем каталоге ~/project, чтобы увидеть различия в выводе.
Резюме
В этом практическом занятии вы научились проверять, является ли файл исполняемым в Linux с помощью команды test -x. Вы создали простой скриптовый файл, использовали test -x и проверили статус завершения (echo $?), чтобы подтвердить его первоначальное состояние неисполняемости (статус завершения 1). Затем вы использовали chmod +x для добавления разрешения на выполнение и проверили изменения с помощью test -x и echo $?, наблюдая статус завершения 0.
Вы также исследовали альтернативные методы проверки разрешений файлов. Используя ls -l, вы научились интерпретировать строку разрешений, в частности символ 'x', чтобы определить исполняемые файлы. Наконец, вы использовали команду stat для просмотра подробной информации о файле, включая разрешения на доступ, что представляет собой еще один способ подтвердить исполняемость файла.



