
LINUX / KOZLOV2_1
.pdf
аУстанавливает права доступа для владельца,
группы и прочих пользователей
sУстанавливает бит смены идентификатора пользователя или группы; программа
принадлежит владельцу и группе
tУстанавливает sticky-бит (бит закрепления); программа с установленным sticky-битом
после ее завершения остается в памяти
Выйдем из папки, т.е. перейдем на уровень выше, с помощью команды 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
61
PDF created with pdfFactory Pro trial version www.pdffactory.com
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]$ |
|
|
|
|
|
|
|
62 |
PDF created with pdfFactory Pro trial version www.pdffactory.com
Суперпользователь также может изменить группу пользователей для объекта c помощью команды chgrp. В следующем примере суперпользователь меняет для вышеуказанного файла текущую группу на группу kras с помощью команды chgrp: chgrp kras laba2.cmd
Команда umask. Безусловно, с помощью команды chmod в восьмеричной или символьной системах можно поменять права доступа к объектам файловой системы, но только к уже существующим. Но что делать с вновь созданными файлами и директориями? Как доступ к ним разделить между пользователями? Дело в том, что максимальные права доступа на файл и каталог для всех категорий пользователей равны: 666 (чтение и модификация) – на файл, 777 (полные права) – на категорию. Таким образом, если специальных разграничений не проводить, то на любые новые файл или директорию, созданные конкретным пользователем, доступ могут иметь все зарегистрированные пользователи в системе. Чтобы этого не произошло, в Linux применяется система маскирования прав доступа, т.е. с максимальных прав доступа при создании нового объекта снимаются «избыточные» права. К примеру, если пользователь хочет, чтобы его новые файлы создавались с правами 644 (чтение и запись – для пользователя, чтение – для остальных категорий), то с помощью маски требуется снять цифры 022 (666 – 644 = 022), а если
владелец файла хочет полностью запретить доступ остальных пользователей к своему файлу, то значение маски должно быть 026 (666 –640 = 026).
3.5. Рабочий каталог разработчика
Зарегистрировавшись в системе, разработчик попадает в свой начальный каталог. Имя, присвоенное этому каталогу системой, по умолчанию совпадает с вашим регистрационным именем. Все файлы, создаваемые для нового пользователя, помещаются в его начальный каталог. В этом каталоге можно создавать подкаталоги и размещать в них файлы. Создавать свои начальные каталоги могут и другие пользователи системы. Имя
начального каталога каждого пользователя совпадает с регистрационным именем этого пользователя.
Получить доступ к каталогу можно либо по имени, либо сделав его каталогом по умолчанию. Каждому каталогу при создании присваивается имя, которым можно поль- зоваться для доступа к файлам, находящимся в данном каталоге. Этот каталог можно также сделать своим каталогом, применяемым по умолчанию. Если при проведении какой-либо операции над файлами имя каталога не указывается, то используется каталог
63
PDF created with pdfFactory Pro trial version www.pdffactory.com
по умолчанию, который также называют рабочим. В этом смысле рабочий каталог – это каталог, в котором вы в данный момент работаете.
При регистрации в системе в качестве рабочего принимается ваш начальный каталог, имя которого обычно совпадает с вашим регистрационным именем. Рабочий каталог можно сменить с помощью команды cd, рассмотренной ранее. В процессе смены рабочего каталога вы переходите из одного каталога в другой. Имя, которое дается каталогу или файлу при его создании, не является полным. Полным именем каталога является его путевое имя.
Определим понятие пути к объекту файловой системы. Путь можно ассоциировать с дорожной картой, которая показывает, как добраться из одного места в другое. При описании местоположения ОФС применяют два типа путей. Первый путь – абсолютный или, как его еще называют, полный путь. Абсолютный путь – путь к объекту файловой системы от начала корневого каталога. Таким образом, абсолютный путь показывает
пользователю всю последовательную цепочку уровней иерархии от самого верхнего (корневого раздела) до объекта, разделяя уровни символом «слеш». Второй путь – относительный. Относительный путь – путь к объекту файловой системы относительно текущего местоположения пользователя.
Иерархические связи, существующие между каталогами, образуют пути, и эти пути можно использовать для однозначного указания каталога или файла и обращения к нему.
На рис.3.5 приведено дерево каталогов, верхним уровнем иерархии которого является корневой раздел ( / ). На примере данного дерева определим абсолютный и относительный пути к файлу pluto. Абсолютный путь всегда начинается с корневого раздела - /export/home/user1/dir3/planets/pluto. Если текущее местоположение пользователя
– папка dir, то доступ к файлу pluto с использованием относительного пути короче – planet/pluto. Но если текущим местоположением пользователя является папка tree, то относительный путь становится длиннее – ../../dir3/planet/pluto. Использование двух точек
в относительном пути дает указание интерпретатору выйти на один уровень иерархии выше по дереву каталогов. В некоторых случаях относительный путь, наоборот, длиннее, чем абсолютный. Однако при назначении переменных удобнее использовать именно абсолютный путь, так как он не зависит от текущего местоположения пользователя.
64
PDF created with pdfFactory Pro trial version www.pdffactory.com

Рис.3.5. Дерево каталогов
Для упрощения доступа к своим файлам пользователь может указывать специальный символ «тильда», который представляет собой полное путевое имя начального каталога. В следую щем примере пользователь antonk, работая в каталоге copy, обращается к файлу new_comm and в своем начальном каталоге, поместив перед именем файла new_command символы «тильда» и «косая черта»:
[antonk@lab4236s copy]$ cat ~/new_command
#! /bin/sh ls -lh
[antonk@lab4236s copy]$
65
PDF created with pdfFactory Pro trial version www.pdffactory.com
Контрольные вопросы
1.Какие существуют категории пользователей в ОС Linux? Определите приоритеты между ними.
2.Приведите примеры команд назначения прав доступа на объекты файловой системы с использованием символьной системы.
3.Приведите примеры команд назначения прав доступа на объекты файловой системы с использованием восьмеричной системы.
4.Приведите пример дерева каталогов и на его основе дайте определения понятий абсолютного и относительного путей.
5.Расскажите о назначении команды umask.
66
PDF created with pdfFactory Pro trial version www.pdffactory.com
4. Поиск, сортировка и фильтрация данных
Представим следующую ситуацию: вы – разработчик СБИС, работающий в группе над проектом, вам понадобился файл, например, цифровая библиотека или технологическая модель полупроводникового прибора, которые хранятся у одного из разработчиков в пользовательской папке. Имя файлов и имя пользователя-разработчика вы точно не знаете; знаете имя группы; знаете, предположим, первую букву имени файла; знаете точно, что тип объекта – файл; знаете размер файла и некоторые другие параметры. Или, предположим, вам требуется найти файл, имя которого вы не знаете вообще, но знаете, что в нем есть определенная строка или определенное слово.
При работе в командном интерпретаторе очень часто приходится упорядочивать, сортировать файлы и каталоги, а также проводить поиск требуемой информации внутри файла по шаблону. Если в текущей папке находится 10 файлов, и вам требуется выделить файл с конкретным названием – это одно дело. Ну а если в текущей папке находится 300 файлов, а вам нужно найти файл, название которого вы не знаете, а знаете только, что третья строка этого файла начинается со слова «group»? И при этом, потратив время, окажется, что вам требовалось искать в другой папке. Согласитесь, задача не простая. Ручной перебор файлов займет массу времени. На помощь вам придут встроенные средства поиска, сортировки и фильтрации данных файловой системы.
4.1. Поиск файлов командой find
Первая команда, с которой мы познакомимся, – команда find.
Если вы используете много файлов, разбросанных по разным каталогам, то для выявления одного из них или нескольких файлов определенного типа можно провести поиск. Эта функция осуществляется с помощью команды find. В качестве параметров в ней используются имена каталогов, за которыми следуют несколько опций, задающих тип и критерии поиска. Команда find позволяет производить поиск в перечисленных каталогах и их подкаталогах, отыскивая файлы, соответствующие указанным критериям. Команда find дает возможность искать файлы по имени, типу, владельцу и даже по времени последнего изменения. Синтаксис команды следующий: find список_каталогов -выражение -
действие.
Пути за ключевым словом find могут быть как абсолютными, так и относительными. В качестве выражения с использованием предварительного дефиса перечисляются один или несколько критериев, уточняющих условия поиска ОФС. В
67
PDF created with pdfFactory Pro trial version www.pdffactory.com
отличие от опций, каждое выражение должно предваряться своим дефисом, а сами выражения разделяются пробелами. Чем больше выражений находится в командной строке, тем уже формируется запрос на поиск ОФС. Если в качестве выражения ничего не указано, то по умолчанию отображаются все ОФС, находящиеся по указанному пути.
Действие – команда назначения, которую нужно выполнить над найденными ОФС. Если действие не указано, то к найденным объектам применяется действие по умолчанию print – отображение на экране. В табл.4.1 перечислены основные выражения и действия команды find.
Таблица 4.1
|
Команда find |
|
|
Команда, |
|
выражение |
Назначение |
и действие |
|
|
|
find |
Команда find ищет в каталогах файлы на основании |
|
заданных критериев поиска. Имеет несколько опций, с |
|
помощью которых указываются тип критерия и вы- |
|
полняемые действия |
|
|
-nаme |
Выражение name ищет файлы, в именах которых есть |
образец |
образец |
|
|
-group имя |
Выражение group ищет файлы, относящиеся к указанному |
|
имени группы |
|
|
-size numc |
Выражение size ищет файлы размером num блоков. Если |
|
после num стоит с, размер указан в байтах (символах) |
|
|
-mtime n |
Выражение mtime ищет файлы, которые в последний раз |
|
изменялись n дней назад |
|
|
-newer |
Выражение newer ищет файлы, которые модифицировались |
образец |
после изменения файла, соответствующего заданному |
|
образцу |
|
|
-type |
Выражение type ищет файлы указанного типа. Типы файлов: |
тип_файла |
b - файл устройства поблочного ввода-вывода; с - файл |
|
устройства посимвольного ввода-вывода; d - файл каталога; |
|
f - обычный файл; р - именованный канал (организованный |
|
по принципу очереди); 1- символическая ссылка |
|
|
|
68 |
PDF created with pdfFactory Pro trial version www.pdffactory.com
Действие print выдает результат поиска на стандартный |
|
|
вывод. Это, как правило, список имен файлов с полными |
|
путевыми именами |
|
|
-ls |
Действие ls выдает результат поиска на стандартный вывод |
|
в формате, близком к расширенному выводу данных по |
|
команде ls |
|
|
-exec |
Действие exec все найденные объекты автоматически |
|
направляет на команду назначения. |
|
|
-ok |
Действие ok все найденные объекты направляет на команду |
|
назначения, предварительно запросив подтверждение |
|
пользователя. |
|
|
В следующем примере пользователь в своей домашней директории производит поиск файлов, имена которых начинаются на комбинацию букв 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 …
В предыдущем примере выражение -name в качестве критерия задает образец в неявной форме для создания списка ОФС, а выражение -type показывает, что искать нужно только файлы.
Если вы собираетесь провести поиск в рабочем каталоге, то для этого можно использовать символ «точки», не указывая полный абсолютный путь. Двойная точка обозначает родительский каталог.
69
PDF created with pdfFactory Pro trial version www.pdffactory.com
Вследующем примере производится поиск во всех файлах и подкаталогах рабочего каталога, причем имя рабочего каталога заменяется точкой. Если вы находитесь в своем начальном каталоге, то это весьма удобная отправная точка для поиска во всех ваших каталогах. Найденные имена файлов выводятся с точкой. Кроме того, если вам требуется ограничить число уровней иерархии (количество поддиректорий) для поиска, можно применить выражение -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*
70
PDF created with pdfFactory Pro trial version www.pdffactory.com