Jak zmienić domyślną powłokę na koncie domeny

13

Używam konta domeny samba4, aby zalogować się na moim laptopie. Chciałem wypróbować zsh, ale ponieważ mój użytkownik nie mieszka w /etc/passwdmoim kraju, chshnie mogę znaleźć tego użytkownika. Czy ktoś może doradzić, jak mogę zmienić moje login_shell?

Nie widziałem niczego w moim ldap.conf, nssswitch.confani nic /etc/pam.d, że pomógł ...

Patrząc na kontroler domeny, pomyślałem, że mógłbym użyć narzędzia samba, ale nic nie widziałem w pomocy, co wskazywałoby mi właściwy kierunek ...

Brzęczy
źródło

Odpowiedzi:

24

Zapytałem o to na kanale #suse na Freenode, a Miuku zasugerował to samo co Arul, jednak wspomniał o dwóch rzeczach, gdybym używał domeny Windows, mógłbym ustawić atrybut loginShell.

Niestety jestem na domenie samby, więc to nie pomogło. Ale jego ostatnia sugestia była idealna, uzyskaj wynik:

getent passwd USERNAME

Będzie to mieć prawidłowy wpis dla twojego użytkownika w / etc / passwd, weź to, wklej go do / etc / passwd i zaktualizuj powłokę na końcu dla prawidłowej ścieżki powłoki, której chcesz użyć. W ten sposób nie zmieni się to dla wszystkich użytkowników i możesz upewnić się, że powłoka znajduje się na komputerze, na którym ją konfigurujesz, przed dokonaniem zmiany.

Brzęczy
źródło
Jeśli nie chcesz kopiować i wklejać, można użyć: getent passwd `id -un` | sudo tee -a /etc/passwd. Nie jestem pewien, czy to działa we wszystkich powłokach, ale przynajmniej bash i tcsh są w porządku.
Tom Saleeba
Robienie tego na urządzeniu RHEL 7 podłączonym do domeny Windows AD spowodowało, że zostałem zablokowany na serwerze, dopóki linia nie została usunięta z pliku / etc / passwd ...
Taegost
Dzięki za informację @Taegost, nie próbowałem na RHEL
Rumbles
5

Miałem dokładnie ten sam problem. Ponieważ nie wszystkie komputery w mojej domenie mają zainstalowane Zsh, a ponieważ nie chciałem wpływać na wszystkich użytkowników, w końcu wprowadziłem mój .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

Może to być nieeleganckie, ale przynajmniej wykonuje zadanie.

Matteo Giani
źródło
Ktoś w mojej pracy ostatnio robił coś podobnego, miał problemy z tym, że jego metoda nie ładowała pliku .zshrc. Nie wiem, czy Twoja metoda zadziałałaby pod tym względem, czy wypróbowałeś ją? Również twoja zmienna SHELL nie jest taka sama jak ścieżka do twojego bin zsh, prawda? Zmieniłem ich config na moją metodę ustawiania go w pliku passwd
Rumbles
Ciekawe - mój plik .zshrc został poprawnie odczytany. co do twojego drugiego punktu, dziękuję za podsumowanie, to był błąd z mojej strony. Zobacz tutaj odpowiedź: unix.stackexchange.com/questions/330233/…
Matteo Giani
Cóż, to zdecydowanie jeden ze sposobów na zrobienie tego, nadal wolę ustawić go w pliku / etc / passwd, jak w mojej zaakceptowanej odpowiedzi, ponieważ nie wywołujesz bash, a następnie ładujesz zsh z bash (plus myślę, że jeśli naciśniesz ctrl-D w Twoja konfiguracja została przeniesiona do powłoki bash?) - Wymaga to, aby użytkownik upewnił się, że masz zainstalowany program zsh i aby administrator dokonał zmiany
Rumbles
Czy nie byłoby lepiej /usr/bin/zshzamiast używać procesu exec /usr/bin/zshzastępowania bashprocesu zshpowłoki procesem powłoki?
Tripp Kinetics
Myślę, że masz rację @TrippKinetics.
Matteo Giani
2

Jeśli masz dostęp do edycji konfiguracji kontrolera domeny samba, możesz ustawić następującą właściwość, która pozwala ustawić powłokę w pliku smb.conf

template shell    = /bin/zsh

Nie jestem pewien, co się stanie, jeśli zalogujesz się na maszynie, która nie ma zainstalowanego zsh (nie wszystkie dystrybucje mają domyślnie zainstalowane zsh), ale domyślam się, że wywoła domyślną powłokę dystrybucji.

Jeśli chcesz po prostu spróbować, po prostu wpisz zsh, aby uzyskać podpowłokę, którą jestem pewien, że już to wiesz.

Arul Selvan
źródło
Dzięki, ale czy to nie wpłynie na wszystkich użytkowników, nie tylko moich?
Rumbles
Tak, jest to parametr globalny, który wpływa na wszystkich użytkowników. W takim przypadku wszyscy użytkownicy, którzy zshzainstalowali. Nie jestem pewien, czy możesz ograniczyć to do konkretnego użytkownika, ale sprawdziłbym idmap uidparametr, który może ci na to pozwolić.
Arul Selvan
Dzięki, ale nie o to mi chodzi. Nie chcę zmieniać wszystkich powłok, chcę tylko zmienić swoje powłoki. Próbowałem zmienić to ustawienie w moim lokalnym pliku smb.conf i po ponownym uruchomieniu nie przyniosło to żadnego efektu
Rumbles