Автор работы: Пользователь скрыл имя, 29 Декабря 2011 в 20:20, курс лекций
Способы организации файловой системы, списки команд и т.д. ОС Unix
Редактируйте
файл, используя все
приведенные выше
команды.
САМОПРОВЕРКА
К настоящему моменту вы должны знать и следующие команды и ключи к ним. Внимательно просмотрите весь список. Если вы что-то забыли, обращайтесь к справочнику man.
>, cat filename,
Введение
в Unix
Лабораторный практикум
1. Изучение файловой системы
(продолжение)
Войдите в систему в среде X-Windows. Запустите окно терминала
1.7. Исследование смонтированных файловых систем
Команда mount выводит информацию о смонтированных файловых системах и параметрах монтирования.
Команда df выводит данные о размерах файловых систем, занятом и свободном пространстве; ключ -k определяет формат вывода и означает, что данные выводятся в килобайтах.
%mount
%df -k
Нарисуйте дерево основных каталогов с указанием того, какие файловые системы (разделы дисков) куда смонтированы, каков их размер и процент занятости.
Вставьте диск в привод CDROM и через несколько секунд повторите команды mount и df -k. Что изменилось? Обратите внимание на параметры монтирования CD. Выньте диск после подачи команды:
%eject cdrom
Монтирование файловых систем при загрузке ОС
Файл /etc/vfstab содержит информацию о файловых системах, точках и параметрах монтирования, указания для программы проверки fsck.
%more /etc/vfstab
Администратор должен редактировать /etc/vfstab крайне аккуратно. Некорректные данные в этом файле или изменение его формата (например автоматической сворачивание длинных строк текстовым редактором) приведут к тому, что система не будет загружаться.
Определение суммарного размера каталогов
Команда
%du -k каталог
выводит информацию о суммарном размере файлов в указанном каталоге и - рекурсивно - его подкаталогах (плюс размер собственно каталога); ключ -k означает, что данные выводятся в килобайтах, иначе - в 512-байтных блоках. Если каталог не указан, подразумевается текущий.
Ключ -s подавляет рекурсивный вывод информации о подкаталогах - команда сообщает только суммарный объем.
%du -k
%du -ks
Как получить сводку
размеров домашних каталогов пользователей
(без детализации по подкаталогам)?
%du -ks /home
%du -k /home
%du -ks /home/*
1.8. Изменение прав доступа к файлу
Для изменения прав доступа используется команда
%chmod [-R] права файл_или_каталог [файл2 ...]
Необязательный ключ -R распространяет действие команды рекурсивно на содержимое каталогов, если таковые обнаружатся в списке файлов, переданном в командной строке.
Права указываются в одной из двух нотаций: числовой и символьной.
Числовая нотация команды chmod
Набор прав разбивается на 4 тройки:
sst rwx rwx rwx
и рассматривается в виде битового поля: бит установлен, если соответствующее право имеется. Каждая тройка бит записывается десятичным числом.
Примеры
--- rwx rwx rwx | 0777 |
--- rwx r-x r-x | 0755 |
--- rw- r-- --- | 0640 |
ss- rwx r-x r-x | 6755 |
--t rwx r-x r-- | 1754 |
Лидирующий ноль можно опускать.
Символьная нотация команды chmod
В отличие от числовой нотации символьная нотация указывает не права, а изменения прав. Нотация состоит из 3 элементов, указанных в следующей последовательности: чьи права изменять, каким образом, и какие именно права.
Чьи права изменять | Каким образом | Какие именно права |
u
(владельца) g (группы) o (всех остальных) a (всех трех категорий) |
+ (добавить) - (убрать) |
r w x |
= (сделать такими же) | u (как у владельца) g (как у группы) o (как у всех остальных) | |
u g |
+ - |
s (SUID или SGID) |
u | + - |
t (Sticky bit) |
Примеры:
Добавить группе право на запись:
%chmod g+w file
Убрать у прочих права на запись и исполнение:
%chmod o-wx file
Добавить владельцу и группе права на чтение и запись:
%chmod ug+rw file
Установить права прочих такими же, как у группы
%chmod o=g file
Установить права прочих и группы такими же, как у владельца
%chmod og=u file
Несколько изменений
можно перечислять через
Добавить вдалеьцу право на исполнение, а у группы и прочих убрать право на запись:
%chmod u+x,go-w file
Поэкспериментируйте с командой chmod на файлах своего каталога. Используйте сначала числовую, а потом символьную нотацию. Попробуйте все приведенные выше варианты. Результаты контролируйте командой ls -l.
Попробуйте назначать "экзотические" сочетания (наличие бита SUID, SGID или sticky bit без права исполнения). Устанавливается ли sticky bit для файлов?
Попробуйте различные варианты прав для каталога и изучите, что вы можете сделать при этом с файлами каталога: проверяйте работу команд ls и ls -l, возможность перейти в каталог, создать или удалить файл, просмотреть содержимое файла.
Попробуйте рекурсивную форму команды chmod.
Не забудьте восстановить разумные права для своих файлов.
1.9. Поиск в файловой системе
Поиск по содержимому файлов (grep)
Команда
%grep [-inv] подстрока файл [файл2 ...]
производит поиск
указанной подстроки в
Вообще-то grep ищет не строку символов, а регулярное выражение. Если вы используете только алфавитно-цифровые символы, то никаких отличий нет. Однако, не используйте знаки препинания и другие особые символы, если вы не уверены, что они не будут интерпретированы особым образом - как метасимволы регулярного выражения. Регулярные выражения изучаются позже в этом курсе.
Команда выводит
строки из указанного файла (файлов), в
каковых строках найдена
Основные ключи:
-i - игнорировать отличия верхнего и нижнего регистра (на нерусифицированных системах работает только для латиницы),
-n - вместе со строками выводить и их номера,
-v - выводить строки, в которых не найдена указанная подстрока.
Полное описание ключей команды grep см. в справочнике man.
Произведите поиск в файле b.txt без ключей и используя различные ключи. Произведите поиск в нескольких файлах.
Поиск файлов (find)
%find каталог [выражение ... ]
Команда проивзодит
рекурсивный поиск в указанном
каталоге и его подкаталогах. Для
каждого файла вычисляются
Отсутствие выражений - всегда "ИСТИННО" (то есть в это случае find рекурсивно выводит имена всех файлов каталога и его подкаталогов).
Основные выражения find
(Примечание: ниже
везде, где есть числовой
-name шаблон_имени_файла
истинно, если
имя файла соответствует
-perm ABCD
истинно, если права доступа к файлу точно равны указанным (ABCD); права записываются в числовой нотации команды chmod.
-perm -ABCD
истинно, если указанные права доступа (ABCD) имеются у файла; права записываются в числовой нотации команды chmod.
-type T
истинно, если тип файла равен указанному типу T, где Т - один из символов: f (обычный файл), d (каталог), l (символическая связь), b или c (блочное или символьное устройство), p (конвейер).
-user имя_пользователя
истинно, если файл принадлежит указанному пользователю.
-group имя_группы
истинно, если файл принадлежит указанной группе.
-size Nc
истинно, если размер файла равен N байт (без символа 'c' размер интерпретируется в 512-байтных блоках).
-mtime N
истинно, если содержимое файла было модифицировано N суток назад (т.е. N*24 часов назад).
-atime N
истинно, если последний доступ к файлу имел место N суток назад (т.е. N*24 часов назад).
-ctime N
истинно, если атрибуты файла были модифицировано N суток назад (т.е. N*24 часов назад).
-newer имя_файла
истинно, если файл был модифицирован позже, чем указанный.
-nouser
истинно, если владелец файла не найден в списке пользователей (например, пользователь был удален, а его файлы остались).
-nogroup
истинно, если группа-владелец файла не найдена в списке групп (например, группа была удалена, а файлы остались).
-a
операция "И" в явном виде.
-o
операция "ИЛИ".
\( \)
скобки для группировки выражений, если это необходимо (обратите внимание на наличие обратных слэшей).
Найдите в домашнем каталоге все файлы, начинающиеся на "a":
%find . -name 'a*'
Найдите в домашнем каталоге все исполнимые владельцем файлы, начинающиеся на "a":
%find . -name 'a*' -perm -0100
Найдите в домашнем каталоге все файлы, модифицированные более 2 дней назад:
%find . -mtime +2
Получите рекурсивный список всех подкаталогов вашего каталога:
%find . -type d