Лаб_СПО_1_2-ed3 (538458), страница 5
Текст из файла (страница 5)
euid = geteuidQ; /* получить исполнительный HDD */
printf ("uid %d euid %d\n",uid,eiatd)v
fdmjb = open ("mjb",0_RDONLY);
fdmaury = open ("maury",0_RDONLY);
printf ("fdmjb %d fdmaury %d\n",fdmjb,fdmaury);
setuid (uid);
printf ("after setuid (%d): uid %d euid %dW,uid,
getuid (),geteuid ()); fdmjb = open ("mjb",0 JfcDONLY); fdmaury = open ("maury",0_RDONLY); printf("fdmjb %d fdmaury %d\n",fdmjb,fdmaury); setuid (uid); printf ("after setuid(%d): uid %d euid %d\n",euid,
getuid (),geteuid'0);
}
В результате выполнения данной программы пользователю "mjb" выводится следующая информация:
uid 5088 euid 8319
fdmjb -1 fdmaury 3
after setuid(5088): uid 5088 euid 5088
fdmjb 4 fdmaury -I
after setuid(8319): uid 5088 euid 8319
Системные функции getuid и geteuid возвращают значения реального и исполнительного кодов идентификации пользователей процесса, для пользователя "mjb" это, соответственно, 5088 и 8319. Поэтому процесс не может открыть файл "mjb" (ибо он имеет исполнительный код идентификации пользователя (8319), не разрешающий производить чтение файла), но может открыть файл "тайгу". После вызова функции setuid, в результате выполнения которой в поле исполнительного кода идентификации пользователя ("mjb") заносится значение реального кода идентификации, на печать выводятся значения и того, и другого кода идентификации пользователя "mjb": оба равны 5088. Теперь процесс может
открыть файл "mfb", поскольку он исполняется под кодом идентификации пользователя, имеющего право на чтение из файла, но не может открыть файл "тайгу". Наконец, после занесения в поле исполнительного кода идентификации значения, сохраненного функцией setuid (8319), на печать снова выводятся значения 5088 и 8319.
33.6 Управление заданиями
Для просмотра списка текущих заданий используется команда jobs. В этом списке приводится порядковый номер задания, который можно использовать в любой команде, связанной с управлением заданиями. Использование ключей: -р позволяет выводить только идентификаторы групп процессов, Л - только идентификаторы заданий и групп заданий, к - информацию о заданиях, состояние которых изменилось со времени последнего запроса.
Для запуска команды в фоновом режиме необходимо добавить к ее имени символ амперсанда, например, top & .
Команда lugger » file, log позволит запустить программу ведения журнала logger , вывод программы запишется в файл file.log, сохраняя все предыдущие записи. Если файл не существует, то он будет создан.
3.4 Вопросы к защите лабораторной работы
-
Что понимается под термином "пользовательская среда UNIX"?
-
Напишите общий синтаксис скрипта.
-
Приведите примеры сложных синтаксических конструкций получения значений переменной.
-
Перечислите внутренние переменные shell, используемые в скриптах.
3.5 Литература
1) Робачевский А. Операционная система UNIX.-СПб.:BHV-Санкт-Петербург, 1997/2002.
23