6

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

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

7 ответов7

3

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

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

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

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

3

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

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

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

3

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

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

1

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

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

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

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

Моя рекомендация заключается в создании полной среды входа в chroot для пользователей, когда они входят в систему. Это похоже на то, что производители Apple и OEM-производителей Android делают со своими устройствами. http://en.wikipedia.org/wiki/Chroot. Это позволяет вам создать определенную среду для каждого пользователя, который входит в систему с ограниченными привилегиями.

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

Следующие ссылки помогут вам в этом 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

0

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

#!/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)

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .