Игнорировать sudo в скрипте bash при использовании root

Этот вопрос не дублирует 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

1
задан 19 July 2017 в 07:16

2 ответа

В ваших сценариях, в начале, определите sudo как функцию, которая при необходимости вызовет фактический sudo:

sudo () { [[ $EUID = 0 ]] || set -- command sudo "$@" "$@" }

command sudo foo bar сообщает bash использовать фактический sudo вместо функций или псевдонимов. $EUID - это эффективный идентификатор пользователя, который может отличаться от $UID.

1
ответ дан 18 July 2018 в 10:04

В ваших сценариях, в начале, определите sudo как функцию, которая при необходимости вызовет фактический sudo:

sudo () { [[ $EUID = 0 ]] || set -- command sudo "$@" "$@" }

command sudo foo bar сообщает bash использовать фактический sudo вместо функций или псевдонимов. $EUID - это эффективный идентификатор пользователя, который может отличаться от $UID.

1
ответ дан 24 July 2018 в 19:30

Другие вопросы по тегам:

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