Полномочия SUID - Который корректен?

По-видимому, я полностью пропустил Ваш вопрос. Ответ - то, что нет никакого четко определенного "нормального автозавершения". Однако, если бы Вы знаете, какую вещь Вы хотели бы, чтобы это завершило (файлы, псевдонимы, pids, имена переменной, и т.д.), можно дать один или несколько флагов compgen. См. эту compgen страницу руководства, конкретно -A опции под complete (они - то же). Например, если бы Вы хотите завершить имена файлов, Вы использовали бы это:

compgen -f -- "${COMP_WORDS[COMP_CWORD]}"

Если Вы хотите завершить команды (включая псевдонимы, функции, и т.д.), можно использовать это:

compgen -back -A function -- "${COMP_WORDS[COMP_CWORD]}"

Использовать $COMP_CWORD получить индекс завершаемого слова. Если индекс не 1, набор $COMPREPLY кому: () и возвратитесь.

COMP_CWORD

    An index into ${COMP_WORDS} of the word containing the current 
    cursor position. This variable is available only in shell functions
    invoked by the programmable completion facilities

3
14.09.2017, 03:55
3 ответа

Я лично не обеспокоился бы как программы, которые Вы перечислили, обычно считаются безопасными и надежными. И например sudo без suid набора битов не имеет никакого смысла. То же идет для chsh chfn и т.д. Если бы Вы действительно хотите защитить свой сервер, я просто дал бы следующие исполняемые файлы suid полномочия:

  • ping/ping6 по диагностическим причинам.
  • suexec запускать cgi скрипты при различных пользователях
  • su или sudo
  • pt_chown если Вы не имеете devpts

Можно удалить бит suid из ssh-keysign поскольку это только используется для основанной на хосте аутентификации согласно http://lists.freebsd.org/pipermail/freebsd-stable/2006-October/029737.html

Необходимо также удостовериться, что пользователи не получают доступ оболочки и имеют их каталог chrooted.

Если Вы действительно хотите защитить свой сервер, необходимо рассмотреть изучение SELinux.

4
27.01.2020, 21:10

Позвольте своему распределению сделать то, что оно хочет, если Вы не уверены, что знаете то, что Вы делаете. То, что необходимо задать этот вопрос, показывает, что Вы не знаете достаточно. Так оставляют хорошо одними.

То, какие программы должны быть setuid, зависит от того, как вещи настраиваются на Вашем распределении. Например, Fedora заменил большую часть использования setuid setcap. Например, для ping нужно CAP_NET_RAWIO возможность смочь открыть неструктурированные сокеты; это может получить его, будучи setcap CAP_NET_RAWIO (лучшая изоляция полномочия), или будучи setuid корнем (традиционный метод, который не требует setcap исполняемых файлов).

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

На выделенном сервере не могли бы иметь значения некоторые вещи, которые Вы повредили. Но необходимо только изменить значения по умолчанию распределения, если Вы знаете о выполнении правильной вещи, не наоборот. Помните, что доступность является частью безопасности. Если Вы блокируете себя из сервера или делаете себя не могущими диагностировать и восстановить проблемы, Вы повредили свою собственную безопасность.

5
27.01.2020, 21:10
  • 1
    +1 для первого абзаца и другого умственные +1 для остатка. –  a CVn 14.02.2013, 12:38
  • 2
    @Gilles, определенно не знайте достаточно, которое является, почему я спрашиваю. Вы видите уязвимости в какой-либо из включенных программ, если всех оставляют включенному? лучший выбор –  csi 14.02.2013, 16:27
  • 3
    @ChristopherIckes, Если будет известная уязвимость в какой-либо из этих программ, то специалисты по обслуживанию распределения продвинут обновление системы защиты. –  Gilles 'SO- stop being evil' 14.02.2013, 17:35

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

1
27.01.2020, 21:10
  • 1
    Прямо насколько это идет, но SELinux не может дать полномочия, просто устранить их. –  vonbrand 14.02.2013, 16:36
  • 2
    @vonbrand afaik, который можно указать, который имеют программы/контекст, какие возможности... –  Ulrich Dangel 14.02.2013, 17:10
  • 3
    , но если Вы волнуетесь по поводу setuid/setgid программ, имеющих слишком много полномочий, selinux, управляет им и только дает ему перманент, на котором это нуждается, даже с setuid. –  lsd 14.02.2013, 22:27

Теги

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