Я использую учетную запись домена samba4 для входа в систему на моем ноутбуке. Я хотел попробовать zsh
, но поскольку мой пользователь не находится в / etc / passwd
, я обнаружил, что chsh
не может найти моего пользователя. Может ли кто-нибудь посоветовать, как мне изменить мой login_shell
?
Я ничего не вижу в моем ldap.conf
, nssswitch.conf
или что-нибудь в /etc/pam.d
, что помогло ...
Глядя на контроллер домена, я подумал, что, может быть, я смогу использовать samba-tool, но я не увидел ничего в справке, которая указала бы мне в правильном направлении ...
Я спросил об этом в #suse канале на Freenode, и Миуку предложил то же самое, что и Арул, однако он упомянул две вещи, если бы я использовал Windows-домен, я мог бы установить атрибут loginShell.
К сожалению, я нахожусь на samba-домене, так что это не помогло. Но его последнее предложение было идеальным, получите результат:
getent passwd USERNAME
Это будет действительный эквивалент записи для вашего пользователя в /etc/passwd, возьмите это, вставьте его в /etc/passwd и обновите оболочку в конце для действительного пути оболочки, которую вы хотите использовать. Таким образом, это не изменит его для всех пользователей, и вы можете убедиться, что оболочка находится на машине, на которой вы ее настраиваете, прежде чем вносить изменения.
Если у вас есть доступ для редактирования конфигурации контроллера домена samba, вы можете установить следующее свойство, которое позволяет вам установить оболочку в smb.conf
template shell = /bin/zsh
Не уверен, что произойдет, если вы входите в систему на машине, на которой не установлен zsh (не во всех дистрибутивах zsh установлен по умолчанию), но я предполагаю, что он вызовет оболочку дистрибутива по умолчанию.
Если вы просто хотите попробовать, просто введите zsh, чтобы получить подоболочку, о которой, я уверен, вы уже знаете.
У меня была точно такая же проблема. Поскольку не на всех машинах в моем домене установлен zsh, и поскольку я не хотел влиять на всех пользователей, в итоге я вставил свой .bashrc:
if [ -x /usr/bin/zsh ]; then
echo 'starting zsh'
# export SHELL=/bin/zsh #edit: this is probably not what you want, see the comment.
exec /usr/bin/zsh
fi
Это может быть неэлегантно, но, по крайней мере, он выполняет свою работу.