Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

КТНИ / mppz2_m2_iems_iems_ktni_niy16

.pdf
Скачиваний:
25
Добавлен:
27.03.2016
Размер:
672.53 Кб
Скачать

8. Назначение прав доступа на объекты

Операционная система Linux является не только удобной, гибкой, многозадачной и многопользовательской средой, но также надежной и безопасной. В Linux принципиально реализованы два глобальных уровня безопасности.

Первый уровень безопасности связан с аккаунтом пользователя, т.е. с возможностью регистрации пользователя в операционной системе. Пользователь в текстовой или графической средах непосредственно на компьютере с системой или с удаленного терминала должен ввести свой login, а также пароль. Система сначала проверяет, существует ли пользователь с данным именем, и если такой действительно существует, то далее проверяет, он ли пользуется этой учетной записью, при помощи сверки пароля. При входе пользователя в систему подключается второй уровень безопасности.

Второй уровень безопасности связан с разграничением прав доступа разных пользователей к данным (объектам Linux – файлам, каталогам и т.д.) операционной системы.

Все файлы в системе можно условно разделить на две категории: файлы, которые использует сама система (бинарные исполняемые файлы, статические и динамические библиотеки и т.д.), и файлы, которые используют пользователи.

Напомним, что краткую или расширенную информацию о наличии файла или директории можно получить по команде ls. Выведем расширенную информацию о файле chanal1.plx .По этой команде отображается информация, приведенная на рис.2.

Рис.2. Расширенный вывод сведений с расшифровкой полей данных

Рассмотрим полную информацию о файле по расширенному выводу команды ls с опцией –l слева направо. Информацией слева направо является набор прав доступа на объект, далее через пробел указывается, сколько раз встречаются в системе ссылки на этот объект, затем указывается владелец данного объекта, потом через пробел отображаются пользователи, которые могут пользоваться этим объектом, далее идет размер файла, затем дата создания или последней модификации объекта и, наконец, указывается название объекта.

При сокращенном выводе данных по команде ls указывается имя объекта. Остановимся на перечисленных полях данных более подробно, уже справа налево. Итак, объекту можно придавать либо имя, либо имя с расширением. Использование

расширений в Linux является необязательным. К ним обращаются только для ассоциации файлов и исполняемых команд. При работе с файлами удаленно в командном интерпретаторе с помощью терминала, когда не используются мышь и пиктограммы Linux, расширения не нужны. Однако они могут быть полезными, если запускается даже удаленно какое-нибудь графическое приложение, которое по умолчанию запускает файлы с определенным расширением.

При создании файла или переносе его из других операционных систем в Linux отображается полная дата создания файла или, если файл был модифицирован, то дата последней модификации. Это очень удобно, так как имеется возможность контролировать последние изменения в файле.

Размер файла или каталога по умолчанию в ls указывается в байтах, однако вывод сведений о размере объекта в других программах и командах можно изменить.

Следующие два поля слева направо указывают владельца файла или каталога и группу пользователей, которые могут пользоваться этим объектом. На этих полях мы далее остановимся подробнее.

Следующее поле указывает суммарное количество ссылок в системе на этот объект. В Linux имеется возможность создавать мягкие и жесткие (твердые) ссылки. Если объект присутствует один и на него не ссылаются в системе, то в этом поле указывается цифра

«1».

Наконец, последнее поле, которое мы рассматриваем, и оно же первое при чтении информации слева направо – права доступа на объект. На данном поле мы остановимся подробнее.

Права доступа на объект. Чтобы уберечь свои собственные файлы и каталоги, операционная система использует ограничения на них. Такие же ограничения используются на данные разных пользователей, чтобы один из пользователей не мог специально или случайно повредить данные другого пользователя. Кроме того, данные ограничения позволяют сохранить конфиденциальность информации пользователя. При этом ограничения доступа к данным разделяются на ограничение на чтение (read, символ «r»), ограничение на запись (write, символ «w») и ограничение на выполнение файла (execution, символ «x»), если он исполняемый. Комбинация прав доступа на объект указывается в следующей последовательности: r w x. Если хотя бы одно из прав у пользователя отсутствует, то на месте этого символа ставится прочерк .

Таким образом, операционная система не позволяет пользователю, не имеющему на это полномочий, читать, модифицировать объекты и запускать программы. Например, если пользователю разрешено только читать, а остальное запрещено, то последовательность будет такой: r-- , а если разрешено читать и запускать файл, но нельзя модифицировать, то такой: r-x и т.д, т.е. каждый пользователь обладает своими правами на каждый объект (рис.3).

Рис. 3. Символьное обозначение прав доступа на объект

Однако для того, чтобы следить за работой операционной системы, назначать новых пользователей, запускать программы диагностики работы системы, контролировать работу процессов, состояние ресурсов системы и устанавливать приоритеты между пользователями, в операционной системе Linux назначается пользователь с неограниченными возможностями, который имеет учетную запись «root». Рут или, как его еще называют, суперюзер призван следить за работой пользователей и системы, вовремя перераспределять ресурсы системы в пользу тех пользователей, которым их явно не хватает при решении своих задач (по умолчанию приоритеты между пользователями равны), поэтому рут изначально имеет доступ или возможность создания полного доступа не только к своим данным, но также к данным других пользователей и системы.

Кроме указанных ограничений на чтение, запись и выполнение файлов, при доступе к данным Linux имеются и другие ограничения. Все пользователи в системе по уровню доступа к данным в Linux разделяются на три категории: владелец объекта (user), пользователи, входящие в группу, которой разрешен доступ к файлу (group), и другие сторонние пользователи (other), которые не имеют отношения к объекту Linux. В связи с этим полный набор прав доступа представляет собой последовательную комбинацию прав доступа всех трех категорий. При этом каждая из категорий представлена набором трех ограничений на объект: чтение (r), запись (w) и выполнение (x) (рис. 4).

Рис.4. Ограничения прав доступа на объекты файловой системы

На рисунке владельцу разрешено читать и модифицировать файл, группе пользователей – только читать, другим пользователям - тоже только читать. Прочерк перед комбинациями говорит о том, что мы имеем дело с файлом, а не с ссылкой или категорией.

Если пользователь сам создает файлы или каталоги, он ими владеет, т.е. может ими распоряжаться. Например, он может повысить уровень доступа к ним (rwx), или передать их другим пользователям, или пользоваться ими совместно с другими пользователями. Таким образом, при доступе к этим объектам система безопасности Linux назначает этому пользователю и использует для него категорию создатель - user. По умолчанию пользователь, создавший файл, может его читать (просматривать) и модифицировать (изменять, редактировать), а также сделать его исполняемым. Создатель объекта имеет доступ к нему по первой категории прав (чтение, запись, выполнение).

При работе с общими проектами (файлами или каталогами) в Linux имеется возможность пользователям объединяться в группы (group). Это очень удобно, когда многим пользователям приходится работать (читать, изменять и выполнять) c одними и теми же файлами. При этом разрешить пользоваться созданным объектом группе пользователей (group) может как сам создатель этого объекта; (user), так и суперпользователь системы. Пользователи группы имеют одинаковые права на доступ к объекту Linux (файлу или каталогу). Пользователи группы имеют доступ к объекту по второй категории прав доступа (чтение, запись, выполнение).

Наконец, существует и третья категория прав, связанная с ограничениями доступа к объекту Linux – другой пользователь (other). Этот пользователь не является создателем объекта (user), он не входит в группу пользователей (group), которые используют этот объект в своих целях при работе. Пользователь other имеет доступ к объекту Linux по третьей категории прав (чтение, изменение, выполнение). При попытке доступа пользователя к объекту Linux система проверяет его на принадлежность к одной из трех категорий. Если пользователь является создателем объекта, то система разрешает ему получить доступ к объекту в соответствии с первой категорией прав (чтение, изменение, выполнение). Если пользователь не является создателем объекта, но находится в группе пользователей, которые могут пользоваться этим объектом, то система разрешает ему пользоваться этим объектом по второй категории прав доступа (чтение, модификация, выполнение). Наконец, если пользователь не является создателем (user) и не входит в группу пользователей (group), которым открыт доступ к объекту, т.е. является другим пользователем (other) для данного объекта, то система разрешает ему использовать объект по третьей категории прав доступа (чтение, изменение, выполнение). Один и тот же пользователь для разных данных Linux может принадлежать ко всем трем категориям.

Назначение прав доступа на объект. При создании файла и директории по умолчанию командный интерпретатор назначает права доступа: rw-rw-r-- - для файла и rwxrwxr-x – для директории. Если пользователь user23, который входит в группу пользователей group14, создает новый файл rrr67, то расширенная информация по команде ls будет следующей (для упрощения размер и дату создания файла мы опустим):

-rw-rw-r-- 1 user23 group14

rrr67

Информация по правам доступа гласит: пользователю user23 разрешено читать и модифицировать файл; группе, в которой он состоит, – тоже читать и модифицировать файл, остальным – только читать.

Однако такие права по умолчанию можно изменить, когда, например, нужно, чтобы пользователи, входящие в группу, больше не имели доступа к вашим файлам. Изменение прав доступа осуществляется с помощью команды chmod, после которой может быть указана опция, например опция –R, для рекурсивного (применимого ко всем объектам вложения) изменения прав для директории, далее через пробел новые права и опять через пробел название файла или директории. Назначать новые права на объект можно как «с нуля», т.е. независимо от предыдущих прав, так и модифицируя имеющиеся.

Назначение прав доступа «с нуля» (с помощью восьмеричного вида). Назначать права доступа «с нуля» можно с помощью восьмеричного вида путем последовательного указания трех цифр от 0 до 7, которые соответствуют каждой из категорий. Полная таблица соответствий прав доступа имеет вид табл.4

 

 

 

 

Таблица 4

 

 

 

Связи разных видов прав доступа

 

 

 

 

 

Восьмеричный

Двоичный

Символьный

Права доступа,

 

вид

вид

вид

разрешено

 

0

000

---

Нет никаких прав

 

1

001

--x

Только

 

 

 

 

выполнение

 

2

010

-w-

Только запись

 

3

011

-wx

Только запись и

 

 

 

 

выполнение

 

4

100

r--

Только чтение

 

5

101

r-x

Только чтение и

 

 

 

 

выполнение

 

6

110

rw-

Только чтение и

 

 

 

 

запись

 

7

111

rwx

Полные права

 

С помощью восьмеричного вида удобно по одной цифре назначать права для каждой из категорий.

Важно отметить, что назначать права на объект Linux с помощью восьмеричного вида для всех трех категорий могут только владелец объекта и root. Пользователь в группе и остальные пользователи сделать этого не могут.

Выведем сведения о файле laba2.cmd, который находится в текущей директории:

[antonk@fargo laba2]$ ls -l laba2.cmd

-rw-r–r– 1 antonk user 1810 Apr 22 13:37 laba2.cmd

[antonk@fargo laba2]$

Как видно, данный объект доступен владельцу для чтения и записи, группе и остальным – только для чтения.

Назначим новые права доступа: владельцу – полные права, группе чтение и запись, остальным – никаких прав. В соответствии с табл.3.1, в восьмеричном виде установим 760 с помощью команды chmod (табл. 5).

 

Таблица 5 Операции с правами доступа к файлам и каталогам

 

 

 

Команда

Назначение

 

или опция

 

 

chmod

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

 

+

Устанавли ает право доступа

 

-

Отменяет право доступа

 

=

Присваивает весь набор прав доступа

 

r

Устанавливает право на чтение для файла или каталога. Файл

 

 

 

 

 

может отображаться на экране и печататься. Для каталога

 

 

 

 

может выдаваться список находящихся в нем файлов

 

 

 

w

Устанавливает право на запись для файла или каталога. Для

 

 

 

 

файла это право означает) возможность его редактировать или

 

 

 

 

уничтожать. Для каталога это право означает возможность

 

 

 

 

создания и удаления файлов в нем

 

 

 

х

Устанавливает право на выполнение для файла или каталога.

 

 

 

 

Если файл – сценарий командного интерпретатора, он может

 

 

 

 

выполняться как программа.

 

 

 

u

Устанавливает права доступа для пользователя, который создал

 

 

 

 

файл или каталог и владеет им

 

 

 

g

Устанавливает права доступа к файлу или каталогу для группы

 

 

 

о

Устанавливает права доступа к файлу или каталогу для прочих

 

 

 

 

пользователей системы

 

 

 

а

Устанавливает права доступа для владельца, группы и прочих

 

 

 

 

пользователей

 

 

 

s

Устанавливает бит смены идентификатора пользователя или

 

 

 

 

группы; программа принадлежит владельцу и группе

 

 

 

t

Устанавливает sticky-бит (бит закрепления); программа с

 

 

 

 

установленным sticky-битом после ее завершения остается в

 

 

 

 

памяти

[antonk@fargo

laba2]$ chmod 760 laba2.cmd

[antonk@fargo

 

laba2]$ ls -l laba2.cmd

-rwxrw----

1 antonk user

1810 Apr 22 13:37 laba2.cmd

[antonk@fargo

 

laba2]$

 

Спомощью команды chmod можно также рекурсивно назначать права на все объекты

впапке.

Выйдем из папки, т.е. перейдем на уровень выше с помощью команды cd, назначим новые права на всю папку laba2. Войдем опять в папку и убедимся, что на все файлы установлены новые права 760:

[antonk@fargo

laba2]$ cd ..

 

 

[antonk@fargo

111]$ ls -l

 

 

total 4

 

 

 

 

drwxr-xr-x

2 antonk

user

4096 Jul 13 18:00 laba2

[antоnk@fargo

111]$ chmod -R 760 laba2/

[antоnk@fargo

111]$ ls -l

 

 

-rwxrw----

2 antonk

user

4096 Jul 13 18:00 laba2

[antonk@fargo

111]$ cd laba2/

 

 

[antonk@fargo

laba2]$ ls -1 total 28

 

-rwxrw----

1 antonk

user

1079

Apr 22 13:37 channell.plx

-rwxrw----

1 antonk

user

1175

Apr 22 13:37 gauss2.plx

-rwxrw----

1 antonk

user

1810

Apr 22 13:37 laba2.cmd

-rwxrw----

1 antonk

user

12352 Apr 22 13:37 laba2.log

[antonk@fargo

laba2]$

 

 

 

Модификация имеющихся прав доступа (символьный вид). Когда требуется изменить уже имеющиеся права на объект, то также используют команду chmod, однако пользуются символьным способом. Например, если объект для владельца доступен для чтения, записи и выполнения, а вы – владелец и вам требуется убрать доступ на выполнение, то в символьном виде можно просто отнять права на выполнение, т.е. написать следующую команду, например, для файла laba2.log: сhmod u-x laba2.log, что означает убрать право для владельца (user, u) на выполнение (execution, x). Выполним сразу команду ls –l, затем поменяем права на файл laba2.log и опять выполним ls –l:

[antonk@fargo

laba2]$ ls –l

 

total 28

 

 

 

 

-rwxrw----

 

1 antonk

user

1079 Apr 22 13:37 channell.plx

-rwxrw----

1 antonk

user

1175 Apr 22 13:37 gauss2.plx

-rwxrw----

1 antonk

user

1810 Apr 22 13:37 laba2.cmd

-rwxrw----

1 antonk

user

12352 Apr 22 13:37 laba2.log

[antonk@fargo

laba2]$ chmod u-x laba2.log

[antonk@fargo

laba2]$ ls –l

 

total 28

 

 

 

 

-rwxrw----

1 antonk

user

1079 Apr 22 13:37 channell.plx

-rwxrw----

1 antonk user

1175 Apr 22 13:37 gauss2.plx

-rwxrw----

1 antonk

user

1810 Apr 22 13:37 laba2.cmd

-rw-rw----

1 antonk

user

12352 Apr 22 13:37 laba2.log

[antonk@fargo laba2]$

 

 

Из примера видно, что атрибуты файла laba2.log изменились с rwxrw---- на rw-rw---- . Иногда требуется поменять владельца файла или каталога, т.е. отдать файл или

каталог другому пользователю. Это можно сделать при двух условиях: во-первых, должна быть создана регистрационная запись пользователя в системе, которому предназначается передача файла или каталога; во-вторых, передать файл или каталог может только суперпользователь системы. В следующем примере root передает файл laba2.cmd пользователю kras :

[antonk@fargo

laba2]$ ls –l

 

 

 

total 28

 

 

 

 

 

-rwxrw----

1 antonk

user

1079

Apr 22 13:37 channell.plx

-rwxrw----

1 antonk

user

1175

Apr 22 13:37 gauss2.plx

-rwxrw----

1 antonk

user

1810

Apr 22 13:37 laba2.cmd

-rwxrw----

1 antonk

user

12352 Apr 22 13:37 laba2.log

[antonk@fargo

laba2]$ chmod u-x laba2.log

 

[antonk@fargo

laba2]$ ls –l

 

 

 

total 28

 

 

 

 

 

-rwxrw----

1 antonk

user

1079

Apr 22

13:37 channell.plx

-rwxrw----

1 antonk

user

1175

Apr 22

13:37 gauss2.plx

-rwxrw----

1 antonk

user

1810

Apr 22

13:37 laba2.cmd

-rw-rw----

1 antonk

user

12352 Apr 22 13:37 laba2.log

[antonk@fargo

laba2]$

 

 

 

 

Суперпользователь также может изменить группу пользователей для объекта c помощью команды chgrp. В следующем примере суперпользователь меняет для вышеуказанного файла текущую группу на группу kras с помощью команды chgrp:

chgrp kras laba2.cmd

Команда umask. Безусловно, с помощью команды chmod в восьмеричной или символьной системах можно поменять права доступа к объектам файловой системы, но только к уже существующим. Но что делать с вновь созданными файлами и директориями? Как доступ к ним разделить между пользователями? Дело в том, что максимальные права доступа на файл и каталог для всех категорий пользователей равны: 666 (чтение и модификация) – на файл, 777 (полные права) – на категорию. Таким образом, если специальных разграничений не проводить, то на любые новые файл или директорию, созданные конкретным пользователем, доступ могут иметь все зарегистрированные пользователи в системе. Чтобы этого не произошло, в Linux применяется система маскирования прав доступа, т.е. с максимальных прав доступа при создании нового объекта снимаются «избыточные» права. К примеру, если пользователь хочет, чтобы его новые файлы создавались с правами 644 (чтение и запись – для пользователя, чтение - для остальных категорий), то с помощью маски требуется снять цифры 022 (666 – 644=022), а если владелец файла хочет полностью запретить доступ остальных пользователей к своему файлу, то значение маски должно быть 026 (666 –640 = 026).

9. Поиск и сортировка данных в ОС Linux.

Представим ситуацию: Вы – разработчик СБИС, работающий в группе над проектом. вам понадобился файл, например, цифровая библиотека или технологическая модель полупроводникового прибора, которые хранятся у одного из разработчиков в пользовательской папке. Имя файлов и имя пользователя-разработчика вы точно не знаете; знаете имя группы; знаете, предположим, первую букву имени файла; знаете точно, что тип объекта – файл; знаете размер файла и некоторые другие параметры. Или,

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

При работе в командном интерпретаторе очень часто приходится упорядочивать, сортировать файлы и каталоги, а также проводить поиск требуемой информации внутри файла по шаблону. Если в текущей папке находится 10 файлов и вам требуется выделить файл с конкретным названием – это одно дело. Ну а что делать, если в текущей папке находится 300 файлов, а вам нужно найти файл, название которого вы не знаете, а знаете только, что третья строка этого файла начинается со слова «group»? И при этом, потратив время, окажется, что вам требовалось искать в другой папке. Согласитесь, задача не простая. Ручной перебор файлов займет массу времени. На помощь вам придут встроенные средства поиска, сортировки и фильтрации данных файловой системы.

9.1 Поиск файлов командой find

Первая команда, с которой мы познакомимся – команда find.

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

икритерии поиска. Команда find позволяет производить поиск в перечисленных каталогах

иих подкаталогах, отыскивая файлы, соответствующие указанным критериям. Команда find дает возможность искать файлы по имени, типу, владельцу и даже по времени последнего изменения. Синтаксис команды следующий: find список_каталогов -

выражение -действие.

Пути за ключевым словом find могут быть как абсолютными, так и относительными. В качестве выражения с использованием предварительного дефиса перечисляются один или несколько критериев, уточняющих условия поиска ОФС. В отличие от опций, каждое выражение должно предваряться своим дефисом, а сами выражения разделяются пробелами. Чем больше выражений находится в командной строке, тем уже формируется запрос на поиск ОФС. Если в качестве выражения ничего не указано, то по умолчанию отображаются все ОФС, находящиеся по указанному пути.

Действие – команда назначения, которую нужно выполнить над найденными ОФС. Если действие не указано, то к найденным объектам применяется действие по умолчанию print – отображение на экране. В табл. 1 перечислены основные выражения и действия команды find .

Вследующем примере пользователь в своей домашней директории производит поиск файлов, имена которых начинаются на комбинацию букв bmt.

[antonk@lab4236s ~]$ find ~ -name 'bmt*' -type f

/home/antonk/bmt_link /home/antonk/BMT/bmt2_de s.log /home/antonk/BMT/bmt2_de s.pit /home/antonk/bmt? /home/antonk/bmtl /home/antonk/bmt2 /home/antonk/bmt3

[antonk@lab4236s ~]$

Действием по умолчанию является print. Убедиться в этом легко, добавив данное действие в конец строки.

[antonk@lab4236s ~]$ find ~ -name 'bmt*' -type f -print

/home/antonk/bmt_link /home/antonk/BMT/bmt2_des.log

/home/antonk/BMT/bmt2_des.plt …

Таблица 4

Команда,

Назначение

выражение

 

и действие

 

 

 

find

Команда find ищет в каталогах файлы на основании

 

заданных критериев поиска. Имеет несколько опций, с

 

помощью которых указываются тип критерия и вы-

 

полняемые действия

-nаme

Выражение name ищет файлы, в именах которых есть

образец

образец

-group имя

Выражение group ищет файлы, относящиеся к указанному

 

имени группы

-size numc

Выражение size ищет файлы размером num блоков. Если

 

после num стоит с, размер указан в байтах (символах)

-mtime n

Выражение mtime ищет файлы, которые в последний раз

 

изменя ись n дней назад

-newer

Выражение newer ищет файлы, которые модифицировались

образец

после изменения файла, соответствующего заданному

 

образцу

-type

Выражение type ищет файлы указанного типа. Типы файлов:

тип_файпа

b - файл устройства поблочного ввода-вывода; с - файл

 

устройства посимвольного ввода-вывода; d - файл каталога; f

 

- обычный файл; р - именованный канал (организованный по

 

принципу очереди); 1- символическая ссылка

-print

Действие print выдает результат поиска на стандартный

 

вывод. Это, как правило, список имен файлов с полными

 

путевыми именами

-ls

Действие ls выдает результат поиска на стандартный вывод в

 

формате, близком к расширенному выводу данных по

 

команде ls.

-exec

Действие exec все найденные объекты автоматически

 

направляет на команду назначения.

-ok

Действие ok все найденные объекты направляет на команду

 

назначения, предварительно запросив подтверждение

 

пользователя.

 

Табл. 4. Команда find

Впредыдущем примере выражение -name в качестве критерия задает образец в неявной форме для создания списка ОФС, а выражение -type показывает, что искать нужно только файлы.

Если вы собираетесь провести поиск в рабочем каталоге, то для этого можно использовать символ «точки», не указывая полный абсолютный путь. Двойная точка обозначает родительский каталог.

Вследующем примере производится поиск во всех файлах и подкаталогах рабочего каталога, причем имя рабочего каталога заменяется точкой. Если вы находитесь в своем начальном каталоге, то это весьма удобная отправная точка для поиска во всех ваших каталогах. Найденные имена файлов выводятся с точкой. Кроме того, если вам требуется ограничить число уровней иерархии (количество поддиректорий) для поиска, можно применить выражение -maxdepth и -mindepth.

[antonk@lab4236s ~]$ find . -name 'bmt*' -type f -maxdepth 1

./bmt_link

./bmt?

./bmt1

./bmt2

./bmt3

[antonk@lab4236s ~]$

Команду find можно применять и для поиска каталогов. В ОС Linux каталог классифицируется как особый тип файла. Хотя все файлы имеют формат байтового потока, некоторые файлы, в том числе каталоги, используются особым образом. В этом смысле можно говорить о разных типах файлов.

В команде find используется опция -type, с помощью которой обеспечивается поиск файла заданного типа. Опция -type имеет односимвольный управляющий параметр (модификатор), обозначающий тип файла. Каталог обозначается модификатором d. В приведенном ниже примере производится поиск каталога copy, для чего заданы его имя и тип d.

[antonk@lab4236s ~]$ find ~ -name copy -type d –print

/home/antonk/copy

[antonk@lab4236s ~]$

Рассмотрим на примере другие действия, которые можно применить к найденным ОФС.

Действие –exec требуется для автоматического выполнения назначенной команды над найденными ОФС.

Допустим, вам требуется осуществить поиск и удаление всех объектов, имена которых начинаются на букву «i». Для начала создадим такие объекты с помощью команды touch. По завершении выполнения команды find убедимся, что все файлы, начинающиеся на букву «i», в текущей директории действительно были удалены.

[antonk@lab4236s ~]$ touch in ip it ir ikt

[antonk@lab4236s ~]$ ls -l i*

-rw-rw-r– 1 antonk antonk 0 Oct 14 12:54 ikt -rw-rw-r– 1 antonk antonk 0 Oct 14 12:54 in -rw-rw-r– 1 antonk antonk 0 Oct 14 12:54 ip -rw-rw-r– 1 antonk antonk 0 Oct 14 12:54 ir -rw-rw-r– 1 antonk antonk 0 Oct 14 12:54 it

[antonk@lab4236s ~]$ find ~ -name 'i*' -exec rm {} \;

[antonk@lab4236s ~]$ ls -l i*

ls: i*: No such file or directory

[antonk@lab4236s ~]$

Теперь допустим, что вам нужно удалить все найденные файлы, кроме «ip». Для этого удобно использовать другое действие, которое позволяет проводить запрос пользователя на выполнение операции, - это действие –ok . Заново создадим тот же перечень файлов.

[antonk@lab4236s ~]$ touch in ip it ir ikt

[antonk@lab4236s ~]$ ls -l i*

-rw-rw-r– 1 antonk antonk 0 Oct 14 13:03 ikt -rw-rw-r– 1 antonk antonk 0 Oct 14 13:03 in -rw-rw-r– 1 antonk antonk 0 Oct 14 13:03 ip -rw-rw-r– 1 antonk antonk 0 Oct 14 13:03 ir -rw-rw-r– 1 antonk antonk 0 Oct 14 13:03 it

[antonk@lab4236s ~]$ find ~ -name 'i*' -ok rm {} \;

<rm ... /home/antonk/ir > ? y

<rm ... /home/antonk/ip > ? n

<rm ... /home/antonk/it > ? y

<rm ... /home/antonk/ikt > ? y

< rm ... /home/antonk/in > ? y

[antonk@lab4236s ~]$ ls -l i*

-rw-rw-r-- 1 antonk antonk 0 Oct 14 13:03 ip

[antonk@lab4236s ~]$

С помощью действий –exec и –ok можно не только удалять файлы, но, например, копировать объекты. В следующем примере все найденные объекты, имена которых начинаются с комбинации букв «bmt», копируются c предварительным подтверждением операции в «WWW», предварительно созданную командой mkdir .

[antonk@lab4236s ~]$ mkdir WWW

[antonk@lab4236s ~]$ find ~ -name 'bmt*' -ok cp {} ~/WWW \;

<cp ... /home/antonk/bmt_link > ? y

<cp ... /home/antonk/BMT/bmt2_des.log > ? y

<cp ... /home/antonk/BMT/bmt2_des.plt > ? y

<cp ... /home/antonk/bmt? > ? y

<cp ... /home/antonk/bmt1 > ? y

<cp ... /home/antonk/bmt2 > ? y

<cp ... /home/antonk/bmt3 > ? y

<cp ... /home/antonk/WWW/bmt_link > ? y

[antonk@lab4236s ~]$

Следует обратить внимание на то, что при использовании выражения –size размер объекта задается в блоках по 512 байт. Например, если вам требуется в домашней директории пользователя antonk найти файл cmos.doc , размер которого составляет 333312 байт, в качестве значения выражения –size нужно задавать не цифру 333312, а количество блоков (данный размер в байтах, разделенный на размер блока 512 байт с округлением). Можно также использовать «+» или «–» при указании количества блоков, где «+» показывает, что размер объекта в блоках превышает размер, указанный при значении выражения, а «–», показывает, что размер объекта в блоках меньше, чем количество блоков, указанное при выражении –size. Знаки «+» и «–» можно также указывать в выражениях –atime и –mtime при указании количества дней доступа к объектам, если точное количество дней неизвестно.

10.Сортировка данных командой sort

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

вфайле ничего не меняется. Изменения можно записать в новый файл либо средствами перенаправления, либо с помощью соответствующего ключа sort . Лучше всего эта команда работает с файлами, представляющими собой списки или перечни элементов. В качестве параметров при команде sort используют одно или несколько имен файлов.

Синтаксис команды следующий: sort –способ_сортировки –k столбец_сортировки имена_файлов .

Команды, в число которых входит sort, называются фильтрами. Фильтры часто используются совместно с каналами. В этом случае синтаксис команды sort следующий:

команда | sort –способ_сортировки –k столбец_сортировки.

Имеется два способа сортировки данных: числовой (опция -n) и алфавитный (опция - d). Команда sort проводит сортировку по указанному полю сортировки. Полем сортировки

Соседние файлы в папке КТНИ