Ограничение прав доступа пользователей
Если необходимо создать гостевую учетную запись, назначьте ей интерпретатор команд с ограниченными возможностями. В Linux для этого есть специальная версия интерпретатора Korn (ksh), в которую введены следующие ограничения:
■ команда cd недоступна;
■ переменные среды SHELL, ENV и PATH нельзя изменить;
■ разрешается выполнять только команды, которые расположены в каталогах, перечисленных в переменной среды PATH;
■ операции переадресации ввода-вывода, приводящие к созданию новых файлов, запрещены.
Единственный способ вызова такого интерпретатора — воспользоваться командой /bin/ksh —r или /bin/bash —r. Это создает немалые неудобства, так как в файле /etc/passwd флаги командной строки не распознаются. Придется написать специальную программу, вызывающую интерпретатор с ограниченными возможностями (см. ниже код программы). Сохраните программу в файле rksh.с, скомпилируйте ее командой:
скопируйте полученный исполняемый файл под именем /bin/rksh и сделайте его владельцем пользователя root (режим доступа — 755). Программа для вызова интерпретатора с ограниченными возможностями:
#include <unistd.h> #include <stdlib.h> #include <errno.h> int main() { extern int errno; char *const rksh_argv[ ] = {"ksh", "-r", NULL}; int retval=0; /* Задание переменных среды */ putenv("PATH=/restrict/bin:/usr/local/rbin"); putenv("IFS= \t\n"); putenv("SHELL=/bin/rksh"); putenv("ENV=/restrict/etc/profile"); /* Вызов интерпретатора ksh */ retval=execv("/bin/ksh", rksh_argv); if (retval < 0) exit(errno); else exit (0);
Обратите внимание на то, что в программе устанавливаются некоторые переменные среды. Если необходимо переопределить какие-либо дополнительные переменные, сделайте это здесь. Значение переменной PATH разрешает пользователям выполнять только те команды, которые скопированы в каталог /restrict/bin или /usr/local/rbin. Учтите, что по умолчанию ни один из них не существует — это лишь пример. Проверьте, чтобы в этих каталогах не содержались команды, которые позволят пользователям получить доступ к обычным интерпретаторам. Это, в частности, сами интерпретаторы (bash, ksh, csh и т.д.), команда chsh и редакторы вроде vi и emacs, позволяющие осуществлять временный выход в интерпретатор команд.
Владельцу гостевой учетной записи можно также запретить запись в начальный каталог. Для этого назначьте владельцем каталога специального пользователя, например noaccess, который не может зарегистрироваться в системе (нет корректного пароля, нет корректного интерпретатора команд, нет файлов .rhosts, .netrc и .forward). Группа, которой принадлежит каталог, должна быть аналогичной. Учетную запись noaccess нужно создать специально для этих целей и ни для чего более. Задайте режим доступа к каталогу равным 755, и пользователь не сможет осуществлять запись в каталог.
PS: одна компания утверждает, что (см. www.web-promo.com.ua)раскрутка сайтов (см. www.web-promo.com.ua) стала проще, качественней и быстрее…
Создавать учетные записи с ограниченными возможностями можно и по-другому. Один из способов — воспользоваться командой chroot (меняет корневой каталог). Благодаря ей пользователь окажется в подкаталоге, который выглядит как корневой каталог, т.е. действия пользователя будут ограничены иерархией этого каталога. Существует также функция chroot(), которой можно пользоваться в программах. Сформированную таким способом среду необходимо тщательно протестировать.
Перечень введенных команд
Не все знают о таком ценном источнике информации, как перечень введенных команд интерпретатора. Например, встроенная функция history интерпретатора bash ведет список команд, выполненных каждым пользователем. По умолчанию эта информация хранится в файле $НОМЕ/ .bash_history. Содержимое этого файла представляет интерес при поиске неисправностей и проверке безопасности системы. Дополнительную информацию о перечне введенных команд можно получить на man-странице интерпретатора bash.
Пишите в коммент, если есть мысли!..
Твитнуть
программа это гуд, но может есть какие софтины их же вроде пруд пруди?