Кто может 'запускать' с помощью sudo, определяется в файле конфигурации /etc/sudoers
. Эта утилита чрезвычайно настраиваема, поэтому я могу немного упростить ее. Man-страница sudoers охватывает это исчерпывающе.
При вызове sudo
проверяет правила для вызывающего пользователя. В вашем примере это означает, что правила для пользователя borea оцениваются первыми, а не те, если они есть, для пользователя marvin.
Сообщение об ошибке от вызова определенно не помогает прояснить этот момент.
Типичная запись с полной привилегией sudo в sudoers выглядит следующим образом:
borea ALL = (ALL) ALL
Это то же утверждение с контекстом о том, что означает каждый элемент:
Who: borea
On hosts: ALL
Can run as users: (ALL)
The commands: ALL
Ключевая запись в контексте вашего вопроса - третья. Если для этого параметра не установлено значение «ВСЕ», для него задан список пользователей, который не включает marvin, вызов не будет выполнен.
Вот более сложный пример со страницы руководства:
alan ALL = (root, bin : operator, system) ALL
Этот параметр переводится в:
Пользователь alan может выполнить любую команду как пользователь root или bin, опционально установив для группы оператор или систему.
Таким образом, разница между поведением в этих двух системах связана не с учетной записью Marvin, а с вашей учетной записью. Моя лучшая догадка о причине - настройка «запустить как», но есть и другие настройки, которые могут помешать этому в том же файле конфигурации, как глобально, так и другими тонкими способами (например, членство в группах).
Другие вещи, чтобы смотреть на:
Судя по вашим отзывам, проблема не в файле sudoers, который напрямую сконфигурирован для пользователя borea. Вот прачечный список точек данных для сбора и вещей, которые нужно попробовать. Обновите свой вопрос с результатами (особенно любые различия, замеченные между этими двумя машинами).
1. Эта команда суммирует ваши привилегии и ограничения, связанные с 'sudo', проверьте, есть ли разница между двумя компьютерами:
sudo -l -U borea
2. Повторите то же самое для пользователя marvin. Определенно не обязательно, чтобы Марвин был в sudoers, чтобы sudo -u
работал, но это хорошая точка данных. Возможно, что Марвин унаследовал некоторые настройки по членству в группе и т.д.
sudo -l -U marvin
3. На обеих машинах проверьте состояние учетной записи marvin на наличие различий. finger
может быть не установлен по умолчанию; в этом случае сначала используйте sudo apt-get install finger
.
sudo finger -l marvin
sudo passwd --status marvin
id marvin
4. Попробуйте открыть оболочку, используя учетную запись marvin . su
использует другой метод для повышения привилегий:
sudo su marvin
5. Предполагая, что учетная запись root включена для доступа к оболочке (я думаю, по умолчанию Ubuntu все еще отключает это), попробуйте это:
sudo -s
sudo -u marvin scriptname
6. Подтвердите права доступа к /etc /sudoers:
ls -alt /etc/sudoers
Результат должен начинаться с -r--r----- 1 root root ...
Если это не так, исправьте это с помощью:
sudo chmod 440 /etc/sudoers
sudo chown root:root /etc/sudoers
7. Попробуйте скопировать файл sudoers с компьютера, если все работает правильно, на компьютер, где его нет. Делайте это очень осторожно - сохраните оригиналы в безопасном месте. Было бы легко потерять след, какой файл какой ...
8. Последнее - проверьте, есть ли у вас файл /etc/sudo.conf на одной или обеих машинах. Создайте копию обоих файлов, если это так, и перенесите их на один компьютер. бежать
diff sudo.conf.machine1 sudo.conf.machine2
искать различия в конфигурации. Сделайте то же самое с файлом /etc /sudoers (используя diff), чтобы найти все дельты.