varsayılan kabuğu değiştirmeye çalışırken kullanıcı / etc / passwd içinde mevcut değil


22

Varsayılan kabuğumu tcsh'dan bash'a değiştirmek istiyorum. Ben de denedim ve olan bu:

>sudo chsh userid
Changing the login shell for userid
Enter the new value, or press ENTER for the default
        Login Shell [/xhbin/tcsh]: /bin/bash
chsh: user 'userid' does not exist in /etc/passwd

Gerçekten, / etc / passwd içinde değilim. Neden bilmiyorum.

Ne yapabilirim?


11
Sisteminiz dağıtılmış kimlik doğrulaması kullanıyor mu (örneğin kerberos / winbind)? Bu durumda kullanıcı bilgileriniz yerel / etc / passwd dosyasında görünmeyecektir (ancak kullanımı görünür olmalıdır getent passwd <userid>). Ben koşu olmadığını düşünüyorum chshbu durumda desteklenmektedir ayarlara bağlı olabilir/etc/pam.d/
steeldriver

Yanıtlar:


15

Bilgisayarım, dağıtılmış kimlik doğrulama kullanan bir ağın parçası olduğundan, kullanıcı bilgilerim yerel / etc / passwd dosyasında görünmez (ancak getent passwd userid kullanılarak görünür). (thanks @steeldriver) Benim durumumda bir çekirdek makinede chsh yapmak zorunda kaldım.


11
Çekirdek makinesinin ne olduğunu açıklayabilir misiniz?
Nerrve

Benim durumumda, üniversite tarafından sağlanan ve öğrencilerin giriş yapabileceği ve kullanabileceği (paylaşılan) ağlarının içindeki özel makinelerden bahsediyorum. Ofisimde kendi makinemin aksine.
rmp251

4
@ rmp251 Bu tam olarak benim senaryom. Çekirdek makineye erişimim yok. Aksi takdirde kabuğu değiştirmenin bir yolunu buldun mu?
Geek

@Geek bunu çözmenin yolunu buldunuz mu?
milushov

13

Şunun için bir geçici çözüm var gnome-terminal:

  1. Git Edit -> profil tercihleri -> Başlık ve Komut
  2. Kontrol benim kabuğun yerine çalıştır Özel komut
  3. Sağlayın basholarak özel komutu (veya fish, ya da bir şey)

Teşekkürler! Terminalimi (veya yeni terminal sekmesini) açtığımda, benim için çalıştığım ayarlar aracılığıyla hemen çalıştırılacak bir komut vermek.
kodlayıcı

Bu aynı zamanda KDE'de Konsole ve yakuake için de çalışıyor.
xgdgsc

6

PAM veya LDAP kimlik doğrulaması kullanıyorsanız, cevabınızı LDAP Sunucunuzda bulmanız gerekir. Microsoft AD için hedefleyelim, bu durumda etki alanı hesabınız/etc/passwd oturum açtığınızda girilmez, ancak kullanıcı mülkünüzü AD'de görebilirsiniz getent passwd | grep user.

Sonunda kabuğunuzu gösterirse /bin/csh, bunun nedeni AD’nizde bunun için bir öznitelik bulunmasıdır. Dolayısıyla, AD'de yönetici hesabınız varsa, kendiniz düzeltebilirsiniz. Aksi takdirde, AD yöneticinize yalnızca Active Directory kullanıcılarının ve bilgisayarların> Kullanıcı özellikleri> UNIX özniteliklerinin Görünüm sekmesindeki gelişmiş özellikleri etkinleştirmesini söyleyin . Orada giriş kabuğu değiştirebilir/bin/bash .

Koşmayı unutmadığından emin ol:

sudo /opt/pbis/bin/config LoginShellTemplate /bin/bash

Kaynak: Varsayılan kabuğu değiştirmeye çalışırken kullanıcı / etc / passwd içinde mevcut değil .


1
Soru bir kullanıcı için kabuk değiştirirken, pbis config tüm kullanıcılar için değişiklik yaptı.
kubanczyk

5

Kullanıcınızın kabuğunu değiştirmek istiyorsanız, root olmanıza gerek yoktur. Sadece yaz:

chsh

olmadan sudove kanıtlar olmaksızın.


Ayrıca bakınız man chsh :

Chsh komutu kullanıcı oturum açma kabuğunu değiştirir. Bu isim belirler
kullanıcının ilk giriş komutu. Normal bir kullanıcı yalnızca
kendi hesabı için giriş kabuğu ; Süper kullanıcı girişi değiştirebilir
herhangi bir hesap için kabuk.

Sudo kullanmamın sebebi onsuz hiçbir şey yapmamamdı. > whoami userid > chsh You may not change the shell for 'userid'.
rmp251

İşe yaramasının nedeni, chsh'ın kerberos ile çalışmamasıdır
Lennart Rolland

2

Kullanıcı adınızı unuttuysanız, sizi whoamihatırlamak için komutu kullanabilirsiniz .

Yani, deneyin:

sudo chsh $(whoami)

Gerçekten de, /etc/passwddosyada kullanıcı adınızla başlayan bir satır yoksa (bu anlaşılmaz görünüyor), şöyle bir yenisini ekleyebilirsiniz:

kullanıcı adı : x: 1000: 1000: gerçek adın ,,,: / ana sayfa / kullanıcı adı : / bin / bash

Ayrıca bakınız: / etc / passwd Dosya Formatını Anlamak .


1
Kullanıcınızın / etc / passwd içinde olmamasının bir nedeni, kimlik doğrulaması bu makinede yapılmamasıdır (örn. Ldap)
MatrixManAtYrService

1

Etki alanı kullanıcısı olan uzaktaki bir ana bilgisayara ssh yapmaya çalışıyorsanız, kabuğunuzu chsh@Masoud'un bahsettiği şekilde kullanarak değiştiremeyebilirsiniz . Ancak, bu durum için basit bir geçici çözüm - makineye ne zaman girseniz şunu yapın:

ssh my-host -t "zsh --login"

veya

ssh my-host -t "cd /data/repos; zsh --login"

Ayrıca doğrudan farklı bir çalışma dizinine giriş yapmak istiyorsanız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.