Мне нужно написать сценарий на 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
и вы готовы к работе.