
Я хочу разработать правило 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.