Откройте консольный редактор с ограниченным доступом

У меня есть скрипт, который будет выполняться через SSH. Мой SSH-сервер настроен так, чтобы всегда запускать этот сценарий, поэтому у пользователя нет доступа к реальной машине.

Одной из особенностей этого скрипта является редактирование файла. Интересно, есть ли способ вызвать VIM(или какой-либо другой консольный редактор), не позволяя ему редактировать другие файлы или выполнять команды. Я хочу, чтобы VIM был вынужден редактировать только открытый файл.

7 ответов

Не используя Vim, я могу только предложить без тестирования:

  • Вызвать Vim с параметром -Z
  • Сопоставьте команду W функции, которая сохранит текущий файл и проигнорирует параметр
  • Отключить команду E

Вот еще немного информации, чтобы указать путь:

Отображение ключей в Vim - Учебное пособие
Vim: В чем разница между remap, noremap, nnoremap и vnoremap
Vim документация: карта

Вы можете создать копию vim для конкретного пользователя и ограничить пользователя только теми частями FS, к которым ему необходим доступ - так что только права на чтение / запись для этого файла и никакие другие группы не будут добавлены в его учетную запись. Это должно эффективно ограничить его только этими файлами.

Другая возможная вещь, которую можно сделать, - это ограничить пользователя тюрьмой chroot после выполнения вышеупомянутого - чтобы он видел только vim и этот файл.

Я не думаю, что возможно ограничить сам Vim так, как вы хотите.

Но вы можете ограничить все права пользователя только одним конкретным файлом / каталогом. Таким образом, он никогда не сможет читать или писать в любой другой файл / каталог. Имейте в виду, что ваш пользователь должен иметь возможность выполнять программы, расположенные в другом месте (/usr/bin/vim, например).

Быстрый Google, вероятно, вернет десятки учебных пособий. Этот инструмент может помочь: он позволяет вам настроить своего рода песочницу на вашем сервере.

Используйте Nano в ограниченном режиме.

rnano - это ограниченная версия nano, которая редактирует только определенные файлы и не разрешает пользователю доступ к файловой системе или командной оболочке.

В ограниченном режиме nano не будет:

  • чтение или запись в любой файл, не указанный в командной строке
  • читать любые файлы Nanorc
  • разрешить приостановку
  • разрешить добавление, добавление или сохранение файла под другим именем
  • использовать файлы резервных копий или проверку орфографии

Не совсем то, что вы ищете, но rvim делает то, что вы хотите. Возможно, можно сделать некоторые трюки с chroot. Я не знаю.

Невозможно запустить команды оболочки или приостановить Vim.

My recommendation, is to create a full chroot login environment for the users when they log in. This is similar to what apple and OEM android manufactures do to their devices. http://en.wikipedia.org/wiki/Chroot. This lets you create a specific environment for each user that logs in with limited privileges.

This way you can lock them down to only a specific section of available tools. Even if they have write access they will not be able to affect the root file system and any thing running there, with out some significant effort.

The following links will help you along the way http://www.techrepublic.com/blog/opensource/chroot-users-with-openssh-an-easier-way-to-confine-users-to-their-home-directories/229

http://allanfeid.com/content/creating-chroot-jail-ssh-access

Точно так же, как рутирование или взлом тюрьмы на iphone, устройствах Android требует глубоких знаний программирования, чтобы использовать привилегированный процесс, это не очень легко сделать.

В этом руководстве для Ubuntu объясняется, что такое среда изменения root / chroot и как ее создать. https://help.ubuntu.com/community/BasicChroot

Вы можете просто использовать любой текстовый редактор и создать небольшой скрипт-обертку примерно так:

#!/bin/sh
case "$1" in
  /an/acceptable.file|/another/file)texteditor "$1";;
  *)echo you don't have permission to edit this file
    exit;;
esac

установить разрешения соответственно

(Примечание: этот метод может использоваться для многих целей и распространен в сценариях cgi)

Другие вопросы по тегам