Введение
В этом практическом занятии (лабораторной работе) вы научитесь проверять, можно ли записывать в файл в Linux различными методами. Сначала мы используем команду test -w для быстрого определения возможности записи и разберём её применение в оболочном скриптинге (shell scripting).
Затем вы подробно проверите права доступа к файлу с помощью команды ls -l, проинтерпретируете вывод, чтобы понять информацию об владельце, группе и других правах доступа. Наконец, вы более комплексно изучите информацию о доступе к файлу с помощью команды stat.
Проверка доступности для записи с помощью test -w
На этом этапе мы научимся проверять, есть ли у вас разрешение на запись в файл или каталог с использованием команды test с опцией -w. Понимание прав доступа к файлам является важной частью работы в Linux, так как они определяют, кто может читать, записывать и выполнять файлы.
Команда test является встроенной командой оболочки (shell), которая проверяет условия и возвращает статус завершения 0 (истина) или 1 (ложь). Опция -w специально предназначена для проверки, может ли текущий пользователь записывать в файл или каталог.
Создадим простой файл в каталоге ~/project. Для этого используем команду touch, которая создает пустой файл, если он не существует.
Перейдите в каталог проекта, если вы еще не находитесь в нем:
cd ~/project
Теперь создайте файл с именем my_test_file.txt:
touch my_test_file.txt
Вы можете проверить, что файл был создан, используя команду ls:
ls
В выводе вы должны увидеть my_test_file.txt.
Теперь используем команду test -w для проверки, можно ли записывать в этот файл. Соединим ее с командой echo, чтобы увидеть результат.
test -w my_test_file.txt && echo "Writable" || echo "Not writable"
Разберем эту команду:
test -w my_test_file.txt: Эта часть команды проверяет, можно ли записывать в файлmy_test_file.txt.&& echo "Writable": Если командаtestвозвращает истину (статус завершения 0), оператор&&выполняет следующую команду, которая выводит "Writable".|| echo "Not writable": Если командаtestвозвращает ложь (статус завершения 1), оператор||выполняет следующую команду, которая выводит "Not writable".
Поскольку вы создали файл как пользователь labex в своем домашнем каталоге, у вас должны быть права на запись, и вывод должен быть следующим:
Writable
Команда test -w часто используется в оболочечных скриптах (shell scripts) для проверки прав доступа перед попыткой записи в файл, что позволяет избежать потенциальных ошибок.
Нажмите Продолжить, чтобы перейти к следующему шагу.
Проверка прав доступа с помощью ls -l
На этом этапе мы используем команду ls -l для просмотра подробной информации о файлах и каталогах, включая их права доступа. Эта команда является важным инструментом для понимания, кто может получить доступ к чему на системе Linux.
Команда ls выводит список файлов и каталогов. Опция -l предоставляет "длинный формат вывода", который включает права доступа, информацию об владельце, размер и время последнего изменения.
Убедитесь, что вы находитесь в каталоге ~/project:
cd ~/project
Теперь выполните команду ls -l, чтобы увидеть детали файлов в этом каталоге. Вы должны увидеть файл my_test_file.txt, который вы создали на предыдущем этапе.
ls -l
Вывод будет выглядеть примерно так:
-rw-rw-r-- 1 labex labex 0 Month Day HH:MM my_test_file.txt
Разберём первую часть вывода, которая представляет права доступа к файлу:
-rw-rw-r--
Эта строка из десяти символов сообщает о типе файла и его правах доступа для разных пользователей.
- Первый символ (
-в данном случае) указывает на тип файла.-: Обычный файлd: Каталогl: Символическая ссылка- И другие...
- Следующие девять символов разделены на три группы по три символа:
- Первая группа (
rw-): Права доступа для владельца файла. - Вторая группа (
rw-): Права доступа для группы, к которой принадлежит файл. - Третья группа (
r--): Права доступа для остальных (всех остальных пользователей системы).
- Первая группа (
В каждой группе из трёх символов:
r: Право на чтение (позволяет просматривать содержимое файла или список файлов в каталоге).w: Право на запись (позволяет изменять файл или создавать/удалять файлы в каталоге).x: Право на выполнение (позволяет запускать файл как программу или входить в каталог).-: Указывает, что право доступа не предоставлено.
Таким образом, для файла my_test_file.txt с правами -rw-rw-r--:
- Владелец (
labex) имеет права на чтение (r) и запись (w). - Группа (
labex) имеет права на чтение (r) и запись (w). - Остальные пользователи имеют только право на чтение (
r).
Этот вывод подтверждает, почему команда test -w на предыдущем этапе вернула "Writable" для пользователя labex – потому что владелец (labex) имеет право на запись (w).
Понимание вывода команды ls -l является фундаментом для управления файлами и правами доступа в Linux.
Нажмите Продолжить, чтобы перейти к следующему этапу.
Проверка доступа к файлу с помощью stat
На этом этапе мы будем использовать команду stat для получения подробной информации о файле или файловой системе. В то время как команда ls -l дает быстрый обзор, команда stat предоставляет гораздо более полное представление о метаданных файла, включая время доступа, изменения и модификации.
Убедитесь, что вы находитесь в каталоге ~/project:
cd ~/project
Теперь применим команду stat к файлу my_test_file.txt, который вы создали ранее:
stat my_test_file.txt
Вывод будет довольно подробным и может выглядеть примерно так:
File: my_test_file.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: ---h/---d Inode: --- Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 5000/ labex) Gid: ( 5000/ labex)
Access: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
Modify: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
Change: YYYY-MM-DD HH:MM:SS.SSSSSSSSS +ZZZZ
Birth: -
Рассмотрим некоторые важные части информации, предоставляемые командой stat:
File: Имя файла.Size: Размер файла в байтах.Access: (0664/-rw-rw-r--): Эта строка показывает права доступа как в восьмеричном (0664), так и в символьном (-rw-rw-r--) форматах. Это соответствует правам доступа, которые мы видели с помощью командыls -l.Uid: ( 5000/ labex): Идентификатор пользователя (User ID, UID) и имя пользователя владельца файла.Gid: ( 5000/ labex): Идентификатор группы (Group ID, GID) и имя группы, к которой принадлежит файл.Access: Время последнего доступа (чтения) к файлу.Modify: Время последнего изменения содержимого файла.Change: Время последнего изменения метаданных файла (например, прав доступа, владельца и т.д.).Birth: Время создания файла (может отсутствовать на некоторых файловых системах).
Команда stat позволяет более детально изучить свойства файла, чем команда ls -l. Она особенно полезна, когда вам нужны точные временные метки или подробная информация о владельце файла и правах доступа в различных форматах.
Вы также можете использовать команду stat с опциями для получения конкретной информации. Например, чтобы увидеть только права доступа в восьмеричном формате:
stat -c "%a" my_test_file.txt
Эта команда использует опцию -c для указания пользовательского формата. "%a" - это спецификатор формата для прав доступа в восьмеричном виде. Вывод должен быть следующим:
664
Это соответствует восьмеричным правам доступа 0664, показанным в полном выводе команды stat (ведущий ноль часто опускается).
Нажмите Продолжить, чтобы завершить этот практический урок.
Резюме
В этом практическом уроке мы научились проверять, можно ли записать в файл в системе Linux с помощью команды test -w. Эта команда представляет собой простой и эффективный способ определения прав на запись и часто используется в оболочках скриптов для предотвращения ошибок. Мы практиковались в создании файла и использовании команды test -w в сочетании с операторами && и || для отображения информации о том, доступен ли файл для записи.
Мы также изучили, как проверить права доступа к файлу с помощью команды ls -l, которая предоставляет подробную информацию о владельце файла, группе и правах доступа в удобочитаемом формате. Наконец, мы научились проверять детали доступа к файлу с помощью команды stat, которая предоставляет более полную информацию о статусе файла, включая временные метки доступа, изменения и модификации.



