В сценарии запуска, который настраивает машину, я хочу запустить
chsh -s /bin/zsh
Тем не менее, это запрашивает пароль пользователя. Как передать пароль в качестве параметра? Или, если у меня есть сила sudo, могу ли я как-то обойти этот шаг? Или, альтернативно, есть ли другой способ изменить оболочку запуска по умолчанию?
chsh фактически изменяет строку, относящуюся к пользователю, в / etc / passwd, хотя пользователь может изменить только свою собственную «строку» в / etc / passwd. Следовательно, если вы хотите изменить оболочку для другого пользователя, вам нужен его / ее пароль.
Если вы действительно хотите это сделать (учитывая проблемы в посте Лоренцо и возможные проблемы безопасности), вот как это можно сделать:
Это требует привилегий root.
Допустим, вы сейчас работаете как «Алиса» и хотите изменить оболочку «bob» без пароля;
Добавить в файл:
Это гарантирует, что «Алиса» может работать на всех хостах как пользователи в группе SH без пароля группы команд в SHELL.
Вероятно, немного надуманным, чтобы сделать это таким образом, но это возможно.
Обязательно прочитайте «man sudoers» перед тем, как заменить файл sudores на «visudo», особенно сообщения, связанные с безопасностью!
источник
sudo
в том, что систему очень легко обойти и получить root права. Лучше никогда не менять,sudoers
если нет особой потребности, которая не может быть удовлетворена каким-либо другим способом (исполняемый файл setuid / setgid, права доступа группы и т. Д.).Вам необходимо передать имя пользователя; Выполнение этого через
sudo
(или через root) позволит вам установить пароль / оболочку пользователя без запроса старого пароля. Пожалуйста, проверьтеman chsh
для получения дополнительной информации.Теперь мой вопрос: зачем вам это делать? Если это установочный скрипт, разве вы не должны просто изменять пользовательскую оболочку во время создания (т.е. при запуске
adduser
)? Если вы клонируете систему удаленно, не стоит ли/etc/passwd
сначала изменить ее ? Я не вижу причин делать это с помощью сценария, если вы не автоматизировали весь процесс установки, а выбор оболочек для установки происходит после создания первого пользователя.источник
#!/usr/bin/sudo -s
(строка Шебанга). Кроме того, вы уверены, что zsh находится в / bin, а не, возможно, в / usr / bin? (просто проверяю, я не знаком с ec2)sudo
разрешение. Смотрите мой для другого подхода, который не требуетсяsudo
для среднего пользователя.Я считаю, что вы можете изменить оболочку пользователя в
/etc/password
файле, возможно, с помощьюpasswd
команды. Я еще не прочитал это, но это может быть полезно: различия оболочки UNIX и как изменить вашу оболочку .источник
chsh
илиusermod
. Никогда не редактируйтеpasswd
файл напрямую, всегда используйтеvipw
команду для этого.Попробуйте
sudo chsh -s /bin/zsh
, тогда:echo $SHELL
- в успешном случае это изменилось :)источник