Изменение пользователя 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.