Как разрешить запускать только определенные команды в консоли?

Появилась задача, в которой нужно создать пользователя и разрешить ему запуск только! одрого приложения в консоли.

Пробовал подсунуть ему curl вместо шелла, но вариант не подходит, так как нужно чтобы человек мог выполнять команду с параметрами в консоли.

Другие команды должны быть заблокированы.

Про chroot знаю, но возможно есть другие решения.

Спасибо.
  • Вопрос задан
  • 4675 просмотров
Решения вопроса 1
@arudmin Автор вопроса
В общем, «сам-спросил-сам-отвечаю».

С решением данной задачи отлично справляется оболочка lshell

Основной недостаток применения chroot для решения этой проблемы в том, что для помещенного в него пользователя требуется собирать (пусть и минимальное) окружение. То есть нужно дублировать некоторые данные, следить за обновлениями и пр.

Lshell — это пользовательский шелл, который разрешает пользователю выполнять только определенные команды и ходить в заданные директории. Конфиг очень простой и понятный, поэтому я за 10 минут разобрался и уже протестировал эту связку.

После установки пакета из стандартного репозитория Дебиана, необходимо подсунуть пользователю в качестве оболочки lshell и добавить параметры пользователя в конфиг, где нужно указать список разрешенных комманд, и при желании добавить директории.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Chroot логичнее всего.
Можно поменять права на все бинари в /usr/bin и подобных местах, чтобы право на чтение у пользователя было только для curl. Но это слишком размашистый костыль, как я думаю.
Ответ написан
@mc2
Iron Bars Shell is a restricted Unix shell. The user can not step out of, nor
access files outside the home directory. It is written in C for Linux. No
libraries used. It is small, fast, secure. Two ascii configuration files for
more control.

WWW: ibsh.sourceforge.net
Ответ написан
@RPG
Надёжнее всё же будет ACL/chroot, чтобы не приходилось обновлять - mount --bind. А то знаете ли curl file:///etc/passwd, да и всякое бывает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы