Пользователи системы и владельцы файлов



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

Система идентифицирует пользователей по т.н. идентификатору пользователя (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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!