В сценарии запуска, который настраивает машину, я хочу запустить
chsh -s /bin/zsh
Однако при этом запрашивается пароль пользователя. Как передать пароль в качестве параметра? Или, если у меня есть sudo power, могу ли я как-то обойти этот шаг? Или, альтернативно, есть другой способ изменить оболочку запуска по умолчанию?
Следующее предотвращает изменение оболочки заблокированных учетных записей и выборочно позволяет людям использовать chsh
сами БЕЗ sudo или su:
Добавьте эту самую вершину /etc/pam.d/chsh
:
# This allows users of group chsh to change their shells without a password.
#
# Per: http://serverfault.com/questions/202468/changing-the-shell-using-chsh-via-the-command-line-in-a-script
#
auth sufficient pam_wheel.so trust group=chsh
Создайте группу chsh:
groupadd chsh
usermod -a -G chsh username
user@host:~$ getent passwd $USER
user:x:1000:1001::/home/user:/bin/bash
user@host:~$ chsh -s `which zsh`
user@host:~$ getent passwd $USER
user:x:1000:1001::/home/user:/usr/bin/zsh
user@host:~$
chsh фактически изменяет строку, относящуюся к пользователю, в / etc / passwd, хотя пользователь может изменить только свою собственную «строку» в / etc / passwd. Следовательно, если вы хотите сменить оболочку для другого пользователя, вам понадобится его пароль.
Если вы действительно хотите это сделать (учитывая проблемы в сообщении Лоренцо и возможные проблемы с безопасностью), вот как это можно сделать:
#visudo
Для этого требуются привилегии root.
Допустим, вы в настоящее время работаете как «alice» и хотите изменить оболочку «bob» без пароля;
Добавьте в файл:
Cmnd_Alias SHELL = /usr/bin/chsh
Runas_Alias SH = Bob
alice ALL = (SH) NOPASSWD: SHELL
Это гарантирует, что «Алиса» может работать на всех хостах в качестве пользователей в группе SH без пароля, группа команд в SHELL.
Наверное, это будет немного надуманным, но это возможно.
Обязательно прочтите "man sudoers" перед заменой файла Sudores на "visudo", особенно сообщения, относящиеся к безопасности!
Вам необходимо передать имя пользователя; делая это через sudo
(или root) позволит вам установить пароль / оболочку пользователя без запроса старого пароля. пожалуйста, проверьте man chsh
для дополнительной информации.
Теперь мой вопрос: зачем вам это нужно? Если это сценарий настройки, не следует ли вам просто изменить оболочку пользователя во время создания (т.е. при запуске adduser
)? Если вы клонируете систему удаленно, не следует ли вам изменять ее в /etc/passwd
первый? Я не вижу причин делать это через скрипт, если вы не автоматизировали весь процесс установки и выбор оболочек для установки не происходит после создания первого пользователя.
Я считаю, что вы можете изменить оболочку пользователя в /etc/password
файл, возможно, используя passwd
команда. Я еще не читал, но это может быть полезно: Различия в оболочке UNIX и как изменить оболочку.
Пытаться sudo chsh -s /bin/zsh
, затем:
echo $SHELL
- в удачном случае поменяли :)