11.5.1. Группа по умолчанию для новых файлов и каталогов
11.5.1. Группа по умолчанию для новых файлов и каталогов
В оригинальной системе Unix, когда open() или creat() создавали новый файл, он получал эффективные UID и GID создавшего их процесса.
V7, BSD вплоть до BSD 4.1 и System V вплоть до Release 3 все трактовали каталоги как файлы. Однако, с добавлением дополнительного набора групп в BSD 4.2 способ создания новых каталогов изменился: новые каталоги наследовали группу родительского каталога. Более того, новые файлы также наследовали ID группы родительского каталога, а не эффективный GID создающего процесса.
Идея, лежащая в основе множества групп и каталогов, которые работают таким способом, была в усилении группового взаимодействия. У каждого проекта организации, использующего систему, была бы отдельная назначенная ему группа. Для каждой такой группы в группе этого проекта был бы каталог верхнего уровня, и все файлы проекта имели бы доступ на чтение и запись (а при необходимости и на исполнение). Вдобавок, новые файлы автоматически получают группу родительского каталога. Состоя одновременно в нескольких группах (наборе групп), пользователь мог бы как угодно перемещаться между проектами с помощью простой команды cd, а все файлы и каталоги сохраняли бы свою надлежащую группу.
Что происходит на современных системах? Ну, это еще один из немногих случаев, когда можно поймать двух зайцев. SunOS 4.0 придумал механизм, который был включен в System V Release 4; сегодня он используется по крайней мере в Solaris и GNU/Linux. Эти системы придают биту setgid родительского каталога нового файла или каталога следующее значение:
Бит setgid родительского каталога сброшен
Новые файлы и каталоги получают эффективный GID создающего процесса.
Бит setgid родительского каталога установлен
Новые файлы и каталоги получают GID родительского каталога. Новые каталоги наследуют также установленный бит setgid.
(До SunOS 4.0 бит setgid для каталогов не имел определенного значения.) Следующий сеанс показывает бит setgid в действии:
$ cd /tmp /* Перейти в /tmp */
$ ls -ld . /* Проверить его права доступа */
drwxrwxrwt 8 root root 4096 Oct 16 17:40 .
$ id /* Отметить текущие группы */
uid=2076(arnold) gid=42(devel) groups=19(floppy),42(devel),2076(arnold)
$ mkdir d1 ; ls -ld d1 /* Создать новый каталог */
drwxr-xr-x 2 arnold devel 4096 Oct 16 17:40 d1 /* Эффективный ID группы
наследуется */
$ chgrp arnold d1 /* Сменить группу */
$ chmod g+s d1 /* Добавить бит setgid */
$ ls -ld d1 /* Проверить изменение */
drwxr-sr-x 2 arnold arnold 4096 Oct 16 17:40 d1
$ cd d1 /* Перейти в него */
$ echo this should have group arnold on it > f1 /* создать новый файл */
$ ls -l f1 /* Проверить права доступа */
-rw-r--r-- 1 arnold arnold 36 Oct 16 17:41 f1
/* Унаследовано от родителя */
$ mkdir d2 /* Создать каталог */
$ ls -ld d2 /* Проверить права доступа */
drwxr-sr-x 2 arnold arnold 4096 Oct 16 17:51 d2
/* Группа и setgid унаследованы */
Файловые системы ext2 и ext3 для GNU/Linux работают указанным способом. Вдобавок они поддерживают специальные опции монтирования grpid и bsdgroups, которые делают «использование группы родительского каталога» семантикой по умолчанию. (Два имени означают одно и то же.) Другими словами, когда используются эти опции монтирования, в родительских каталогах не нужно устанавливать свои биты seigid.
Противоположными опциями монтирования являются nogrpid и sysvgroups. Это поведение по умолчанию; однако, бит setgid. если он есть, все равно учитывается. (Здесь также оба имени означают одно и то же.)
POSIX устанавливает, что новые файлы и каталоги наследуют либо эффективный GID создающего процесса, либо группу родительского каталога. Однако, реализации должны предусмотреть способ заставить новые каталоги наследовать группу родительского каталога. Более того, стандарт рекомендует, чтобы приложения не полагались на то или иное поведение, но в случаях, когда это имеет значение, использовали chown() для принудительного назначения желательного GID для группы нового файла или каталога.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Другие методы определения атрибутов файлов и каталогов
Другие методы определения атрибутов файлов и каталогов Функции FindFirstFile и FindNextFile позволяют получить следующую информацию, связанную с атрибутами файла: флаги атрибутов, метки времени трех типов и размер файла. Существуют также другие аналогичные функции, одна из которых
14.3.1. Создание новых каталогов
14.3.1. Создание новых каталогов Создание новых каталогов выполняется очень просто.#include <fcntl.h>#include <unistd.h>int mkdir(const char * dirname, mode_t mode);Путь, определенный в dirname, создается как новый каталог с полномочием mode (что модифицируется umask процесса). Если dirname определяет существующий
Создание файлов и каталогов
Создание файлов и каталогов В следующих мини-очерках будут рассмотрены основные команды, предназначенные для файловых операций, вместе с их наиболее используемыми опциями. Чтобы не повторяться, напомню, что почти все описанные ниже команды имеют три стандартные опции
Группа
Группа Группу также нельзя отнести к "настоящим" элементам управления. Она объединяет несколько элементов управления, имеющих сходное назначение. Визуально группа представляет собой рамку, окружающую элементы управления и, возможно, имеющую заголовок, расположенный
5.7.7 Раскрытие шаблонов имен файлов и каталогов (Pathname Expansion)
5.7.7 Раскрытие шаблонов имен файлов и каталогов (Pathname Expansion) Подстановки имен путей и файлов (Pathname expansion) используются для того, чтобы с помощью краткого образца или шаблона указать несколько имен файлов (или каталогов), соответствующих данному шаблону. После разделения
7.1.3. Проверка файлов и каталогов
7.1.3. Проверка файлов и каталогов Для проверки файлов и каталогов используется сканер clam-scan. Вот как можно проверить подозрительный файл file.bin:clamscan file.binДля проверки каталогов желательно указывать опцию -r, чтобы заодно были проверены все их подкаталоги:clamscan -r /home/denА вот
Группа
Группа Представляет собой совокупность отделов, менеджеров и сотрудников, которые несут ответственность за набор задач или операций. Состав группы может варьироваться от одного или нескольких совместителей из различных отделов до нескольких сотрудников, занятых этой
8.1.26. Указание значения по умолчанию для новых элементов массива
8.1.26. Указание значения по умолчанию для новых элементов массива Когда массив растет и в нем создаются новые элементы, по умолчанию им присваивается значение nil:a = Array.newa[0]="x"a[3]="y"# а равно ["x", nil, nil, "y"]Но, допустим, нам требуется, чтобы новые элементы получали другое значение.
10.1.34. Поиск файлов и каталогов
10.1.34. Поиск файлов и каталогов Ниже мы воспользовались стандартной библиотекой find.rb для написания метода, который находит один или более файлов и возвращает их список в виде массива. Первый параметр — это начальный каталог, второй — либо имя файла (строка), либо
12.4. Перечисление файлов и каталогов
12.4. Перечисление файлов и каталогов Постановка задачи Вы хотите построить перечень подкаталогов, содержащихся в каталоге, либо построить список файлов, содержащихся в каталоге. Акт перечисления означает, что вы просто хотите найти все каталоги и/или файлы,
12.5. Удаление файлов и каталогов
12.5. Удаление файлов и каталогов Постановка задачи Вы создали на диске ряд файлов и/или каталогов, и они вам больше не нужны. Вы хотите их
Открытие файлов по умолчанию
Открытие файлов по умолчанию Стоит обратить особое внимание на класс Process. С помощью данного класса очень удобно запускать любой файл, который будет открываться программой, сопоставленной с данным типом файла. Предположим, что необходимо воспроизвести музыкальный файл
4.7. Шифрование файлов и каталогов
4.7. Шифрование файлов и каталогов Более дорогие выпуски Windows 7 — Профессиональная (Professional), Корпоративная (Enterprise) и Максимальная (Ultimate) поддерживают функцию шифрования файлов и каталогов (система EFS). Зашифрованные файлы нельзя просмотреть на другом компьютере, например,
Создание, копирование и перемещение файлов и каталогов
Создание, копирование и перемещение файлов и каталогов Способы манипуляции с файлами и каталогами, как правило, интуитивно понятны при использовании современных операционных систем с графическим интерфейсом, однако все же требуют некоторого пояснения.Основными