Изменение пользователя unix в скрипте оболочки

Я хочу изменить текущего пользователя в сценарии оболочки, чтобы дать ему возможность выполнять команды от имени администратора, передавая логин и пароль в качестве аргументов.

Я хочу иметь возможность сделать что-то вроде:

sh ./script.sh login password

А внутри скрипта что-то вроде:

sudo $1 $2 etc...

Однако я не могу понять, как четко кодировать это.

Спасибо за любую помощь

2 ответа

Решение

Просто используйте судо

Файл sudoers(5) допускает очень сложные разрешения и спецификации команд. В качестве упрощенного примера, вы можете просто позволить каждому в группе запускать один сценарий от имени пользователя root без пароля. Это намного удобнее в написании сценариев, но при этом позволяет ограничивать доступ. Например:

# /etc/sudoers
%somegroup ALL=(ALL:ALL) NOPASSWD:/path/to/script.sh

Так как скрипт по умолчанию запускается от имени root, в вашем скрипте не нужно прыгать дальше.

Примечание по актуальности

Это несколько актуально для переполнения стека, поскольку оно связано со сценариями. Однако, если у вас есть дополнительные вопросы по настройке файла sudoers, вам, вероятно, следует задать эти вопросы в SuperUser.

У меня ограниченный опыт работы с командой sudo, но я знаю, что вы можете создать свой код с помощью texteditor и использовать команду chmod для изменения разрешений и разных способов доступа людей к вашему коду.

Точнее говоря, получив файл.command, вы можете зайти в эмулятор и набрать chmod. Добавьте после этого пробел, и тогда вы сможете настроить пользователей, которые действительно могут взаимодействовать с кодом. Например, chmod a+rwx означает, что каждый (a) может иметь привилегии Read, Write и Execute (rwx). Существует множество способов использования chmod, и эта веб-страница является хорошим ресурсом для поиска этих способов: http://www.zzee.com/solutions/how-to-use-chmod.shtml

После параметров chmod и user/permissions в конце вы можете добавить путь к файлу своего кода, чтобы сообщить UNIX, какой файл для chmod. После этого вы можете вручную изменить членов административных групп, которые могут запускать код, чтобы обеспечить большую гибкость, как предложил CodeGnome.

Другие вопросы по тегам