Назад | Перейти на главную страницу

Автоматическое переключение пользователя в скрипте

Мне нужно написать сценарий на ubuntu, а для некоторых команд требуются права root. Сценарий полон обычных команд Linux. Можно ли написать сценарий переключения пользователя (su), который автоматизирует запрос пароля без вмешательства пользователя? Нужна помощь...

Я забыл сказать вам, что меня попросили отключить доступ sudo для всех пользователей, и я сделал это. Альтернативный вариант?

Спасибо!

Как вы сказали, вы не можете использовать sudo, вы можете подумать иначе. Можете ли вы запустить сценарий от имени пользователя root и su пользователю с меньшими правами доступа к частям, которые не нужно запускать с правами root?

Как уже было сказано, sudo - это именно то, что вам нужно, и лучшее решение (вы знаете, что вы можете ограничить доступ sudo для каждой команды отдельно?)

Попробуйте 'bash -p', если -p не указан, тогда bash сохранит исходный uid / gid, даже если suid.

вы должны использовать sudo. В файле /etc/sudoers вы можете настроить команды, которые должны запускаться с привилегиями root, а также указать, нужен ли пароль.

Посмотри на судо. С его помощью вы можете запускать определенные команды с привилегиями root с требованием ввода пароля или без него.

Он уже должен быть установлен в вашей системе Ubuntu.

РЕДАКТИРОВАТЬ

Sudo был разработан, чтобы делать именно то, что вы хотите, безопасным, контролируемым и контролируемым образом. Самый безопасный вариант - разрешить пользователям запускать скрипт через sudo. Это не позволяет пользователям получить доступ к отдельным командам.

Должно последовать обсуждение с политиками.

Редактировать 2

Вы должны предоставить пользователю разрешение на запуск определенной оболочки через sudo, прежде чем они смогут успешно запустить sudo -s. Простое предоставление пользователю разрешения на запуск вашего скрипта не дает разрешения на запуск sudo -s.

Подход, который вы описываете, требует, чтобы любой, кто может запустить сценарий, мог прочитать сценарий - и, следовательно, пароль root.

Меня просят отключить доступ к sudo для всех пользователей

! вас попросили отключить подсистему, которая была специально разработана некоторыми очень умными людьми для предоставления ограниченного корневого доступа определенным пользователям, и теперь вам нужно предоставить root-доступ назначенным пользователям с вашим собственным домашним решением (и предложили а очень плохой способ решения проблемы).

Вы можете установить липкий бит в разрешениях файлов - но потребуется очень много времени, чтобы понять последствия этого - и кажется, что ни вы, ни человек, который просил вас отключить sudo, действительно не понимаете модель разрешений Unix .

Почему бы просто не потерять видимость и не дать пользователям пароль root?

Сделайте свою собственную обертку:

/* mywrapper.c */
#include <unistd.h>

extern char **environ;

main() {
    environ=NULL; /* clear environment variables for sanity */
    setuid(0);
    return execl("/usr/local/bin/script.sh", "script.sh", NULL);
}

затем gcc -o mywrapper mywrapper.c ; chown root mywrapper; chmod u+s mywrapper и вы готовы к работе.