Шаг 167.
Основы языка Python.
Работа с файлами и каталогами. Права доступа к файлам и каталогам

    На этом шаге мы рассмотрим назначение и изменение прав доступа к файлам и каталогам.

    В операционных системах семейства UNIX каждому объекту (файлу или каталогу) назначаются права доступа, предоставляемые той или иной разновидности пользователей: владельцу, группе и прочим. Могут быть назначены следующие права доступа:

    Права доступа обозначаются буквами:

    Права доступа к файлу определяются записью типа:

  -rw-r--r--

    Первый символ - означает, что это файл, и не задает никаких прав доступа. Далее три символа (rw-) задают права доступа для владельца: чтение и запись, символ - означает, что права на выполнение нет. Следующие три символа задают права доступа для группы (r--) - только чтение. Ну и последние три символа (r--) задают права для всех остальных пользователей- также только чтение.

    Права доступа к каталогу определяются такой строкой:

  drwxr-xr-x

    Первая буква (d) означает, что это каталог. Владелец может выполнять в каталоге любые действия (rwx), а группа и все остальные пользователи - только читать и выполнять поиск (r-х). Для того чтобы каталог можно было просматривать, должны быть установлены права на выполнение (х).

    Права доступа могут обозначаться и числом. Такие числа называются маской прав доступа. Число состоит из трех цифр; от 0 до 7. Первая цифра задает права для владельца, вторая - для группы, а третья - для всех остальных пользователей. Например, права доступа -rw-r--r-- соответствуют числу 644. Сопоставим числам, входящим в маску прав доступа, двоичную и буквенную записи (таблица 1).

Таблица 1. Права доступа в разных записях
Восьмеричная цифра Двоичная запись Буквенная запись
0 000 ---
1 001 --x
2 010 -w-
3 011 -wx
4 100 r--
5 101 r-x
6 110 rw-
7 111 rwx

    Теперь понятно, что, согласно данным этой таблицы, права доступа rw-r--r-- можно записать так: 110 100 100, что и переводится в число 644. Таким образом, если право предоставлено, то в соответствующей позиции стоит 1, а если нет - то 0.

    Для определения прав доступа к файлу или каталогу предназначена функция access() из модуля os. Функция имеет следующий формат:

  access(<Путь>, <Режим>)

    Функция возвращает True, если проверка прошла успешно, или False - в противном случае. В параметре <Режим> могут быть указаны следующие константы, определяющие тип проверки:

    Чтобы изменить права доступа из программы, необходимо воспользоваться функцией chmod() из модуля оs. Функция имеет следующий формат:

  chmod(<Путь>, <Права доступа>)

    Права доступа задаются в виде числа, перед которым следует указать комбинацию символов 0o (это соответствует восьмеричной записи числа):

>>> os.chmod(r"file.txt", 0o777) # Полный доступ к файлу

    Вместо числа можно указать комбинацию констант из модуля stat. За дополнительной информацией обращайтесь к документации по модулю.

    На следующем шаге мы рассмотрим функции для работы с файлами.




Предыдущий шаг Содержание Следующий шаг