Переключение пользователя в скрипте оболочки bash

#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, а не как текст в самом скрипте, поэтому мне нужно переключить пользователя и ввести пароль, не останавливая выполнение скрипта