- •2.1. Введение
- •2.2. Вопросы, относящиеся к команде who
- •2.2.1. Программы состоят из команд
- •2.3. Вопрос 1: Что делает команда who?
- •2.3.1. Обращение к справочнику
- •2.4. Вопрос 2: Как работает команда who?
- •2.4.1. Мы теперь знаем, как работает who
- •2.5. Вопрос 3: Могу ли я написать who?
- •2.5.1. Вопрос: Как я буду читать структуры из файла?
- •2.5.2. Ответ: Использование open, read и close
- •2.5.3. Написание программы who 1.С
- •2.5.4. Отображение записей о вхождениях в систему
- •2.5.5. Написание версии who2.С
- •2.6. Проект два: Разработка программы ср (чтение и запись)
- •2.6.1. Вопрос 1: Что делает команда ср?
- •2.6.2. Вопрос 2: Как команда ср создает файл и как пишет в него? Создание/транкатенация файла
- •2.6.3. Вопрос 3: Могу ли я написать программу ср?
- •2.6.4. Программирование в Unix кажется достаточно простым
- •2.7. Увеличение эффективности файловых операций ввода/ вывода: Буферирование
- •2.7.1. Какой размер буфера следует считать лучшим?
- •2.7.2 Почему на системные вызовы требуется тратить время?
- •2.7.3. Означает ли, что наша программа who2.С неэффективна?
- •2.7.4. Добавление буферирования к программе who2.С
- •2.8. Буферизация и ядро
- •2.8.1. Если буферизация столь хороша, то почему ее не использует ядро?
- •2.9. Чтение файла и запись в файл
- •2.9.1. Выход из системы: Что происходит?
- •2.9.2. Выход из системы: Как это происходит
- •2.9.3. Смещение текущего указателя: Iseek
- •2.9.4. Кодирование выхода из системы через терминал
- •2.10. Что делать с ошибками системных вызовов?
- •3.1. Введение
- •3.2. Вопрос 1: Что делает команда is?
- •3.2.1. Команда Is выводит список имен файлов и оповещает об атрибутах файлов
- •3.2.3. Наиболее употребимые опции
- •3.2.4. Первый ответ: Итоговые замечания
- •3.3. Краткий обзор дерева файловой системы
- •3.4. Вопрос 2: Как работает команда Is?
- •3.4.1. Что же такое каталог, в конце концов?
- •3.4.2. Работают ли системные вызовы open, read и close в отношении каталогов?
- •3.4.3. Хорошо, хорошо. Но как же мне прочитать каталог?
- •3.5. Вопрос 3: Могу ли я написать Is?
- •3.5.1. Что еще нужно делать?
- •3.6. Проект 2: Написание версии Is -I
- •3.6.1. Вопрос 1: Что делает Is-I?
- •3.6.2. Вопрос 2: Какработает Is -I?
- •3.6.3. Ответ: Системный вызов stat получает информацию о файле
- •3.6.4. Какую еще информацию можно получить с помощью системного вызова stat?
- •3.6.5. Чего мы достигли?
- •3.6.6. Преобразование числового значения поля mode в символьное значение
- •3.6.7. Преобразования числового представления идентификаторов собственника/группы в строковое представление
- •3.6.8. Объединение всего вместе: Is2.C
- •3.7. Три специальных разряда
- •3.7.1. Разряд Set-User-id
- •3.7.2Разряд Set-Group-id
- •3.7.3 Разряд Sticky Bit
- •3.7.4. Специальные разряды nls-l
- •3.8. Итоги для команды is
- •3.9. Установка и модификация свойств файла
- •3.9.1. Тип файла
- •3.9.2. Разряды прав доступа и специальные разряды
- •3.9.3. Число ссылок на файл
- •3.9.4. Собственник и группа для файла
- •3.9.5. Размер файла
- •3.9.6. Время последней модификации и доступа
- •3.9.7. Имя файла
3.7.4. Специальные разряды nls-l
Как мы убедились, каждый файл имеет атрибут типа и 12 разрядов для других атрибутов, но команда Is резервирует для вывода только девять знакомест для изображения в них этих 12 атрибутов. Как происходит отображение этих значений?
В документации команды Is приведены детали. Пример
-rwsr-sr-t 1 root root 2345 Jun 12 14:02 sample
показывает, что символ s используется в тех же местах, где может быть символ х для поль- I зователя и группы. Символ s показывает, что произошла замена символа х на символы s, I для обозначения установленных разрядов set-user and set-group-ID. Символ t свидетельст- I вует об установленном оазояде stickv bit.
3.8. Итоги для команды is
Мы теперь имеем работающую версию команды Is, которая выводит список файлов в каталоге и отображает статусную информацию об этих файлах. По мере того как мы рассматривали возможности команды Is, рассматривали, как работает эта команда и при написании нашей собственной версии программы, у нас сложилось, в некотором смысле, определенное представление об Unix. Далее следует список основных тем.
Каталоги и файлы
В Unix данные хранятся в файлах. Каталог- это специальный тип файла. В каталоге имеется список имен файлов. В каталоге содержится также его собственное имя. В Unix есть набор функций, которые позволяют открывать, читать, искать и закрывать каталоги. Функции для записи в каталог отсутствуют.
Пользователи и группы
Каждому, кто использует систему, присваивается имя пользователя и числовое значение идентификатора пользователя. Пользовательские имена используются людьми для вхождения в систему и установления связей с другими людьми. Система использует значения UID для идентификации собственника файла. Люди принадлежат различным группам. Каждая группа имеет имя и числовой идентификатор группы.
Атрибуты файла
Каждый файл имеет набор свойств. Программа может получить список свойств файла с помощью системного вызова stat.
Собственник файла
У каждого файла есть собственник. UID собственника в Unix записывается в качестве | свойства файла. Файл принадлежит группе. GID группы в Unix записывается в качестве
свойства файла.
Права доступа
Пользователи могут читать файлы, писать в файлы и исполнять файлы. Каждый файл имеет набор разрядов, которые определяют, какие пользователи могут выполнять эти операции. Права на чтение, запись и исполнение могут контролироваться на трех уровнях: собственник, группа, остальные.
3.9. Установка и модификация свойств файла
Команда Is -1 отображает несколько свойств файла. Как можно устанавливать эти свойст-
Ка? Можно ли изменять их значения? Если да, то как это делать? Если нет, то почему? Прозрим установленные значения свойств в выводе в длинном формате:
-rw-r--r-- 1 bruce users 3045 Feb 15 03:51 Is2.c
Рассмотрим слева направо каждый из атрибутов
3.9.1. Тип файла
Файл имеет тип. Могут быть обычные файлы, каталоги, файлы устройств, сокеты, символические ссылки и именованные программные каналы.
Установка типа файла. Тип файла устанавливается при создании файла. Например, с помощью системного вызова creat создается обычный файл. Для создания каталогов, файлов устройств и других типов файлов используются другие системные вызовы.
Изменение типа файла. Тип файла изменить невозможно. В сказках тыквы превращаются в кареты, но никто не объясняет, куда девать семечки и мякоть тыкв.
