#linux #bash #shell
#linux #bash #оболочка
Вопрос:
Я использую Solaris SunOS 5.10, и мне нужно переключить пользователя при выполнении скрипта оболочки bash, предоставляя su или sudo имя пользователя и пароль. Я попробовал следующую команду
echo -e "mqmn" | sudo -S "command"
Но я не понял, как эта команда узнает пользователя, на которого я хочу переключиться, а также, когда я пытаюсь это сделать, он выдает неправильный пароль
Что действительно хочу сделать, так это переключить пользователя в моем скрипте, а затем запустить другой скрипт после переключения, потому что у первого пользователя нет разрешения на запуск команд mq
Спасибо
Ответ №1:
Вы можете предоставить пользователю разрешение на выполнение определенных команд, не требуя пароля с помощью sudo. Подробности см. man 5 sudoers
.
Вот пример записи sudoers для пользователя с именем пользователя «user10»:
user10 ALL=NOPASSWD: /usr/bin/apt-get update, /usr/bin/apt-get -u upgrade
Это позволит пользователю запускать «/usr/bin/apt-get update» и «/ usr/ bin / apt-get -u upgrade» от имени root, не требуя ввода пароля.
PS Sudo не считывает пароль из STDIN, поэтому передача пароля не будет работать. Он считывает его непосредственно с псевдотерминала.
Существует другое решение, использующее бит set-UID. Трудно обеспечить такую же безопасность, как решение sudo, приведенное выше.
Создайте двоичный файл, который принадлежит пользователю, имеющему достаточные права доступа для правильного запуска программы. Установите бит setuid двоичного файла ( chmod u s program_name
). Затем, когда другой пользователь выполняет этот двоичный файл, он будет запускаться как владелец файла, а не как пользователь, выполняющий его.
Комментарии:
1. да, я знаю, но по причинам безопасности это невозможно сделать
2. Каковы причины безопасности? Выполнение этого по-другому обычно менее безопасно. Например, наличие открытого текстового пароля пользователя в скрипте вообще небезопасно. Я также добавил решение setuid.
3. причина в том, что пользователь, который запускает скрипт, не имеет прав на переключение или запуск чего-либо, и я не смогу изменить его конфигурацию, и когда я переключу пользователя, я прочитаю пароль из файла anther, а не как текст в самом скрипте, поэтому мне нужно переключить пользователя и ввести пароль, не останавливая выполнение скрипта