Изменение прав доступа к файлу




Исследование смонтированных файловых систем

Команда mount выводит информацию о смонтированных файловых системах и параметрах монтирования.

Команда df выводит данные о размерах файловых систем, занятом и свободном пространстве; ключ -k определяет формат вывода и означает, что данные выводятся в килобайтах.

% mount % df -k

Определение суммарного размера каталогов

Команда

% du -k каталог

выводит информацию о суммарном размере файлов в указанном каталоге и - рекурсивно - его подкаталогах (плюс размер собственно каталога);

ключ

-k означает, что данные выводятся в килобайтах, иначе - в 512-байтных блоках. Если каталог не указан, подразумевается текущий.

-s подавляет рекурсивный вывод информации о подкаталогах - команда сообщает только суммарный объем.

% du -k % du -ks

Изменение прав доступа к файлу

Для изменения прав доступа используется команда

% chmod [-R] права файл_или_каталог [файл2...]

Необязательный ключ

-R распространяет действие команды рекурсивно на содержимое каталогов, если таковые обнаружатся в списке файлов, переданном в командной строке.

Права указываются в одной из двух нотаций: числовой и символьной.

2.1. Числовая нотация команды chmod

Набор прав разбивается на 4 тройки:

sst rwx rwx rwx

и рассматривается в виде битового поля: бит установлен, если соответствующее право имеется. Каждая тройка бит записывается десятичным числом.

Примеры

--- rwx rwx rwx  
--- rwx r-x r-x  
--- rw- r-- ---  
ss- rwx r-x r-x  
--t rwx r-x r--  

Лидирующий ноль можно опускать.

2.2. Символьная нотация команды 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.

Не забудьте восстановить разумные права для своих файлов.

3. Поиск в файловой системе

3.1. Поиск по содержимому файлов (grep)

Команда

% grep [-inv] подстрока файл [ файл2...]

производит поиск указанной подстроки в указанных файлах.

Вообще-то grep ищет не строку символов, а регулярное выражение. Если вы используете только алфавитно-цифровые символы, то никаких отличий нет. Однако, не используйте знаки препинания и другие особые символы, если вы не уверены, что они не будут интерпретированы особым образом - как метасимволы регулярного выражения. Регулярные выражения изучаются позже в этом курсе.

Команда выводит строки из указанного файла (файлов), в каковых строках найдена указанная подстрока. Если файлов несколько, строка предваряется именем файла с двоеточием.

Основные ключи:

-i - игнорировать отличия верхнего и нижнего регистра (на нерусифицированных системах работает только для латиницы),

-n - вместе со строками выводить и их номера,

-v - выводить строки, в которых не найдена указанная подстрока.

Полное описание ключей команды grep см. в справочнике man.

Произведите поиск в файле b.txt без ключей и используя различные ключи. Произведите поиск в нескольких файлах.

3.2. Поиск файлов (find)

% find каталог [ выражение... ]

Команда проивзодит рекурсивный поиск в указанном каталоге и его подкаталогах. Для каждого файла вычисляются значения указанных в командной строке логических выражений, которые объединяются по "И". Если в итоге получается "ИСТИННО", то имя файла (точнее путь к нему, начиная от указанного в командной строке каталога, выводится в стандартный вывод).

Отсутствие выражений - всегда "ИСТИННО" (то есть в это случае find рекурсивно выводит имена всех файлов каталога и его подкаталогов).

Основные выражения find

(Примечание: ниже везде, где есть числовой параметр N, перед ним можно ставить плюс или минус, при этом справедливо следующее правило: "+ N " означает "больше, чем N ", "- N " означает "меньше, чем N ", просто число N означает "равно N ".)

-name шаблон_имени_файла

истинно, если имя файла соответствует шаблону; в шаблоне можно использовать символ '*' и т.п. - при этом шаблон надо взять в одинарные кавычки.

-perm ABCD

истинно, если права доступа к файлу точно равны указанным (ABCD); права записываются в числовой нотации команды chmod.

-perm - ABCD

истинно, если указанные права доступа (ABCD) имеются у файла; права записываются в числовой нотации команды chmod.

-type T

истинно, если тип файла равен указанному типу T, где Т - один из символов: f (обычный файл), d (каталог), l (символическая связь), b или c (блочное или символьное устройство), p (конвейер).

-user имя_пользователя

истинно, если файл принадлежит указанному пользователю.

-group имя_группы

истинно, если файл принадлежит указанной группе.

-size N c

истинно, если размер файла равен 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

Рекурсивно распечатайте содержимое вашего домашнего каталога:

% find.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-12-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: