Есть ли способ «авторизовать» команду, введенную пользователем?

Подозревая, что проблема вызвана X-сервером, попробуйте изменить переменную ForwardX11Trusted yes на no в /etc/ssh/ssh_config

-1
07.05.2013, 01:55
3 ответа

Вы можете заменить любые двоичные файлы, использование которых вы хотите одобрить, оберткой, которая предупредит оператора, сохранит запрошенное действие и отложит его до одобрения. Просто снимите разрешения execute и read с данных программ (для данных пользователей) и поместите обертку с тем же именем где-нибудь в пути этих пользователей. (Снятие разрешения на чтение необходимо для предотвращения выполнения программ путем передачи их соответствующим интерпретаторам.)

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

4
29.04.2021, 00:49

Не существует базового механизма разрешения команд, потому что это в основном бессмысленно. Основной механизм разрешения unix - это защита доступа к данным. Если вы можете прочитать данные, вы можете делать с ними все, что захотите. Например, невозможно "разрешить чтение, но запретить копирование" (копирование - это просто чтение в одном месте и запись в другом), так зачем пытаться?

Если вы не хотите, чтобы пользователь имел доступ к файлу, не давайте ему разрешения на доступ к нему.

Если вам время от времени нужен контролируемый доступ пользователей к файлу, подойдет электронная почта. "Привет, Боб, мне нужен доступ к файлу wibble из-за Reasons. Пожалуйста, пришлите его мне."

2
29.04.2021, 00:49

Вы можете установить эти команды для запуска только с sudo и создать asksudo команду, которая отправит это пользователю(ам) root

Это может быть хорошим началом (работает только для root, когда он вошел в систему):

PS: я не тестировал, может содержать ошибки

function asksudo {
  # for users
  write root "asksudo from $(whoami):"
  write root "\"$(whoami)\" \"$(PWD)\" && $*"
}
execsudo {
  # to authorize root executes this with yes/no and the last line of the message
  if [ "$1" = "no" ]
    then
      write $2 "Your command '${*:3}' has been denied" && exit 0
      exit 1 # fails to send the message
  fi
  [[ "$1" != "yes" ]] && echo "invalid decision" && exit 1;

  cd $3 && ${*:4}
  write $2 "Your command '${*:3}' has been executed"
}
1
29.04.2021, 00:49

Теги

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