Как затвердеть su с dpkg-statoverride?

Я читаю руководство по упрощению Ubuntu 14, и это одно из предложений:

Обычно кажется разумной идеей убедиться, что только пользователи из группы sudo могут запускать команду su для того, чтобы действовать как (или стать) root:

  dpkg-statoverride --update --add root sudo 4750
 / Бен / су 

Я просмотрел команду dpkg-statoverride но я до сих пор не могу понять, что делает команда выше.

Похоже, что Ubuntu 14 по умолчанию разрешает кому-то sudo. Чтобы протестировать, я создал нового пользователя, вошел в систему как этот пользователь, попытался sudo, и он не удался – что хорошо.

Итак, какова цель вышеупомянутого предложения?

  • Включить Compiz Fusion при запуске kde
  • Создание брандмауэра с установленным Docker
  • uXlib.h В каком пакете есть этот файл lib?
  • Насколько тяжело элементарноеOS над классическим Ubuntu?
  • как перейти на архитектуру докеров?
  • ошибка при компиляции ffmpeg: gcc не может создать исполняемый файл
  • Apache 403 Запрещено в подпапках?
  • Evolution Проверьте почту, когда окно закрыто
  • 3 Solutions collect form web for “Как затвердеть su с dpkg-statoverride?”

    Цель состоит в том, чтобы запретить обычным пользователям запускать команду su (su похоже на sudo, причем разница в том, что sudo выполняет одну команду, su запускает новый сеанс как новый пользователь, который длится до тех пор, пока этот пользователь не выполнит exit)

    Режим su по умолчанию – 4755 или rwsr-xr-x, «s» означает, что команда задана-UID (что означает, что она всегда выполняется как пользователь, который ее владеет, а не пользователь, который ее выполняет. В этом случае su принадлежит root, поэтому он всегда работает с привилегиями root)

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

    Изменяя режим до 4750, он не позволяет обычным пользователям (пользователям, отличным от root и тем, кто в группе sudo) даже читать или выполнять его, в первую очередь, чтобы злоумышленник должен был либо изменить права собственности на этот файл, либо изменить режим файла или изменить собственный эффективный UID / GID, прежде чем они смогут даже попытаться использовать эту теоретическую уязвимость в su.

    Команда dpkg-statoverride полезна в этом случае, потому что она направляет диспетчер пакетов использовать эти значения владельца / режима для этого файла, даже если он заменяется более новой версией (то есть с помощью apt upgrade). Другими словами, он делает его более постоянным, чем просто chown и chmod.

    Вот тактика общего назначения, которую я рекомендую для этого экземпляра: всякий раз, когда я настраиваю конфигурацию su / sudo или любого компонента аутентификации на машине Linux / UNIX, я открою еще один сеанс ssh / putty на этом сервере и войду в систему пользователь root, и просто оставьте этот сеанс открытым в другом окне. Таким образом, если я что-то прикручу и закрою себя, у меня уже есть сеанс входа в систему, где я могу исправить все, что я сломал.

    В зависимости от ваших пользователей это может быть хорошей или плохой идеей.

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

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

     su -c 'cat /home/userB/file' userB >file 

    может использоваться для копирования файла в домашний каталог пользователя, но это возможно только в том случае, если пользователюA разрешено запускать команду su .

    На серверах баз данных PostgreSQL обычно администраторы баз данных могут переключаться на пользователя postgres для выполнения некоторых задач обслуживания, которые невозможны, пока сервер базы данных жив; для того, чтобы это работало, они должны иметь возможность запускать su - postgres .

    Те же соображения применимы к команде sudo (которая отличается и более сложна, чем su – только конфигурация по умолчанию делает команду в первую очередь полезной для группы sudoers , потому что этой группе разрешено запускать любую команду с root . , если вы добавляете какие-либо пользовательские правила, например, позволяя любому пользователю запускать updatedb без аргументов, то пользователям за пределами группы sudoers необходимо выполнить разрешение на sudo .

    Кроме того, существует не только su , это setuid – есть также

    • sg (позволяет временно присоединяться к группе, если есть групповой пароль)
    • passwd (позволяет сменить пароль)
    • chfn (позволяет изменять информацию пользователя)
    • chsh (позволяет изменять оболочку по умолчанию)

    и несколько других. Эти инструменты содержат много кода с командой su , поэтому изменение режима /bin/su одиночку не будет покупать вас много, и изменение режима для всех из них, безусловно, будет раздражать ваших пользователей, особенно в случае passwd .

    На упрощенном сервере вы хотите иметь несколько бинарных файлов setuid / setgid, особенно таких, которые могут выполняться учетной записью пользователя, которая не нуждается в конкретном инструменте, по возможности – по одной простой причине:

    Вы не полностью доверяете этим инструментам полиции, что с ними кто-то делает. Ошибки в таких программах или их зависимости, которые позволяют пользователям обходить такую ​​полицейскую деятельность, часто обнаруживаются и активно ищутся исследователями безопасности и злоумышленниками. Неправильная конфигурация (поведение su зависит от конфигурации библиотеки PAM) может вызвать такую ​​же проблему. Таким образом, каждый двоичный файл setuid / setgid, который может выполнять указанная учетная запись (служба или пользователь), является потенциальным вектором для получения нежелательного корневого доступа.

    Хотя известные проблемы в таком программном обеспечении обычно приводят к быстрому доступу к исправлениям / обновлению, принудительное их быстрое подключение может привести к сбою – и некоторые дыры могут быть неизвестны всем, включая поставщика.

    Чтобы свести к минимуму вероятность решения неотложной проблемы, имеет смысл сделать что-то вроде https://stackoverflow.com/questions/2189976/find-suid-and-gid-files-under-root , а затем исследовать, какие из этих могут быть устранены (большинство из них, если вы используете специально созданный сервер и знаете, что вы делаете), предпочтительнее использовать такие методы, как dpkg-statoverride, которые поддерживаются вашими системами управления пакетами для постоянного сохранения таких изменений.

    Существует еще одна причина ограничить доступ к «su» в конкретных установках со старой школьной NFS – по политическим причинам вы можете ограничить учетную запись root (что некоторые пользователи могут получить, опять же, политические причины. Тем не менее, плохая практика) от использования но тривиально, поскольку он обходит флаг root_squash монтирования NFS.

    Interesting Posts

    Как вызвать двоичный файл вне PATH

    Asus Bluetooth Dongle с чипом Atheros (ath3k) – пробник с открытым кодом OpenSUSE с ошибкой -5

    Нужно ли запускать SSH-демона, если я использую Chef локально?

    privoxy блокирует весь трафик в браузере, настроенный на использование прокси-сервера 127.0.0.1:8118

    Назначьте переменную каждой строке вывода и пропустите ее в bash

    Emacs Hexl для чтения файлов устройств?

    Midnight Commander, используя дату в меню пользователя

    Traceroute – подходите к месту с проблемами подключения

    -e с различными эмуляторами терминалов

    Группы пользователя ssh не относятся к SSHFS

    sed regex не работает

    Как показать искомые строки, а также количество найденных строк?

    Как написать сценарий оболочки, чтобы при компиляции моей программы на C ++ он поместил двоичный код в двоичный каталог

    Автоматизировать запуск нескольких параллельных потоков экрана?

    Не удалось создать пользователя в FreeBsd: pw: имя пользователя или идентификатор

    Linux и Unix - лучшая ОС в мире.