Как изменить оболочку по умолчанию для учетной записи домена

13

Я использую учетную запись домена samba4 для входа на свой ноутбук. Я хотел попробовать zsh, но так как мой пользователь не проживает в, /etc/passwdя обнаружил, что chshне могу найти моего пользователя. Может кто-нибудь посоветовать, как я могу изменить свой login_shell?

Я ничего не видел в моем ldap.conf, nssswitch.confили что-то в /etc/pam.dэтом помогло ...

Глядя на контроллер домена, я подумал, что, возможно, смогу использовать samba-tool, но я ничего не увидел в справке, которая указала бы мне правильное направление ...

громыхает
источник

Ответы:

24

Я спросил об этом в канале #suse на Freenode, и Миуку предложил то же самое, что и Арул, однако он упомянул две вещи: если бы я использовал домен Windows, я мог бы установить атрибут loginShell.

К сожалению, я нахожусь в домене самбы, так что это не помогло. Но его последнее предложение было идеальным, получи вывод:

getent passwd USERNAME

Это будет иметь действительный эквивалент записи для вашего пользователя в / etc / passwd, возьмите его, вставьте в / etc / passwd и в конце обновите оболочку, указав правильный путь оболочки, которую вы хотите использовать. Таким образом, это не изменит его для всех пользователей, и вы можете убедиться, что оболочка находится на машине, на которой вы ее настраиваете, прежде чем вносить изменения.

громыхает
источник
Если вы не хотите , чтобы скопировать и вставить, вы можете использовать: getent passwd `id -un` | sudo tee -a /etc/passwd. Не уверен, работает ли он во всех оболочках, но по крайней мере bash и tcsh в порядке.
Том Салеба,
Выполнение этого в окне RHEL 7, подключенном к домену Windows AD, привело к тому, что я был заблокирован на сервере до тех пор, пока строка не была удалена из файла / etc / passwd ...
Taegost
Спасибо за информацию @Taegost, я не пробовал на RHEL
Rumbles
5

У меня была точно такая же проблема. Поскольку не на всех машинах в моем домене установлена ​​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

Это может быть не элегантно, но, по крайней мере, это сделает работу.

Маттео Джани
источник
Кто-то на моей работе в последнее время делал нечто подобное, у него были проблемы с его методом, не загружающим файл .zshrc. Я не знаю, будет ли ваш метод работать в этом отношении, вы пробовали это? Кроме того, ваша переменная SHELL не совпадает с путем к вашему zsh bin, это правильно? Я изменил их конфигурацию на мой метод установки его в файле passwd
Rumbles
Интересно - мой .zshrc правильно читается. о вашем втором замечании, спасибо, что уточнили, это была ошибка с моей стороны. Смотрите здесь для ответа: unix.stackexchange.com/questions/330233/…
Маттео Джани
Что ж, это определенно один из способов сделать это, но я все же предпочитаю установить его в файле / etc / passwd, как и в случае с моим принятым ответом, поскольку вы не вызываете bash, а затем загружаете zsh с помощью bash (плюс, я думаю, если вы нажмете Ctrl-D в ваши настройки вы перетащили в оболочку bash?) - Требуется ли от пользователя убедиться, что у вас установлен zsh, и чтобы администратор внес изменения
Rumbles
Не лучше ли использовать /usr/bin/zshвместо exec /usr/bin/zshзамены bashпроцесс zshоболочки на процесс оболочки?
Tripp Kinetics
Я думаю, что вы можете быть правы @TrippKinetics.
Маттео Джани
2

Если у вас есть доступ для редактирования конфигурации контроллера домена samba, вы можете установить следующее свойство, которое позволяет вам установить оболочку в smb.conf

template shell    = /bin/zsh

Не уверен, что произойдет, если вы войдете на компьютер, на котором не установлена ​​zsh (не во всех дистрибутивах установлена ​​zsh по умолчанию), но я предполагаю, что он вызовет оболочку дистрибутива по умолчанию.

Если вы просто хотите попробовать, просто наберите zsh, чтобы получить подоболочку, которую, я уверен, вы уже знаете.

Арул Сельван
источник
Спасибо, но разве это не повлияет на всех пользователей, а не только на моих?
грохочет
Да, это глобальный параметр, который влияет на всех пользователей. В этом случае все пользователи, которые zshустановили. Я не уверен, что вы можете ограничить это для конкретного пользователя, но я бы проверил idmap uidпараметр, который может позволить вам сделать это.
Арул Сельван
Спасибо, но я не об этом. Я не хочу менять все оболочки, я просто хочу изменить свою оболочку. Я попытался изменить этот параметр в моем локальном файле smb.conf, и после перезагрузки он не имел никакого эффекта
Rumbles