Троан Эрик В.
Шрифт:
Имя | Значение | Описание |
---|---|---|
S_ISUID | 0004000 | Программа является setuid-программой. |
S_ISGID | 0002000 | Программа является setgid-программой. |
S_ISVTX | 0001000 | Sticky-бит. |
S_IRWXU | 00700 | Владелец файла имеет права на чтение, запись и выполнение. |
S_IRUSR | 00400 | Владелец файла имеет права на чтение. |
S_IWUSR | 00200 | Владелец файла имеет права на запись. |
S_IXUSR | 00100 | Владелец файла имеет права на выполнение. |
S_IRWXG | 00070 | Группа файла имеет права на чтение, запись и выполнение. |
S_IRGRP | 00040 | Группа файла имеет права на чтение. |
S_IWGRP | 00020 | Группа файла имеет права на запись. |
S_IXGRP | 00010 | Группа файла имеет права на выполнение. |
S_IRWXO | 00007 | Прочие пользователи имеют права на чтение, запись и выполнение. |
S_IROTH | 00004 | Прочие пользователи имеют права на чтение. |
S_IWOTH | 00002 | Прочие пользователи имеют права на запись. |
S_IXOTH | 00001 | Прочие пользователи имеют права на выполнение. |
11.1.3. Типы файлов
Старшие четыре бита режима файла указывают тип файла. В табл. 11.2 перечислены константы, имеющие отношение к типам файлов. Объединение с помощью битовой операции "И" любых этих констант с режимом файла порождает ненулевое значение, если бит установлен.
Таблица 11.2. Константы типов файлов
Имя | Значение (восьмеричное) | Описание |
---|---|---|
S_IFMT | 00170000 | Это значение, побитно объединенное с режимом с помощью операции "И", дает тип файла (который эквивалентен одному из остальных значений S_IF ). |
S_IFSOCK | 0140000 | Файл является сокетом. |
S_IFLNK | 0120000 | Файл является символической ссылкой. |
S_IFREG | 0100000 | Файл является обычным файлом. |
S_IFBLK | 0060000 | Файл представляет блочное устройство. |
S_IFDIR | 0040000 | Файл является каталогом. |
S_IFCHR | 0020000 | Файл представляет символьное устройство. |
S_IFIFO | 0010000 | Файл представляет коммуникационный канал "первый вошел — первый вышел". |
Описанные ниже макросы принимают в качестве аргумента режим файла и возвращают
S_ISLINK(m) | Истинно, если файл является символической ссылкой. |
S_ISREC(m) | Истинно, если файл является обычным файлом. |
S_ISDIR(m) | Истинно, если файл является каталогом. |
S_ISCHR(m) | Истинно, если файл представляет символьное устройство. |
S_ISBLK(m) | Истинно, если файл представляет блоковым устройство. |
S_ISFIFO(m) | Истинно, если файл является каналом "первый вошел — первый вышел" |
S_ISSOCK(m) | Истинно, если файл является сокетом. |
11.1.4. Маска umask процесса
Права доступа, назначаемые вновь созданным файлам, зависят как от настроек системы, так и от предпочтений конкретного пользователя. Чтобы помочь индивидуальным программам, которые нуждаются в предположениях об использовании файла, система дает возможность пользователям отключить отдельные привилегии для вновь создаваемых файлов (и каталогов, которые являются специальными файлами). Каждый процесс имеет маску umask, определяющую отключенные биты привилегий для создания файлов. Это позволяет процессу специфицировать достаточно либеральные права (обычно это касается общих прав на чтение и запись) и обеспечивать права, которые пользователь предпочитает. Если определенный файл особо важен, процесс создания может включать назначение более ограниченных прав, чем обычно, потому что umask никогда не влияет на менее строгие ограничения прав, а только на более строгие.
Текущая установка umask для процесса выполняется системным вызовом
Возвращается старое значение и устанавливается новое значение umask процесса. Для файла могут быть указаны только права на чтение, запись и исполнение — вы не можете использовать umask для запрещения установки setuid, setgid или sticky-бита. Команда
В качестве примера, команда
Если он предпочитает давать права на запись группе, то может вместо этого назначит
Если же он хочет, чтобы его файлы были доступны только ему, это обеспечит
umask процесса влияет на системные вызовы
11.2. Основные файловые операции
Поскольку значительная часть системных вызовов Linux манипулирует файлами, начнем с демонстрации наиболее широко используемых функций. Более специализированные функции обсудим далее в настоящей главе. Функции, применяемые для чтения каталогов, представлены в главе 14, чтобы сделать настоящую главу более краткой.
11.2.1. Файловые дескрипторы
Когда процесс получает доступ к файлу (что обычно называют открытием файла), то ядро возвращает ему файловый дескриптор, который затем используется процессом для всех операций с файлом. Файловые дескрипторы — это маленькие положительные целые числа, которые служат индексами массива открытых файлов, создаваемого ядром для каждого процесса.