Почему FreeBSD требует, чтобы терминальные программы были запущены как корень?

Добавьте строку:

DISC_EJECT_REQUEST

к CD-ROM udev правила. Это позволит Вам заблокировать с:

eject -i
2
19.09.2014, 00:34
3 ответа

Исходный xterm был программой с set-uid. Одна из причин, по которой необходима возможность записи в файл utmp , чтобы записывать, кто какое устройство использовал. Другая причина заключалась в том, что xterm необходимо получить право собственности на устройство псевдотерминала, используемое в качестве стандартного ввода / вывода, и ошибка, чтобы установить это право собственности для пользователя, обращающегося к нему.

В то время как большинство других операционных систем типа Unix / Unix больше не используют биты setuid или setgid для достижения той же цели, но с использованием других и более безопасных методов, FreeBSD, похоже, сохранила исходное решение.

3
27.01.2020, 22:00

Хорошо, я не заметил, что это все еще так, но однако. Есть способы ограничения урона, который он может сделать, может быть, с этим новым Capsicum они работают над. Но для всех приложений X (xorg) я бы сказал, что должен прийти первый Wayland, а затем мы можем поговорить о безопасности на компьютере, который работает x для реального. Такие небольшие проблемы, такие как Xterm, способные объявлять терминал, который можно решить потом через пять минут. Xorg - большая огромная безопасность.

0
27.01.2020, 22:00

Запрет некоторых временных отчетов об ошибках / исправлений (не найдено в журнале изменений порта), FreeBSD не требует, чтобы xterm был setuid, и не использовала его с xterm с 2011 года . В комментарии сопровождающего порта сказано

- Don't set suid bit. In our implementation, grantpt() and unlockpt() don't
  actually have any use, because PTY's are created on the fly and already have
  proper permissions upon creation (see src/lib/libc/stdlib/ptsname.c) [1]

, что относится к изменениям, внесенным в 2008 г. :

  The pts(4) driver also implements this feature, which means
  posix_openpt() will now return PTY's that are created on the fly.

Учитывая этот вопрос в 2014 г. звучит так, как если бы OP смотрел на старую систему. Или (это действительно происходит), система OP могла быть изменена кем-то , добавив бит setuid.

В зависимости от платформы (и ее возраста) xterm будет использовать setuid или setgid для следующих операций:

  • открытие псевдотерминала
  • обновление utmp (или utmpx)

Первоначально BSD (и другие) псевдотерминалы -терминальные реализации требовали, чтобы приложение находило специальное устройство и затем открывало его, используя права root setuid. Unix98 покончил с первой частью (поиск специального устройства), начиная с в 1999 году . Большинство реализаций псевдотерминала примерно к 2005 г. устранили необходимость установки приложения с использованием setuid . По какой-то причине во FreeBSD на это не обращали внимания.

Аналогичным образом приложениям могут потребоваться групповые разрешения (через setgid ) для обновления файла utmp (или utmpx), который используется last и who . xterm предоставил использование библиотеки utempter для этой цели с 2000 года .Порт FreeBSD для xterm использует эту функцию, поэтому не требует setgid.

Другие программы могут быть установлены как setuid или setgid для тех же операций, но к 2014 году маловероятно, что какой-либо терминальной программе потребовались разрешения setuid для пользователь root . При использовании в других программах (например, urxvt) они, вероятно, были упущены их сопровождающими.

1
27.01.2020, 22:00

Теги

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