Этот вопрос не дублирует Ignore sudo в bash script
Я делаю изображение докера на основе изображения докеры Ubuntu 14.04. Как вы знаете, root является пользователем по умолчанию в докере. Когда я запускал скрипт bash для установки программного обеспечения, получил
sudo: error in /etc/sudo.conf, line 0 while loading plugin `sudoers_policy'
sudo: /usr/lib/sudo/sudoers.so must be owned by uid 0
sudo: fatal error, unable to load plugins
Я попробовал chown root /usr/lib/sudo/sudoers.so, но он не работает.
поведение странно:
ls (everyone can do this)
sudo ls (you can't do this even if you are root)
Поскольку я создаю изображение докера, я не хочу устанавливать некоррелированные пакеты, чтобы сделать root root sudo. Но в некоторых сценариях bash есть группа sudo, поэтому просто заменить sudo на пустую, возможно, не лучший выбор.
Так что мне интересно, есть ли способ игнорировать sudo, когда вы root
В ваших сценариях, в начале, определите sudo как функцию, которая при необходимости вызовет фактический sudo:
sudo ()
{
[[ $EUID = 0 ]] || set -- command sudo "$@"
"$@"
}
command sudo foo bar сообщает bash использовать фактический sudo вместо функций или псевдонимов. $EUID - это эффективный идентификатор пользователя, который может отличаться от $UID.
В ваших сценариях, в начале, определите sudo как функцию, которая при необходимости вызовет фактический sudo:
sudo ()
{
[[ $EUID = 0 ]] || set -- command sudo "$@"
"$@"
}
command sudo foo bar сообщает bash использовать фактический sudo вместо функций или псевдонимов. $EUID - это эффективный идентификатор пользователя, который может отличаться от $UID.