4

У меня есть программа, которая использует модуль Python cmd для интерфейсов командной строки.

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

Из соображений безопасности программа никогда не должна позволять пользователю получать доступ к обычной подсказке. Пользователь должен всегда использовать командную строку программы для запуска всех команд. (В программу встроены различные фильтры).

Попытался поместить команду выполнения программы в /etc/password (заменив оболочку bash по умолчанию на cmd выполнения программы) для пользователя, а также попытался поместить ее в файл .bashrc users, но безрезультатно ; пользователь по-прежнему может получить доступ к приглашению по умолчанию.

Любые указатели для этого могут быть очень полезны.

1 ответ1

2

Вы можете заменить SHELL =/bin/sh своим скриптом в /etc /profile (или эквивалентным для ssh логинов)- большинство эмуляторов терминала и многие другие приложения будут проверять env, чтобы получить это значение для запуска оболочки по умолчанию, но вернется к /bin/sh или /bin/bash в случае сбоя (вы можете разрешить себе использовать оболочку, поэтому включите его в проверку user /gid /uid)

вместо этого используйте скрипт оболочки (или просто добавьте его в конец bashrc без заголовка)

#!/bin/sh
#public domain fake shell
while read -p "$PS1" CMD; do
   case "$CMD" in
      *exit*|*bad_case*|*another bad case*)echo bad command: user info logged etc..;;
      *good case*|*another good case*|*more*)eval "$CMD";;
      *)echo command not supported;;
   esac
done

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

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