Я хотел бы создать пользователя, который может делать только одно: через ssh указать скрипт (и аргументы командной строки для скрипта), который находится в одной конкретной папке (для целей этого вопроса давайте назовем его /local/remote_only_scripts/foo
) и заставить этот скрипт выполняться и вернуть его вывод.
Чтобы пояснить некоторые примеры вещей, которые я не хочу, чтобы пользователь мог делать:
- Локально войдите в аккаунт. Приложение для входа
/bin/login
. Это не скрипт в/local/remote_only_scripts/foo
папке, поэтому не должен вызываться пользователем. - Удаленно войти в учетную запись. Снова вход в систему (это то, что называется ssh?) Не является сценарием в соответствующей папке.
- Перечислите содержимое каталога. Ls в
/bin/ls
. Это не скрипт в соответствующем каталоге. - Отредактируйте файл в этом каталоге. emacs, vi, gedit большинство других редакторов не являются скриптами в этой директории.
- Просмотрите содержимое файла в этом каталоге.
- Запустите файл в этом каталоге, который он не имеет разрешения на выполнение.
Обратите внимание, что это примеры, есть много других действий, которые я не хочу, чтобы пользователь мог выполнять. При рассмотрении действия спросите "это делается с помощью сценария /local/remote_only_scripts/foo
?" если ответ «нет», пользователь не сможет это сделать. Если ответ «да», то пользователь должен иметь возможность сделать это.
PS: Позвольте мне уточнить, что я имею в виду под «добавлением пользователя». Я не имею в виду добавление пользователя в подсистему ssh. Скорее я имею в виду добавление пользователя в компьютерную систему. Так, например, у меня есть система, в которой работает стабильная версия Debian, назовите ее по адресу www.hg.bar.com. Я хочу добавить пользователя (через kuser, users-admin или useradd или другим подобным способом), называть его hg_guest. hg_guest не может войти в систему локально или выполнить какие-либо действия из приведенного выше списка. Все, что может сделать hg_guest - это запускать сценарии «удаленно». Я сказал, что он должен быть в состоянии сделать это через ssh, но если подумать об этом, возможно, разрешение на использование ssh может позволить ему войти в систему локально, поэтому может потребоваться какой-то другой механизм.