Пользователи системы и владельцы файлов
Пользователь системы - это объект, обладающий определенными правами, определяющими возможность запуска программ на выполнение, а также владение файлами. Единственный пользователь системы, обладающий неограниченными правами - это суперпользователь или администратор системы.
Система идентифицирует пользователей по т.н. идентификатору пользователя (UID - User Identifier). Каждый пользователь является членом одной или нескольких групп - списка пользователей, имеющих сходные задачи. Каждая группа имеет свой уникальный идентификатор группы (GID - Group Identifier) Принадлежность группе определяет совокупность прав, которыми обладают члены данной группы.Права пользователя UNIX - это прежде всего права на работу с файлами. Файлы имеют двух владельцев - пользователя (user owner) и группу (group owner). Соответственно атрибуты защиты файлов определяют права пользователя-владельца файла (u), права члена группы-владельца (g) и права всех остальных (o).
Перенаправление потоков и программные каналы
В ОС UNIX существует три стандартных потока: поток ввода, поток вывода и поток стандартного протокола (поток ошибок). Перенаправление потоков позволяет изменить стандартный ввод/вывод: < - изменение источника стандартного ввода; >, >> - изменение приемника стандартного вывода. Примеры:
cat > filename - перенаправление вывода программы cat в файл filename (если этот файл существует, то его прежнее содержимое будет утеряно);
|
|
cat >> filename - добавить содержимое вывода программы cat к содержимому файла filename;
cat < filename - сформировать стандартный ввод программы cat из содержимого файла filename.
Стандартные потоки - поток ввода, поток вывода и поток ошибок (поток протокола) имеют фиксированную нумерацию - 0, 1 и 2 соответственно. Эти номера (номера дескрипторов потоков) можно использовать в явном виде. Например, запись
prog 1>file
эквивалентна записи prog >file
Для того, чтобы отличить имя потока от имени файла, перед номером потока ставится символ ‘&’: prog >file 2>&1
Здесь происходит перенаправление стандартного потока вывода в файл file (>file). А кроме того, сообщения об ошибках также будут перенаправлены в файл file: запись 2>&1 означает перенаправление потока ошибок на стандартный поток вывода, который, в свою очередь, был перенаправлен в файл. Замечание: анализ команды осуществляется интерпретатором справа налево: сначала происходи слияние потоков (2>&1), а затем перенаправляется стандартный поток вывода (1) в файл file. Бывает полезно использование псевдоустройства /dev/null, удаляющего все введенные в него символы. Это используется тогда, когда необходимо полностью игнорировать (подавить) выходные потоки.
|
|
Канал - это программное средство, связывающее процессы ОС UNIX буфером ввода/вывода. Запуск процессов в виде $ процесс_1 | процесс_2 | ... | процесс_n
означает, что стандартный вывод процесса_1 будет замкнут на стандартный ввод процесса_2, стандартный вывод процесса_2 будет замкнут на стандартный ввод процесса_3 и т.д. При этом сначала создается канал, а потом на выполнение одновременно запускаются все процессы, и общее время их выполнения определяется более медленным процессом. Пример: ls | wc -l
Те же действия можно организовать так:
ls > buffer
wc -l < buffer
rm -f buffer
Команда ls выводит на экран (стандартный поток вывода) список файлов текущего каталога, а команда wc -l считает количество строк во входном потоке (в файле, а если файл не указан - в стандартном входном потоке). Таким образом, объединение этих двух команд программным каналом позволяет посчитать количество файлов в текущем каталоге.
Итоговая таблица:
> file | Перенаправление стандартного потока вывода в файл file |
>> file | Добавление в файл file данных из стандартного потока вывода |
< file | Получение стандартного потока ввода из файла file |
p1 | p2 | Передача стандартного потока вывода программы p1 в поток ввода программы p2 |
n > file | Переключение потока вывода из файла с дескриптором n в файл file |
n >> file | Добавление записей потока вывода из файла с дескриптором n в файл file |
n > &m | Слияние потоков с дескрипторами n и &m |
Набор имени команды производится с клавиатуры после появления промпта (приглашения), обычно, - $. Для облегчения работы с системой UNIX имеется возможность использовать шаблоны имен файлов (или метасимволв): ? - один любой символ;
|
|
* - произвольное количество любых символов.
Например: *.c - задает все файлы с расширением "c";
pr???.* - задает файлы, имена которых начинаются с "pr", содержат пять символов и имеют любое расширение.
Справочные команды
date - получение даты и времени.
who - получение списка пользователей, работающих в системе в данный момент.
Пример: $ who
petr tty4i Mar 11 18:46
ann tty12 Mar 11 16:29
Выводится имя пользователя, номер терминала, дата и время начала работы этого пользователя. Команда who am i выведет информацию о самом пользователе.
|
|
man - получение справочной информации: $ man [имя команды]
Альтернативой команды man в некоторых клонах UNIX является командаuse:
use [имя команды]
Команды работы с каталогами
pwd - печать имени текущего каталога. Например: $ pwd /usr/work/petr
ls - вывод на экран содержимого каталога: $ ls [-ключи] [имя каталога]
Если имя каталога не указано, выводится содержимое текущего каталога. Ключи определяют формат выдачи, например: -l - вывод полной информации о каждом файле;
-a - вывод полного списка файлов, включая "." и "..";
-t - сортировка списка по времени создания;
-C - вывод списка в несколько колонок по алфавиту и т.п.
Пример: $ ls –l
total 5
drwxrwxrwx 6 petr user1 496 Mar 10 12:01 tmp
-rw-rw-r-- 1 petr user1 156 Mar 12 15:26 file.c
-rwxrwx--x 2 root root 4003 Apr 01 11:44 pe.out
Права: число влад.имя владельца имя группы длина файла байт дата последней модификации -локальное имя файла cd - смена директории (каталога): $ cd [полное_имя_каталога]
При этом указанный каталог станет текущим. Команда cd без аргументов восстановит в качестве текущего каталога начальный каталог пользователя. mkdir - создание нового каталога:$ mkdir [-ключи] имя_нового_каталога
Для создания нового каталога пользователь должен иметь право записи в родительский каталог текущего каталога. rmdir - удаление директории: $ rmdir список_каталогов Система не позволит удалить каталог, если он не пуст или если у пользователя нет прав записи в него. Текущий каталог не должен принадлежать поддереву удаляемых каталогов.
rm - удаление файлов (ссылок на файл): $ rm [-ключи] список_файлов
Эта команда удаляет ссылки на файлы (то есть локальные имена файлов), если у пользователя есть право записи в каталог, содержащий эти имена. Если удаляемый файл защищен от записи, команда запрашивает подтверждение на удаление файла.
Ключи: -i - вводит необходимость подтверждения для каждого удаляемого файла;
-f - отменяет необходимость подтверждения для любого удаляемого файла;
-r - задает режим рекурсивного удаления всех файлов и подкаталогов данного каталога, а затем и самого каталога.
chmod - изменение атрибутов защиты файла: $ chmod атрибуты список_файлов
Атрибуты файла могут быть заданы разными способами:
1) буквенной кодировкой. Атрибуты защиты обозначаются так:
r - доступ по чтению;
w - доступ по записи;
x - доступ по исполнению.
Категории пользователей задаются следующим образом:
u - атрибуты для владельца файла;
g - атрибуты для группы владельца файла;
o - атрибуты для прочих пользователей;
a - атрибуты для всех категорий пользователей.
Производимая операция кодируется с помощью таких символов:
= - установить значения всех атрибутов для данной категории пользователей;
+ - добавить атрибут для данной категории пользователей;
- - исключить атрибут для данной категории пользователей.
Пример. Разрешить доступ по чтению и записи к файлам с именем mar владельцу и группе-владельцу:m $ chmod ug+rw mar.*
2) в виде восьмеричного числа. Числовые значения атрибутов защиты кодируются трехразрядным восьмеричным числом, где существование соответствующего атрибута соответствует наличию единицы в двоичном эквиваленте восьмеричной цифры этого числа, а отсутствие атрибута - нулю. Например:
символьное представление rwx r-x r--
двоичное представление 111 101 100
восьмеричное представление 7 5 4
Пример. Установить атрибуты чтения и записи для владельца и группы-владельца и только чтения для остальных пользователей:
$ chmod 0664 gb??.doc
cat - слияние и вывод файлов на стандартное устройство вывода:
$ cat [-ключи] [входной_файл1[входной_файл2...]]
Команда по очереди читает указанные входные файлы, если их несколько, объединяет и выводит считанные данные в стандартный поток вывода (на экран). С помощью перенаправления потоков (программных каналов) команда cat может быть использована для выполнения разнообразных операций.
Примеры: 1) $ cat > file1
- в файл file1 помещается текст, набираемый на клавиатуре.
Если до этого файл file1 не существовал, он будет создан; если существовал, его первоначальное содержимое будет утрачено. Окончание ввода текста происходит при нажатии комбинации клавиш Ctrl+D.
2) $ cat file1 > file2 - содержимое файла file1 копируется в файл file2. Файл file1 при этом остается без изменений.
3) $ cat file1 file2 > result
- содержимое file2 будет добавлено к содержимому file1 и помещено в файл result.
4) $ cat file1 >> file2
- содержимое файла file1 добавляется в конец файла file2.
cp - копирование файлов: $ cp вх_файл_1 [вх_файл_2 [...вх_файл_n]] вых_файл
Эта команда имеет два режима использования:
1. 1. если выходной файл есть обычный файл, то входной файл может быть только один; его содержимое копируется в выходной файл. Если выходной файл существовал, то его старое содержимое утрачивается, а атрибуты защиты остаются; если выходной файл не существовал, то он будет создан и унаследует атрибуты входного файла.
2. 2. если выходной файл есть каталог, то в него скопируются все указанные входные файлы, но каталог естественно должен быть создан заранее.
Пример. Скопировать два файла из текущего каталога в указанный с теми же именами:
$ cp f1.txt f2.txt ../usr/petr
$ ls ../usr/petr
f1.txt
f2.txt
mv - пересылка файлов: $ mv вх_файл_1 [вх_файл_2 [...вх_файл_n]] вых_файл
Отличие команды пересылки от команды копирования состоит только в том, что входные файлы после выполнения команды уничтожаются. Пример. Перенести файлы с расширением "c" из указанного каталога в текущий: $ mv petr/*.c .
ln - создание новых ссылок на файл: $ ln вх_файл_1 [вх_файл_2 [...вх_файл_n]] вых_файл
Эта команда имеет два режима использования:
1. 1. Если выходной файл есть обычный файл, то входной файл может быть только один; в этом случае на него создается ссылка с именем вых_файл и к нему можно обращаться и по имени вх_файл_1, и по имени вых_файл. Количество ссылок на файл в описателе увеличивается на 1.
2. 2. Если выходной файл есть каталог, то в нем создаются элементы, включающие имена всех перечисленных входных файлов и ссылки на них.
Пример: $ ls file1
$ ln file1 file2
$ ls file1 file2
Дата добавления: 2018-06-27; просмотров: 207; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!