Позволит ли это правило sudo пользователю обновить систему и ничего более?

Позволит ли это правило sudo пользователю обновить систему и ничего более?

Я хочу разработать правило sudo, которое позволит пользователю ricardoобновлять систему с помощью aptitude, но запретит ему использовать sudo для запуска любой другой команды (он проблемный пользователь). Есть ли какие-то подводные камни в этом правиле, которые я упускаю?

ricardo  ALL=(root) /usr/bin/aptitude

Рикардо использует только aptitude, а не apt-get. Кроме того, у меня сейчас нигде не установлен Ubuntu, поэтому я понимаю, что это /usr/bin/aptitudeможет быть не совсем тот файл, который нужно разрешить.

Если в этом правиле есть подводные камни, как его можно улучшить?

решение1

Эта команда ограничит возможности пользователя выполнять aptitudeкакие-либо действия, кроме обновления кэша репозитория и выполнения безопасного обновления системы.

ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude safe-upgrade

Подобная команда позволит пользователю выполнить полное обновление, но не более того:

ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude full-upgrade

ЗаДокументация по способностям (10.04), safe-upgrade:

Обновляет установленные пакеты до последней версии. Установленные пакеты не будут удалены, если они не используются

В отличие, full-upgrade:

Обновляет установленные пакеты до последней версии, удаляя или устанавливая пакеты по мере необходимости. Эта команда менее консервативна, чем safe-upgrade, и поэтому с большей вероятностью выполнит нежелательные действия. Однако она способна обновлять пакеты, которые safe-upgrade обновить не может.

Используйте свое лучшее суждение, для которого пользователю следует разрешить запуск. Если вы не уверены, используйте первое правило, которое разрешает только safe-upgrade.

Обратите внимание, что если вы хотите разрешить пользователю устанавливать пакеты (что значительно снижает любые преимущества для безопасности, но гипотетически), вам необходимо включить *после aptitudeкоманды, т. е.

ricardo ALL=(root) /usr/bin/aptitude update, /usr/bin/aptitude safe-upgrade, /usr/bin/aptitude install *

В противном случае вы получите сообщение об ошибке, что пользователю ricardoне разрешено выполнять команду /usr/bin/aptitude install <package_name>.

решение2

Вы можете использовать, sudo -lчтобы увидеть, какие команды разрешено запускать пользователю. Например, чтобы увидеть, какие команды может запускать ricardo:

sudo -ll -U ricardo

чтобы увидеть, сможет ли он управлять способностями,

sudo -ll -U ricardo /usr/bin/aptitude

это либо выведет имя команды, расширенное sudo, либо завершит работу с кодом 1, если пользователю не разрешено использовать команду.

Это должно работать в любой новой системе на базе Debian, которую вы можете протестировать; синтаксис не является специфичным для Ubuntu.

источник:человек судо

решение3

Я на самом деле ничего не вижу.неправильныйс этой строкой sudoers. К сожалению, я не так уж много возился с sudoнастройками конфигурации, так что в этом случае мой совет может оказаться ненадежным. К счастью, то, что яможетсделать, так это дать вам строку, которая, как я знаю, безопасна:

ricardo ALL=/usr/bin/aptitude

Эта строка гарантированно позволит ricardo выполняться aptitudeкак root, только если ricardo не является членом группы с поддержкой sudo, например sudoили admin.

Источник:8 способов настройки и конфигурирования Sudo в Ubuntu - How-to Geek.

Связанный контент