Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1_ОСС_Методичка___.docx
Скачиваний:
38
Добавлен:
19.05.2015
Размер:
13.86 Mб
Скачать

Заключение

Вы узнали о способах управления общими ресурсами. Вы познакомились с созданием общих ресурсов, управлением разрешениями, настройкой автономных файлов и прекращением общего доступа при помощи оснастки консоли управления Microsoft «Общие папки» и утилит командной строки. Помимо этого вы научились управлять файлами и сессиями общих ресурсов и закрывать их.

Практическая работа № 19-20 Команды обращения к файловой системе.

1 ЦЕЛЬ РАБОТЫ ознакомиться с командами обращения к файловой системе UNIX.

Порядок выполнения:

  1. Проделайте задания части 1

  2. Напишите свою пр. работу по образу ч. 1, используя методические указания (по всем сценариям), используя свои названия файлов, каталогов и т. п. . Можно использовать раздел : ПРИМЕРНЫЕ СЦЕНАРИИ

  3. Выполните задания для самоподготовки

  4. Напишите отчет по проделанной работе

Часть 1

  1. Загрузить терминал Unix.

Выполнить команды Unix:

  1. Просмотреть мое сетевое имя:

$ who am i

  1. Просмотреть версию ОС UNIX: $ uname

  2. Просмотреть системные дату и время: $ date

  3. Просмотреть имя текущего каталога: $ pwd

Ответ: /home/user1

  1. Просмотреть содержимое текущего каталога без параметров:

$ ls

  1. Просмотреть содержимое текущего каталога с выводом в одну колонку:

$ ls -1

  1. Просмотреть информацию о создателях файлов:

$ ls -author

  1. Просмотреть полную информацию о файлах домашнего каталога:

$ ls -l

  1. Просмотреть содержимое текущего каталога c учетом скрытых файлов:

$ ls -A

  1. Просмотреть содержимое текущего каталога c сортировкой по размеру:

$ ls -l -S

  1. Просмотреть содержимое текущего каталога c сортировкой по дате:

$ ls -l -t

  1. Вызвать справку о команде ls (выход из справки q):

$ man ls

  1. Просмотреть тип объекта Документы:

$ file Документы

  1. Создать новый каталог sun:

$ mkdir sun

  1. Создать еще один новый каталог moon.

  2. Открыть новый каталог sun:

$ cd sun

  1. Просмотреть имя текущего каталога.

  2. Создать новый каталог star.

  3. Открыть каталог star.

  4. Просмотреть имя текущего каталога. Должно быть: /home/user1/sun/star

  5. Создать в каталоге star новый текстовый файл tt1.txt с помощью редактора ED:

$ ed tt1.txt

?

: a [команда добавления текста в файл]

Фамилия имя

Группа

Предмет: “UNIX”

Тема: “Команды обращения к файловой системе”

Версия UNIX:

Мое сетевое имя:

Мой текущий каталог:

Дата:

Тип объекта “Документы”:

. [точка набирается в пустой строке]

w [команда записи файла]

q [команда выхода из текстового редактора]

$

  1. Просмотреть содержимое текущего каталога.

  2. Просмотреть содержимое созданного текстового файла:

$ cat tt1.txt

  1. Просмотреть тип созданного файла:

$ file tt1.txt

  1. Перейти из каталога star в каталог sun:

$ cd /home/user1/sun

  1. Просмотреть имя текущего каталога.

  2. Просмотреть из каталога sun содержимое каталога star, указав в команде просмотра путь к каталогу star.

  3. Скопировать файл из каталога star в каталог moon:

$ cp <откуда> <куда>

  1. Открыть каталог moon.

  2. Просмотреть имя текущего каталога.

  3. Просмотреть содержимое каталога moon.

  4. Переименовать файл tt1.txt из каталога moon на файл text2

$ mv tt1.txt text2

  1. Просмотреть содержимое переименованного текстового файла text2.

  2. Просмотреть тип данных файла text2.

  3. Создать копию файла text2 с именем text3.

  4. Определить размер файла text2.

  5. Дописать в файл text3 строку текста с указанием размера файла text2.

  6. Выйти в корневой каталог:

$ cd /

  1. Просмотреть имя текущего каталога.

  2. Выйти из режима терминала:

$ exit

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

Изучаемые команды: cat,cd,cp,cut,echo,find,grep,head,ln,ls,mkdir,mv,paste,pwd,sort,tail,tar,touch,uniq,wc

Сценарий: Знакомство с каталогами UNIX

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

Начальные условия: Командная строка после входа в систему.

  1. Получить имя текущего каталога с помощью команды pwd:

  2. [user@localhost ~]$ pwd

/home/user/

Перейти в корневой каталог с помощью команды cd /:

[user@localhost ~]$ cd /

[user@localhost /]$ pwd

/

Отметить, как изменилась строка приглашения.

Посмотреть содержимое корневого каталога с помощью команды ls:

[user@localhost /]$ ls

bin dev home lib mnt proc sbin sys usr

boot etc image media opt root srv tmp var

Сравнить с использованием «расширенного» вывода команды ls -F:

[user@localhost /]$ ls -F

bin/ dev/ home/ lib/ mnt/ proc/ sbin/ sys/ usr/

boot/ etc/ image/ media/ opt/ root/ srv/ tmp/ var/

Каталоги отмечаются синим цветом и знаком «/» после имени.

Посмотреть содержимое домашнего каталога с помощью команды ls ~:

[user@localhost /]$ ls ~

Documents tmp

Домашний каталог содержит набор стандартных каталогов.

Вернуться в домашний каталог с помощью cd без параметров:

[user@localhost /]$ cd

[user@localhost ~]$

Создать каталог test с помощью команды mkdir test:

[user@localhost ~]$ mkdir test

Посмотреть обновлённое содержимое домашнего каталога ls:

[user@localhost ~]$ ls

Documents test tmp

Создать подкаталог subtest в каталоге test командой mkdir test/subtest:

[user@localhost ~]$ mkdir test/subtest

Посмотреть содержимое домашнего каталога и его подкаталогов с помощью ключа рекурсивного просмотра -R в команде ls -R:

[user@localhost ~]$ ls -R

.:

Documents test tmp

./Documents:

./test:

subtest

./test/subtest:

./tmp:

Сценарий: Изучение типов файлов в UNIX

В этом сценарии рассматриваются типы файлов в UNIX: простые файлы, каталоги, ссылки. Изучаются команды создания и копирования файлов. Показывается разница между жесткими и символическими ссылками, между копированием и переносом файла.

Начальные условия: Командная строка. Каталог test после предыдущего сценария.

Cоздать пустой файл с помощью команды touch first.txt:

[user@localhost test]$ touch first.txt

[user@localhost test]$ ls

first.txt subtest

Добавить строку текста в конец файла с помощью команды echo "Hello, world" >> first.txt и перенаправления вывода:

[user@localhost test]$ echo "Hello, world" >> first.txt

Посмотреть содержимое файла с помощью команды cat first.txt:

[user@localhost test]$ cat first.txt

Hello, world

[user@localhost test]$

Посмотреть расширенную информацию о каталоге, используя ключ -l команды ls. ls -l test:

[user@localhost test]$ ls -l

total 4

-rw-r--r-- 1 user user 13 Feb 14 20:12 first.txt

drwxr-xr-x 2 user user 60 Feb 14 19:42 subtest

Добавить псевдоним командной оболочки, чтобы сократить размер команды, с помощью команды alias ls='ls -F -l':

[user@localhost test]$ alias ls='ls -F -l'

[user@localhost test]$ ls test

total 4

-rw-r--r-- 1 user user 13 Feb 14 20:12 first.txt

drwxr-xr-x 2 user user 60 Feb 14 19:42 subtest

Посмотреть глубже на каталог test, используя ключи -a и -i. ls -a -i

[user@localhost test]$ ls -a -i

total 4

1014 drwxr-xr-x 3 user user 100 Feb 14 20:07 ./

941 drwx------ 8 user user 340 Feb 14 19:28 ../

1081 -rw-r--r-- 1 user user 13 Feb 14 20:12 first.txt

1015 drwxr-xr-x 2 user user 60 Feb 14 19:42 subtest/

Первый столбец — номера индексных узлов файловой системы. Третий столбец — число жёстких ссылок файла.

Скопировать файл с помощью команды cp first.txt copy1.txt:

[user@localhost test]$ cp first.txt copy1.txt

[user@localhost test]$ ls -a -i

total 8

1014 drwxr-xr-x 3 user user 120 Feb 14 20:33 ./

941 drwx------ 8 user user 340 Feb 14 19:28 ../

1082 -rw-r--r-- 1 user user 13 Feb 14 20:33 copy1.txt

1081 -rw-r--r-- 1 user user 13 Feb 14 20:12 first.txt

1015 drwxr-xr-x 2 user user 60 Feb 14 19:42 subtest/

Новый файл имеет свой собственный индексный узел.

Переименовать файл с помощью команды mv first.txt orig.txt. mv first.txt orig.txt:

[user@localhost test]$ mv first.txt orig.txt

[user@localhost test]$ ls -a -i

total 8

1014 drwxr-xr-x 3 user user 120 Feb 14 20:37 ./

941 drwx------ 8 user user 340 Feb 14 19:28 ../

1082 -rw-r--r-- 1 user user 13 Feb 14 20:33 copy1.txt

1081 -rw-r--r-- 1 user user 13 Feb 14 20:12 orig.txt

1015 drwxr-xr-x 2 user user 60 Feb 14 19:42 subtest/

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

Создать жёсткую ссылку командой ln orig.txt copy2.txt:

[user@localhost test]$ ln orig.txt copy2.txt

[user@localhost test]$ ls -a -i

total 12

1014 drwxr-xr-x 3 user user 140 Feb 14 20:41 ./

941 drwx------ 8 user user 340 Feb 14 19:28 ../

1082 -rw-r--r-- 1 user user 13 Feb 14 20:33 copy1.txt

1081 -rw-r--r-- 2 user user 13 Feb 14 20:12 copy2.txt

1081 -rw-r--r-- 2 user user 13 Feb 14 20:12 orig.txt

1015 drwxr-xr-x 2 user user 60 Feb 14 19:42 subtest/

Добавилась ещё одна ссылка на тот же файл, число ссылок увеличилось на 1.

Создать символическую ссылку командой ln -s orig.txt orig.lnk:

[user@localhost test]$ ln -s orig.txt orig.lnk

[user@localhost test]$ ls -a -i

total 12

1014 drwxr-xr-x 3 user user 160 Feb 14 20:45 ./

941 drwx------ 8 user user 340 Feb 14 19:28 ../

1082 -rw-r--r-- 1 user user 13 Feb 14 20:33 copy1.txt

1081 -rw-r--r-- 2 user user 13 Feb 14 20:12 copy2.txt

1083 lrwxrwxrwx 1 user user 8 Feb 14 20:45 orig.lnk -> orig.txt

1081 -rw-r--r-- 2 user user 13 Feb 14 20:12 orig.txt

1015 drwxr-xr-x 2 user user 60 Feb 14 19:42 subtest/

Новый файл имеет новый индексный узел и размер, равный имени файла orig.txt.

Сравним содержимое файлов при обращении к ним по имени:

[user@localhost test]$ cat orig.txt

Hello, world.

[user@localhost test]$ cat copy2.txt

Hello, world.

[user@localhost test]$ cat orig.lnk

Hello, world.

К одним и тем же данным можно обратиться через жесткую или символическую ссылку.

Сценарий: Поиск системных журналов

В этом сценарии изучается команда поиска файлов и каталогов.

Начальные условия: Командная строка, каталог test после прошлого сценария.

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

[user@localhost test]$ find

.

./orig.lnk

./copy2.txt

./orig.txt

./copy1.txt

./subtest

Найти все файлы и дериктории в текущем каталоге и ее подкаталогах, которые начиняются на «o» с помощью команды find -name "o*":

[user@localhost test]$ find -name "o*"

./orig.lnk

./orig.txt

Найти все файлы и каталоги в каталоге /etc и его подкаталогах, которые начиняются на «o» с помощью команды find /etc -name "o*":

[user@localhost test]$ find /etc -name "o*"

find: /etc/tcb: Permission denied

find: /etc/default: Permission denied

find: /etc/buildreqs: Permission denied

...

Список найденных файлов может быть слишком большим и для его просмотра можно воспользоваться «прокруткой» терминала с помощью клавиш Shift-PgUp и Shift-PgDn.

Вы увидели множество сообщений об ошибках доступа («Permission denied»), которые можно подавить с помощью перенаправления ошибок следующим образом: find /etc -name "o*" 2>/dev/null

[user@localhost test]$ find /etc -name "o*" 2>/dev/null

/etc/modprobe.d/options

/etc/modutils.d/oss

/etc/net/ifaces/default/fw/options

/etc/net/ifaces/default/options

...

/etc/pam.d/other

/etc/rc.d/init.d/outformat

Найти все каталоги в /etc, которые начинаются на «o» с помощью команды find /etc -name "o*" -a -type d 2>/dev/null:

[user@localhost test]$ find /etc -name "o*" -a -type d 2>/dev/null

/etc/net/options.d

/etc/openssh

/etc/openssl

/etc/opt

Найти все обычные файлы в каталоге /var и его подкаталогах, заканчивающиеся на «log»:

[user@localhost test]$ find /var -name "*log" -a -type f 2>/dev/null

/var/log/Xorg.0.log

/var/log/faillog

/var/log/lastlog

Создать каталог logs с помощью команды mkdir logs:

[user@localhost test]$ mkdir logs

Скопировать найденные файлы в локальный каталог с помощью параметра -exec команды find. Для этого выполнить: find /var -name "*log" -a -type f -exec cp {} test/logs/ 2>/dev/null:

[user@localhost test]$ find /var -name "*log" -a -type f -exec cp {} test/logs/ 2>/dev/null

[user@localhost test]$ ls test/logs

итого 789

-rw-r----- 1 user users 601033 Окт 16 18:37 emerge.log

-rw-r--r-- 1 user users 292292 Окт 16 18:37 lastlog

-rw-r--r-- 1 user users 37383 Окт 16 18:37 Xorg.0.log

Были скопированы все файлы, права на чтение которых у нас есть.

Сценарий: Архивирование и деархивирование файлов и каталогов

В этом сценарии изучается команда архивирования файлов и каталогов. Командная строка, каталог test после прошлого сценария.

Начальные условия:

Перейти в домашний каталог с помощью команды cd:

[user@localhost test]$ cd

[user@localhost ~]$

Создать архив с именем test.tar.gz с применением сжатия, содержащий каталог test с помощью команды tar -czf test.tar.gz test:

[user@localhost ~]$ tar -czf test.tar.gz test

[user@localhost ~]$ ls

drwxr-xr-x 4 user users 208 Окт 16 18:36 test/

-rw-r--r-- 1 user users 79173 Окт 16 18:49 test.tar.gz

Создать новый каталог для содержимого архива командой mkdir test2:

user@desktop ~ $ mkdir test2

Перейти в новый каталог с помощью команды cd test2:

user@desktop ~ $ cd test2

Развернуть содержимое архива в текущий каталог с помощью команды tar -xzf ../test.tar.gz:

user@desktop test2 $ tar -xzf ../test.tar.gz

Убедиться, что содержимое распакованного архива совпадает с оригинальныйм каталогом. Ввести команду ls -l -F:

user@desktop test2 $ ls -l -F

итого 0

drwxr-xr-x 4 user users 208 Окт 16 18:36 test/

user@desktop test2 $ ls -l -F test

итого 12

-rw-r--r-- 1 user users 13 Окт 15 20:54 copy1.txt

-rw-r--r-- 2 user users 13 Окт 15 20:48 copy2.txt

drwxr-xr-x 2 user users 136 Окт 16 18:37 logs/

lrwxrwxrwx 1 user users 8 Окт 16 18:54 orig.lnk -> orig.txt

-rw-r--r-- 2 user users 13 Окт 15 20:48 orig.txt

drwxr-xr-x 2 user users 48 Окт 13 21:33 subtest/

Сценарий: Cоздание новых текстовых файлов

В этом сценарии изучаются команды для создания и модифицирования текстовых файлов. Командная строка.

Начальные условия:

Ввести команду echo "One line":

user@desktop test $ echo "One line"

One line

Данная команда принимает строку в виде аргумента и выводит её на стандартный вывод.

Ввести ту же команду, но перенаправить вывод в файл second.txt с помощью «>». Ввести команду echo "One line" > second.txt:

user@desktop test $ echo "One line" > second.txt

Добавить в конец файла second.txt строку «A line» с помощью другого перенаправления echo "A line" >> second.txt:

user@desktop test $ echo "A line" >> second.txt

Вывести содержимое файла с помощью команды cat second.txt:

user@desktop test $ cat second.txt

One line

A line

С помощью команды cat можно создавать многострочные файлы —, если переопределить вывод программы в файл и вводить текст до нажатия Ctrl-D (конец ввода). Ввести команду cat >multiline.txt и набрать текст

user@desktop test $ cat >multiline.txt

Simple text:

blah-blah-blah

1 2 3 4 5 6 7 8 9 0

bye!

(Ctrl+D)

user@desktop test $

Убедиться, что содержимое файла совпадает с введённым текстом, включая все переводы строки. Для этого ввести команду cat multiline.txt

user@desktop test $ cat multiline.txt

Simple text:

blah-blah-blah

1 2 3 4 5 6 7 8 9 0

bye!

Основным назначением команды cat является объединение файлов, имена которых передаются как аргументы командной строки. Объединить файлы с помощью команды cat orig.txt second.txt multiline.txt > big.txt:

user@desktop test $ cat orig.txt second.txt multiline.txt > big.txt

Убедиться, что новый файл содержит строки из перечисленных файлов с помощью команды cat big.txt:

user@desktop test $ cat big.txt

Hello, world

One line

A line

Simple text:

blah-blah-blah

1 2 3 4 5 6 7 8 9 0

bye!

Сценарий: Разрезание и склеивание файлов

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

Начальные условия: Командная строка.

Посмотреть содержимое файла /etc/passwd, в котором содержится информация о пользователях системы, с помощью команды cat /etc/passwd:

user@desktop test $ cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/bin/false

daemon:x:2:2:daemon:/sbin:/bin/false

adm:x:3:4:adm:/var/adm:/bin/false

lp:x:4:7:lp:/var/spool/lpd:/bin/false

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

...

Каждая строка хранит запись об отдельном пользователе. Запись состоит из полей, разделённых символом «:».

Выделить первый столбец в каждой записи, установив разделитель в «:», с потощью команды cat /etc/passwd | cut -f1 -d::

user@desktop test $ cat /etc/passwd | cut -f1 -d:

root

bin

daemon

adm

lp

sync

shutdown

...

Отсортировать список пользователей по алфавиту с помощью команды cat /etc/passwd | cut -f1 -d: | sort:

user@desktop test $ cat /etc/passwd | cut -f1 -d: | sort

adm

alias

apache

at

bin

cron

cyrus

...

Выделить седьмой столбец в каждой записи, соответствующий командной оболочке пользователя, с помощью команды cat /etc/passwd | cut -f7 -d:

user@desktop test $ cat /etc/passwd | cut -f7 -d:

/bin/bash

/bin/false

/bin/false

/bin/false

/bin/false

/bin/sync

...

Список содержит много повторяющихся строк.

Удалить повторяющиеся строки командой cat /etc/passwd | cut -f7 -d: | uniq:

user@desktop test $ cat /etc/passwd | cut -f7 -d: | uniq

/bin/bash

/bin/false

/bin/sync

/sbin/shutdown

/sbin/halt

/bin/false

...

Некоторые повторяющиеся строки остались, так как сравниваются только последовательные строки.

Добиться полной уникальности, предварительно отсортировав строки с помощью команды sort. Ввести команду cat /etc/passwd | cut -f7 -d: | sort | uniq:

user@desktop test $ cat /etc/passwd | cut -f7 -d: | sort | uniq

/bin/bash

/bin/false

/bin/sync

/dev/null

/sbin/halt

/sbin/shutdown

Выделить первый и седьмой столбец файла /etc/passwd в отдельные файлы. Для этого ввести команды cat /etc/passwd | cut -f1 -d: > users и cat /etc/passwd | cut -f7 -d: > shells:

user@desktop test $ cat /etc/passwd | cut -f1 -d: > users

user@desktop test $ cat /etc/passwd | cut -f7 -d: > shells

Объединить результаты с помощью команды paste users shells:

user@desktop test $ paste users shells

root /bin/bash

bin /bin/false

daemon /bin/false

adm /bin/false

lp /bin/false

sync /bin/sync

...

Сценарий: Быстрый анализ текстов

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

Начальные условия: Командная строка.

Получить число строк в файле /etc/passwd с помощью команды wc -l /etc/passwd :

user@desktop test $ wc -l /etc/passwd

44 /etc/passwd

Или другим способом: посчитав число слов в созданном ранее файле users с помощью команды cat users | wc -w:

user@desktop test $ cat users | wc -w

44

Посмотеть первые несколько строк длинного файла с помощью команды head logs/Xorg.0.log:

user@desktop test $ head logs/Xorg.0.log

X Window System Version 6.8.2

Release Date: 9 February 2005

X Protocol Version 11, Revision 0, Release 6.8.2

Build Operating System: Linux 2.6.13-gentoo i686 [ELF]

Current Operating System: Linux thinkpad 2.6.13-gentoo #1 Wed Sep 7 01:03:14 MSD 2005 i686

Build Date: 08 October 2005

Before reporting problems, check http://wiki.X.Org

to make sure that you have the latest version.

Module Loader present

Аналогично, посмотеть последние несколько строк с помощью команды tail logs/Xorg.0.log:

user@desktop test $ tail logs/Xorg.0.log

(II) RADEON(0): [RESUME] Attempting to re-init Radeon hardware.

(II) RADEON(0): [agp] Mode 0x1f000201 [AGP 0x8086/0x3340; Card 0x1002/0x4c66]

(II) Mouse1: ps2EnableDataReporting: succeeded

SetClientVersion: 0 8

SetGrabKeysState - disabled

SetGrabKeysState - enabled

(II) 3rd Button detected: disabling emulate3Button

SetClientVersion: 0 8

SetGrabKeysState - disabled

SetGrabKeysState - enabled

Это бывает полезно при просмотре системных журналов — в них самые последние события содержатся в конце файлов.

Сценарий: Поиск строк по регулярным выражениям

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

Начальные условия: Командная строка. Каталог test/log с найденными системными журналами.

Среди найденных системных журналов посмотреть файл журнала загрузки графичской системы XFree86.0.log с помощью команды less test/log/XFree86.0.log:

user@desktop ~ $ less test/log/XFree86.0.log

Выйти из просмоторщика можно нажатием клавиши q.

Найти все предупреждения в журнале: строка, начинающаяся с «(WW)». Для этого ввести команду grep "^(WW)" test/log/XFree86.0.log:

user@desktop ~ $ grep "^(WW)" test/log/XFree86.0.log

(WW) The directory "/usr/share/fonts/freefonts/" does not exist.

(WW) The directory "/usr/share/fonts/unifont/" does not exist.

(WW) The directory "/usr/share/fonts/artwiz/" does not exist.

...

Получить все строки, содержащие следующий шаблон: последовательность из 1 или более цифры или буквы, затем символ собаки, затем еще одна последовательность 1 или более цифры или буквы или точки, затем символ точки, затем от двух до четырёх букв (имя домена первого уровня). Также служебный вывод ошибок удаляется (перенаправляется в нулевое устройство). Для этого ввести команду grep "[a-zA-z0-9]\+@[a-zA-z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null:

user@desktop ~ $ grep "[a-zA-z0-9]\+@[a-zA-z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null

/etc/devfsd.conf:# Richard Gooch <rgooch@atnf.csiro.au> 3-JUL-2000

/etc/inittab:# Author: Miquel van Smoorenburg, <miquels@cistron.nl>

/etc/inittab:# Modified by: Patrick J. Volkerding, <volkerdi@ftp.cdrom.com>

...

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

Избавиться от имени файла в начале строки с помощью ключа -h. Ввести команду grep -h "[a-zA-z0-9]\+@[a-zA-z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null:

user@desktop ~ $ grep -h "[a-zA-z0-9]\+@[a-zA-z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null

# Richard Gooch <rgooch@atnf.csiro.au> 3-JUL-2000

# Author: Miquel van Smoorenburg, <miquels@cistron.nl>

# Modified by: Patrick J. Volkerding, <volkerdi@ftp.cdrom.com>

...

Для вывода только найденной подстроки используется ключ -o. Ввести команду grep -ho "[a-zA-Z0-9]\+@[a-zA-Z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null:

user@desktop ~ $ grep -ho "[a-zA-Z0-9]\+@[a-zA-Z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null

rgooch@atnf.csiro.au

miquels@cistron.nl

volkerdi@ftp.cdrom.com

...

Получить все файлы каталога /etc/ с помощью команды find /etc -type f 2>/dev/null, игнорируя ошибки:

user@desktop ~ $ find /etc -type f 2>/dev/null

/etc/X11/xorg.conf.example

/etc/X11/Sessions/kde-3.4

/etc/X11/Sessions/Xsession

/etc/X11/chooser.sh

...

Для каждого из найденных файлов произвести поиск подстроки «nameserver». Для этого ввести команду find /etc -type f -exec grep "nameserver" {} \; 2>/dev/null:

user@desktop ~ $ find /etc -type f -exec grep "nameserver" {} \; 2>/dev/null

# merge the new nameservers with the other options from the old ...

grep --invert-match '^nameserver[[:space:]]' $REALRESOLVCONF

nameserver 10.22.10.20

...

Для большего удобства добавить вывод имени файла (ключ -H) и номера строки (ключ -n), на которой было найдено совпадение, с помощью команды find /etc -type f -exec grep -Hn "nameserver" {} \; 2>/dev/null:

user@desktop ~ $ find /etc -type f -exec grep -Hn "nameserver" {} \; 2>/dev/null

/etc/ppp/ip-up:24: # merge the new nameservers with the other optio...

/etc/ppp/ip-up:26: grep --invert-match '^nameserver[[:space...

/etc/ppp/resolv.conf:1:nameserver 10.22.10.20

...

Таким образом, команда grep может эффективно использоваться вместе с командой find для нахождения информации в файлах.

Задания для самоподготовки

  1. Создайте каталог test1 в домашнем каталоге. Сравните время создания системных каталогов /bin, /tmp с каталогом test1.

  2. Скопируйте файл /bin/ls в локальный каталог. Посмотрите атрибуты этого файла. Попробуйте запустить его.

  3. Создайте в локальном каталоге символическую ссылку tmplnk на каталог /tmp. Скопируйте несколько файлов в каталог tmplnk.

  4. Сравните файлы /dev/tty1 и /dev/hda1. Какой тип они имеют? Чем они отличаются?

  5. Найдите все файлы в системе, которые были модифицированы не более суток назад.

  6. С помощью одной команды найдите все файлы с расширением .html в каталоге /usr и скопируйте их в локальный каталог htmls.

  7. Создайте архив каталога /etc и узнайте его размер. Попробуйте создать сжатый архив того же каталога. Сравните степень сжатия gzip и bzip2 на этом примере.

  8. Создайте текстовый файл a.txt из десяти строк. Узнайте его размер. Создайте новый файл, содержащий в себе файл a.txt четыре раза.

  9. С помощью одной команды найдите все файлы с расширением .txt в каталоге /usr и объедините их в один большой файл big.txt.

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

  11. Получите с помощью одной команды строки с 5-ой по 8-ю в файле /proc/cpuinfo, содержащем информацию о процессоре.

  12. С помощью одной команды найдите все файлы с расширениями .txt или .html в каталоге /usr, в которых содержится слово user.

ПРАКТИЧЕСКАЯ РАБОТА №21-22. Управления безопасностью в UNIX. Управление доступом в UNIX.

1 ЦЕЛЬ РАБОТЫ: научиться работать с командами доступа к файлам и каталогам UNIX

Проделайте задания ч. 1

Напишите свою пр. работу по образу ч. 1, используя методические указания (по всем сценариям), используя свои названия файлов, каталогов и т. п. . Можно использовать раздел : ПРИМЕРНЫЕ СЦЕНАРИИ

  1. Выполните задания для самоподготовки

  2. Напишите отчет по проделанной работе

Часть1

  1. Зайдите в режим терминала.

  2. Самостоятельно выведите строку текста: “Мой логин <ваше имя регитсрации> и мой домашний каталог <путь вашего домашнего каталога>”

  3. Просмотрите в подробном режиме содержимое домашнего каталога: ls -l

  4. Просмотрите содержимое файла table_1.

  5. Создайте файл жесткой связи hardtab для файла table_1: ln table_1 hardtab.

  6. Просмотрите в подробном режиме содержимое домашнего каталога и обратите внимание на размеры файлов жесткой связи.

  7. Создайте файл символической связи simtab для файла table_1: ln -s table_1 simtab.

  8. Просмотрите в подробном режиме содержимое домашнего каталога и обратите внимание на размер файла символической связи.

  9. Просмотрите в подробном режиме права доступа файлов домашнего каталога, начинающихся с буквы t

  10. Установите запрет на просмотр файла table_1 для владельца: chmod u-r table_1

  11. Попробуйте просмотреть содержимое файла table_1 снова.

  12. Установите разрешение на просмотр файла table_1 для владельца: chmod u+r table_1

  13. Установите запрет на запись в файл table_1 для владельца: chmod u-w table_1

  14. Попробуйте добавить строку текста в файл table_1.

  15. Установите разрешение на запись в файл table_1 для владельца: chmod u+w table_1

  16. Добавьте строку текста в файл table_1.

  17. Определите местоположение файла tt1.txt: find /home/login -name tt1.txt

  18. Просмотрите содержимое файла tt1.txt

  19. Установите право на чтение файла tt1.txt для всех пользователей, за исключением владельца: chmod go=r tt1.txt

  20. Просмотрите содержимое файла tt1.txt снова.

  21. Перейдите в домашний каталог: cd

Создание “темного” каталога:

  1. Просмотрите имя текущего каталога.

  2. Создайте новый каталог darkroom.

  3. Просмотрите права и атрибуты каталога darkroom.

  4. Преобразуйте каталог darkroom в “темный” каталог, добавляя право на выполнение и убирая право на чтение: chmod a-r+x darkroom.

  5. Снова просмотрите права и атрибуты каталога darkroom.

  6. Скопируйте в каталог darkroom файл table_1 с имнем file1.

  7. Перейдите в каталог darkroom.

  8. Попытайтесь просмотреть содержимое каталога darkroom.

  9. Просмотрите содержимое файла file1.

  10. Создайте новый каталог Personal.

  11. Уберите право записи для каталога Personal.

  12. Просмотрите права и атрибуты каталога Personal.

  13. Создайте в домашнем каталоге новый текстовый файл visa с помощью редактора nano: nano visa

  14. Добавьте в файл visa информацию:

Колледж ЭУП ДГТУ

ИВАНОВ ИВАН ПЕТРОВИЧ

Группа СП-4

Специальность: “230105.51 ПОВТ и АС”

Квалификация: техник

  1. Сохраните и закройте файл.

  2. Уберите все права доступа к файлу для группы и прочих пользователей.

  3. Просмотрите права и атрибуты файла visa.

  4. Создайте необходимые условия и скопируйте файл visa с именем visa1 в каталог Personal.

  5. Создайте необходимые условия и подсчитайте количество символов в файле visa1.

  6. Откройте полный доступ ко всем файлам и подкаталогам вашего домашнего каталога.

  7. Определите в каких файлах домашнего каталога содержится символ нуля.

  8. Осуществите замену в текстовых строках:

Цена в рублях | Цена в $$$$$$

(0 + 0) = ### | (% + %) = %%%

UNIX is fine?? | UNIX is fine!!

  1. Составьте и выведите на экран фразу: “Сегодня, <текущая дата>, я, <ваше имя регистрации> работаю в ОС <версия ОС> от сервера <имя сервера>”.

МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО КОМАНДАМ УПРАВЛЕНИЯ БЕЗОПАСНОСТЬЮ В UNIX

Команды по управлению правами

chmod

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

Команда chmod имеет следующий синтаксис:

chmod [-fhv] [-R [-H | -L | -P]] права_доступа файл ...

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

Права доступа в числовой форме задаются в виде восьмеричного числа – битовой маски, являющегося суммой одного или нескольких следующих значений: 4000 – установка бита SUID

2000 – установка бита SUID

1000 – установка sticky-бита

0400 – право на чтение для владельца

0200 – право на запись для владельца

0100 – право на выполнение для владельца

0040 – право на чтение для группы владельца

0020 – право на запись для группы владельца

0010 – право на выполнение для группы владельца

0004 – право на чтение для остальных пользователей

0002 – право на запись для остальных пользователей

0001 – право на выполнение для остальных пользователей

Права доступа в символьном виде задаются с помощью следующей грамматики: права_доступа ::=выражение [, выражение ...]

выражение ::=[субъект ...] [действие ...] действие

действие ::=операция [права ...]

субъект ::=a | u | g | o

операция ::=+ | - | =

права ::=r | s | t | w | x | X | u | g | o

Пример использования. Для того, чтобы для файла test.txt сбросить все права для группы владельца и остальных пользователей, а для владельца установить права на чтение и запись, можно использовать следующие команды (они эквивалентны): chmod u=rw,go= test.txt, chmod a=,u=rw test.txt, chmod 600 test.txt. Результат:

user@desktop$ ls -l test.txt

-rw-r--r-- 1 pp ppgroup 0 7 дек 00:34 test.txt

user@desktop$ chmod a=,u=rw test.txt

user@desktop$ ls -l test.txt

-rw------- 1 pp ppgroup 0 7 дек 00:34 test.txt

Для добавления группе владельца права на запись и отмена для остальных пользователей права на чтение можно использовать следующую команду: chmod g+w,o-r test.txt. Результат:

user@desktop$ ls -l test.txt

-rw-r--r-- 1 pp ppgroup 0 7 дек 00:34 test.txt

user@desktop$ chmod g+w,o-r test.txt

user@desktop$ ls -l test.txt

-rw-rw---- 1 pp ppgroup 0 7 дек 00:34 test.txt

chown

Команда используется для смены владельца/группы файлов.

Команда имеет следующий синтаксис:

chown [-fhv] [-R [-H | -L | -P]] владелец[:группа] файл ...

chown [-fhv] [-R [-H | -L | -P]] :группа файл ...

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

Для изменения группы-владельца файла test.txtна guest необходимо ввести следующую команду: chown :guest test.txt. Результат:

user@desktop$ ls -l test.txt

-rw------- 1 pp ppgroup 0 7 дек 00:34 test.txt

user@desktop$ chown :wheel test.txt

user@desktop$ ls -l test.txt

-rw------- 1 pp wheel 0 7 дек 00:34 test.txt

Команды по управлению пользователями

su

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

Команда имеет следующий синтаксис:

su [-] [-flms] [-c класс] [пользователь [аргументы]]

Команда su позволяет пользователю временно стать другим пользователем. Если не указан параметр пользователь, то используется значение по умолчанию - суперпользователь. Если указанному пользователю назначен пароль, то потребуется его ввести, прежде чем стать другим пользователем.

Для того, чтобы стать суперпользователем, нужно ввести команду su без параметров:

user@desktop$ su

Password:

desktop#

Для того, чтобы получить окружение суперпользователя, необходимо запустить su -.

sudo

Программа sudo является логическим развитием программы su и позволяет как переходить в сеанс суперпользователя, так и запускать отдельные программы от имени суперпользователя.

Программа sudo имеет синтаксис:

sudo [-HSb] [-u пользователь] {-s | команда}

. Можно использовать следующие опции:

-H

переменная окружения HOME изменяется в соответствии с выбранным пользователем;

-b

команда исполняется на заднем фоне;

-s

вместо команды запускается командная оболочка данного пользователя.

Главным достоинством команды sudo является возможность гибкого конфигурирования – на какие программы каким пользователям разрешено повышение превилений. Конфигурация хранится в файле /etc/sudoers, рассмотрение формата которого выходит за рамки курса.

passwd

Команда используется для изменения пароля.

Команда имеет следующий синтаксис:

passwd [-l] [пользователь]

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

useradd

Команда предназначена для добавления нового регистрационного имени пользователя в системе.

Команда имеет следующий синтаксис:

useradd [-u идентификатор [-o] [-i]] [-g группа] [-G

группа[[,группа] . . .]] [-d каталог] [-s shell] [-c комментарий] [-m [-k

skel_dir]] [-f inactive] [-e expire] [-p passgen] [-a событие[, . . .]]

регистрационное_имя

userdel

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

Команда имеет следующий синтаксис:

userdel [-r] [-n месяцев] регистрационное_имя

Команда userdel удаляет определение регистрационного имени пользователя из системы. Она удаляет определение указанного регистрационного имени и выполняет соответствующие изменения в регистрационных файлах и файловой системе. Команда также запоминает идентификационный номер удаляемого пользователя (UID) в файле /etc/security/ia/ageduid, так что этот идентификатор не будет повторно использован на протяжении определенного периода времени. Эта практика не использования идентификатора пользователя называется устареванием идентификатора (UID aging). Для удаления домашней директории пользователя необходимо указать флаг -r. Параметр месяцев задает, сколько месяцев будет запрещено использовать удаляемый идентификатор.

usermod

Команда предназначена для изменения регистрационной информации о пользователе в системе.

Команда имеет следующий синтаксис:

usermod [-u идентификатор [-U] [-o]] [-g группа] [-G

группа[[,группа] . . .]] [-d каталог [-m]] [-s shell] [-c комментарий] [-l

новое_рег_имя] [-f inactive] [-e expire] [-p passgen] [-a

[оператор]событие[, . . .]] регистрационное_имя

Команда предназначена для изменения регистрационной информации о пользователе в системе.

groupadd

Команда используется для создания новой группы в системе.

Команда имеет следующий синтаксис:

groupadd [-g идентификатор [-o]] группа

Новую группу может добавить только администратор. Команда groupadd создает новое определение группы в системе путем добавления соответствующей записи в файл /etc/group.

groupdel

Команда используется для удаления определения группы из системы.

Команда имеет следующий синтаксис:

groupdel группа

Команда groupdel удаляет определение группы из системы путем удаления записи о соответствующей группе из файла /etc/group. Она, однако, не удаляет идентификаторо группы (GID) из файла паролей; удаленный GID действует для всех файлов и каталогов, которые его имели.

groupmod

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

Команда имеет следующий синтаксис:

groupmod [-g идентификатор [-o]] [-n имя] группа

Команда groupmod изменяет определение указанной группы путем изменения соответствующей записи в файле /etc/group. Новое имя группы задается в параметре группа, новый идентификатор группы задается в параметре идентификатор. Опция -o позволяет задать дублирующийся идентификатор группы. Если перед группой стоит символ «+», (например, +student), определение группы администрируется сетевой информационной службой (Network Information Service - NIS). В этом случае, значение идентификатора группы берется из базы данных NIS. Для таких групп использование опций -g или -o вызовет выдачу сообщения о синтаксической ошибке.

Сценарий: Рассматриваем базовые права доступа в UNIX, их просмотр и изменения.

Начальные условия: Командная строка после входа в систему.

Для просмотра прав доступа можно использовать команду ls с ключом вывода расширенной информации: ls -l.

user@desktop ~ $ ls -l

drwxr-xr-x 1 user users 22 Дек 19 11:18 test/

-rw-r--r-- 1 user users 90 Сен 19 00:20 test.txt

Особый интерес представляют: первая колонка (права доступа), третья и четвётрая – владелец и группа владельцев соответственно.

Рассмотрим исполняемый файл ls -l /bin/bash.

user@desktop ~ $ ls -l /bin/bash

-rwxr-xr-x 1 root root 746544 Дек 21 13:40 /bin/bash*

Исполняемые файлы в UNIX определяются наличием специального бита прав доступа.

Для директории права на исполнения трактуются по-другому. Рассмотрим права директории /tmp ls -ld /tmp:

user@desktop ~ $ ls -ld /tmp

drwxrwxrwt 26 root root 5168 Дек 22 20:04 /tmp/

Директория имеет дополнительный sticky-bit, определающий права на создание и удаление файлов в директории.

Изменение файла с недостатком прав приводит к ошибке доступа. Например, команда: rm /bin/bash.

user@desktop ~ $ rm /bin/bash

rm: удалить защищенный от записи обычный файл `/bin/bash'? y

rm: невозможно удалить `/bin/bash': Permission denied

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

Изменение прав доступа производится с помощью команды chmod. Для задания файлу прав только для чтения воспользуемся командой: chmod a=r test.txt.

user@desktop ~ $ chmod a=r test.txt

Для лишения всех прав группы владельцев и остальных пользователей воспользуемся командой: chmod go-rwx test.txt.

user@desktop ~ $ chmod go-rwx test.txt

Практическая работа № 23 Редактирование, резервное копирование и восстановление реестра.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]