Введение
В этом практическом занятии (лабораторной работе) вы научитесь проверять, можно ли прочитать файл в Linux, используя различные инструменты командной строки. Вы начнете с использования основанной команды test -r для программной проверки прав на чтение и поймете, как ее использовать в условных выражениях.
Затем вы изучите команду ls -l для визуального просмотра прав доступа к файлам, узнаете о строке прав доступа и ее значении. Наконец, вы разберётесь с командой stat для получения подробной информации о файле, включая права доступа и другие метаданные. Завершив эти шаги, вы получите практические навыки определения возможности чтения файлов в среде Linux.
Проверка возможности чтения с помощью test -r
На этом этапе вы научитесь проверять, есть ли у вас права на чтение файла, используя команду test с опцией -r.
Команда test является встроенной командой оболочки (shell), которая вычисляет условные выражения. Часто она используется в скриптах оболочки для принятия решений. Опция -r специально предназначена для проверки существования файла и возможности его чтения текущим пользователем.
Создадим простой файл для проверки этого. Мы будем использовать команду echo, чтобы поместить некоторый текст в файл с именем my_file.txt в каталоге ~/project.
Введите следующую команду и нажмите Enter:
echo "This is a test file." > ~/project/my_file.txt
Эта команда создает файл ~/project/my_file.txt и записывает в него строку "This is a test file." Символ > перенаправляет вывод команды echo в указанный файл.
Теперь используем test -r для проверки, можно ли прочитать этот файл. Команда test сама по себе не выводит результат, если условие истинно. Обычно мы комбинируем ее с другими командами, такими как echo, чтобы увидеть результат.
Введите следующую команду и нажмите Enter:
test -r ~/project/my_file.txt && echo "File is readable."
Оператор && означает "выполнить команду справа только в том случае, если команда слева завершилась успешно (вернула нулевой статус выхода)". Если test -r ~/project/my_file.txt возвращает истину (то есть файл доступен для чтения), команда echo будет выполнена.
Вы должны увидеть следующий вывод:
File is readable.
Теперь попробуем проверить файл, который не существует.
Введите следующую команду и нажмите Enter:
test -r ~/project/non_existent_file.txt && echo "This won't be printed."
Поскольку файл ~/project/non_existent_file.txt не существует, команда test -r вернет ненулевой статус выхода (ошибку), и команда echo не будет выполнена. Вы не должны увидеть никакого вывода от этой команды.
Команда test является основным инструментом для написания скриптов в Linux. Понимание того, как использовать ее различные опции, такие как -r, является важным для написания надежных скриптов, которые могут проверять права доступа и существование файлов перед выполнением операций.
Нажмите Продолжить, чтобы перейти к следующему шагу.
Проверка прав доступа с помощью ls -l
На предыдущем этапе вы использовали команду test -r для проверки, можно ли прочитать файл. Теперь давайте воспользуемся командой ls с опцией -l, чтобы посмотреть подробные права доступа к файлу.
Команда ls выводит содержимое каталога. Опция -l предоставляет "длинный формат вывода", который включает информацию о типе файла, правах доступа, количестве жестких ссылок, владельце, группе, размере, времени последнего изменения и имени файла.
Давайте посмотрим на права доступа к файлу my_file.txt, который вы создали на предыдущем этапе. Убедитесь, что вы находитесь в каталоге ~/project. Вы можете проверить текущий каталог с помощью команды pwd:
pwd
Вы должны увидеть /home/labex/project.
Теперь введите следующую команду и нажмите Enter:
ls -l my_file.txt
Вы увидите вывод, похожий на следующий:
-rw-rw-r-- 1 labex labex XX Month XX XX:XX my_file.txt
Разберём первую часть вывода, которая представляет тип файла и права доступа:
-rw-rw-r--
Эта строка из десяти символов содержит много информации о правах доступа к файлу.
Первый символ указывает на тип файла:
-означает, что это обычный файл.dозначает, что это каталог.lозначает, что это символическая ссылка.- (Существуют и другие типы, но эти наиболее распространены).
Следующие девять символов разделены на три группы по три символа:
- Первая группа (
rw-) показывает права доступа владельца файла. - Вторая группа (
rw-) показывает права доступа группы, к которой принадлежит файл. - Третья группа (
r--) показывает права доступа других (всех остальных).
- Первая группа (
В каждой группе из трех символов:
- Первый символ указывает на право чтения (
r). Если присутствует дефис (-), право на чтение запрещено. - Второй символ указывает на право записи (
w). Если присутствует дефис (-), право на запись запрещено. - Третий символ указывает на право исполнения (
x). Если присутствует дефис (-), право на исполнение запрещено.
Таким образом, для файла my_file.txt с правами -rw-rw-r--:
- Владелец (
labex) имеет права на чтение (r) и запись (w), но не имеет права на исполнение (-). - Группа (
labex) имеет права на чтение (r) и запись (w), но не имеет права на исполнение (-). - Другие имеют право на чтение (
r), но не имеют прав на запись (-) и исполнение (-).
Этот вывод подтверждает, что владельцу (labex) есть право на чтение, поэтому команда test -r сработала на предыдущем этапе.
Понимание вывода команды ls -l является фундаментальным для управления файлами и каталогами в Linux и контроля доступа к ним.
Нажмите Продолжить, чтобы перейти к следующему этапу.
Проверка доступа к файлу с помощью stat
На этом этапе вы будете использовать команду stat для получения подробной информации о файле, включая время последнего доступа, изменения и модификации, а также права доступа в символьном и числовом форматах.
В то время как команда ls -l дает хорошее представление о правах доступа, команда stat позволяет более детально изучить метаданные файла.
Давайте применим команду stat к файлу my_file.txt, который вы создали ранее в каталоге ~/project.
Введите следующую команду и нажмите Enter:
stat ~/project/my_file.txt
Вы увидите вывод, похожий на следующий:
File: /home/labex/project/my_file.txt
Size: XX Blocks: X IO Block: XXXX regular file
Device: XXh/XXd Inode: XXXXXXXX Links: X
Access: (0664/-rw-rw-r--) Uid: ( XXXX/ labex) Gid: ( XXXX/ labex)
Access: XXXX-XX-XX XX:XX:XX.XXXXXXXXXX +XXXX
Modify: XXXX-XX-XX XX:XX:XX.XXXXXXXXXX +XXXX
Change: XXXX-XX-XX XX:XX:XX.XXXXXXXXXX +XXXX
Birth: -
Рассмотрим некоторые важные строки в выводе:
File: Имя файла.Size: Размер файла в байтах.Access: (0664/-rw-rw-r--): Эта строка показывает права доступа в двух форматах:0664: Это числовое (восьмеричное) представление прав доступа. Каждая цифра представляет права доступа владельца, группы и других соответственно.6для владельца:rwx(чтение = 4, запись = 2, выполнение = 0) -> 4 + 2 + 0 = 66для группы:rwx(чтение = 4, запись = 2, выполнение = 0) -> 4 + 2 + 0 = 64для других:rwx(чтение = 4, запись = 0, выполнение = 0) -> 4 + 0 + 0 = 4- Предшествующая
0часто используется для обозначения восьмеричной записи.
-rw-rw-r--: Это символьное представление прав доступа, о котором вы узнали с помощью командыls -l.
UidиGid: Идентификатор пользователя и идентификатор группы владельца файла и группы, а также их имена.Access,Modify,Change: Эти строки показывают временные метки файла:Access: Время последнего доступа (чтения) к файлу.Modify: Время последнего изменения содержимого файла.Change: Время последнего изменения метаданных файла (например, прав доступа, владельца, группы).
Команда stat очень полезна, когда вам нужна подробная информация о свойствах файла, особенно при написании скриптов или устранении проблем с правами доступа.
Теперь вы узнали три разных способа проверки прав доступа к файлам и информации о доступе в Linux: test -r, ls -l и stat. Это важные инструменты для работы с файлами в командной строке.
Нажмите Продолжить, чтобы завершить этот практический урок.
Резюме
В этом практическом уроке вы узнали, как проверить, можно ли прочитать файл в Linux, используя команду test с опцией -r. Вы практиковались в создании файла и использовании команды test -r в сочетании с оператором && для условного вывода сообщения в зависимости от возможности чтения файла. Вы также заметили, что команда test -r возвращает ложное значение для несуществующих файлов, предотвращая выполнение последующих команд. Этот этап продемонстрировал фундаментальный метод проверки прав доступа к файлам программно в оболочке (shell scripting).



