Если необходимо создать гостевую учетную запись, назначьте ей интерпретатор команд с ограниченными возможностями. В Red Hat 7.2 для этого есть специальная версия интерпретатора Korn (ksh), в которую введены следующие ограничения:
команда cd недоступна;
переменные среды SHELL, ENV и PATH нельзя изменить;
разрешается выполнять только команды, которые расположены в каталогах, перечисленных в переменной среды PATH;
операции переадресации вводавывода, приводящие к созданию новых файлов, запрещены.
Единственный способ вызова такого интерпретатора (в Red Hat 7.2) — воспользоваться командой /bin/ksh г или /bin/bash г. Это создает немалые неудобства, так как в файле /etc/passwd флаги командной строки не распознаются. Придется написать специальную программу, вызывающую интерпретатор с ограниченными возможностями (листинг 4.5). Сохраните программу в файле rksh. с, скомпилируйте ее командой
$ дсс о rksh rksh.с
скопируйте полученный исполняемый файл под именем /bin/rksh и сделайте его владельцем пользователя root (режим доступа — 755).
Листинг 4.5. Программа для вызова интерпретатора с ограиичеиными возможностями +++++++++++++++++++
Ограниченный вариант ksh а
/
include
int main() {
extern int errno;
char const rksh_argv[] {"ksh", "r", NULL}; int retval0; / Задание переменных среды /
putenv("PATH/restrict/bin:/usr/local/rbin"); putenv("IFS \t\n"); putenv("SHELL/bin/rksh"); putenv("ENV/restrict/etc/profile"); / Вызов интерпретатора ksh /
retvalexecv("/bin/ksh", rksh_argv); if (retval < 0)
exit(errno);
else
exit(0)j
}
Обратите внимание на то, что в программе устанавливаются некоторые переменные среды. Если необходимо переопределить какиелибо дополнительные переменные, сделайте это здесь. Значение переменной PATH, соответствующее листингу 4.5, разрешает пользователям выполнять только те команды, которые скопированы в каталог /restrict/bin или /usr/local/rbin. Учтите, что по умолчанию ни один из них не существует — это лишь пример. Проверьте, чтобы в этих каталогах не содержались команды, которые позволят пользователям получить доступ к обычным интерпретаторам. Это, в частности, сами интерпретаторы (bash, ksh, csh и т.д.), команда chsh и редакторы вроде vi и emacs, позволяющие осуществлять временный выход в интерпретатор команд.
Владельцу гостевой учетной записи можно также запретить запись в начальный каталог. Для этого назначьте владельцем каталога специального пользователя, например noaccess, который не может зарегистрироваться в системе (нет корректного пароля, нет корректного интерпретатора команд, нет файлов . rhosts, . netrc и . forward). Группа, которой принадлежит каталог, должна быть аналогичной. Учетную запись noaccess нужно создать специально для этих целей и ни для чего более. Задайте режим доступа к каталогу равным 755, и пользователь не сможет осуществлять запись в каталог.
Создавать учетные записи с ограниченными возможностями можно и подругому. Один из способов — воспользоваться командой chroot (меняет корневой каталог). Благодаря ей пользователь окажется в подкаталоге, который выглядит как корневой каталог, т.е. действия пользователя будут ограничены иерархией этого каталога. Существует также функция chroot (), которой можно пользоваться в программах. Сформированную таким способом среду необходимо тщательно протестировать.