Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
122
Добавлен:
20.06.2014
Размер:
6.61 Mб
Скачать

19. Обработка аргументов командной строки. Переменные окружения.

Получить информацию от пользователя можно путем считывания аргументов, которые пользователь вводит в командной строке. Командная оболочка автоматически сохраняет до 9 аргументов командной строки в специальных внутренних переменных с именами: $1, $2 … $9. Во FreeBSD можно сохранять любое количество элементов. В переменной $0 сохраняется имя самой программы.

Переменная $@ - список всех аргументов, $# - число аргументов.

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

today=`data` #выполнить команду data и присвоить ее вывод в качестве значения переменной today.

Переменные окружения. Одним из свойств процесс в Unix является набор переменных окружения. Фактически они определены множеством текстовых строк вида: var=value. Процесс имеет возможность изменить свое окружение - удалить, добавить, изменить переменные. Дочерние процессы наследуют окружение родителя. Начальное окружение сеанса устанавливается программой login, исходя из записей в файле паролей, например:

HOME=/usr/home/student – домашний каталог, значение по умолчанию

LOGNAME=student – зарегистрированное имя

PATH=/bin:/etc:/usr/bin – пути поиска

SHELL=/bin/sh – интерпретатор сеанса

MAIL=/var/mail/зарег. имя – имя почтового ящика

……

T2=временная зона, определено системой.

Посмотреть весь набор можно, дав команду set без параметров.

Можно обращаться к переменным по их именам в командах интерпретатора: echo $PATH

Модифицировать окружение можно командой export

export PATH=$PATH:/usr/bin/home

20. Пользователь и группа. Права доступа к файлу.

Вычислительная система не умеет оперировать именами, поэтому каждому имени в системе соответствует некоторое числовое значение – идентификатор.

UID – идентификатор пользователя. Все пользователи в системе делятся на группы. Группы также получают свои имена и идентификаторы групп GID. Для каждого файла в системе запоминаются имена хозяина и группы хозяина.

Группа хозяев не обязательно та, куда входит хозяин. Хозяин – тот, кто создал файл, группа хозяев – группа тех, кому принадлежит этот пользователь. В последствии хозяин или администратор могут передать файл в собственность другому пользователю:

chown owner f1, f2, fn – меняет собственника файлов, owner – символьное username или PID.

Изменение группы хозяев:

chgrp group f1,f2,fn. group – groupname или GID.

Для каждого файла есть 3 категории пользователей:

- хозяин файла

- группа хозяев файла

- остальные пользователи

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

Различают 3 вида прав доступа:

- право на чтение r

- право на запись w

- право на исполнение x

Для регулярных файлов смысл буквальный.

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

Право записи позволяет создавать, изменять, переименовывать файлы. Для удаления файла достаточно иметь права w и x для директории независимо от прав доступа к самому файлу.

Системные вызовы getuid и getgid. Узнать идентификатор пользователя, запустившего программу на выполнение и идентификатор группы можно с помощью системных вызовов getuid() и getgid().

Заголовочные файлы:

#include <sys/types.h>

#include <unistd.h>

Прототипы:

uid_t getuid(void)

gid_t getgid(void)

Типы совместимы с int