l'utente non esiste in / etc / passwd quando tenta di cambiare la shell predefinita


22

Voglio cambiare la mia shell predefinita da tcsh a bash. Quindi ho provato e questo è quello che è successo:

>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

In effetti, non sono in / etc / passwd. Non so perché.

Cosa posso fare?


11
Il tuo sistema utilizza l'autenticazione distribuita (ad esempio kerberos / winbind)? In tal caso i dettagli dell'utente non compariranno nel file / etc / passwd locale (ma dovrebbero essere visibili usando getent passwd <userid>). Penso che se la corsa chshsia supportata in quel caso potrebbe dipendere dalle impostazioni in/etc/pam.d/
steeldriver

Risposte:


15

Il mio computer fa parte di una rete che utilizza l'autenticazione distribuita in modo che i miei dettagli utente non vengano visualizzati nel file / etc / passwd locale (ma sono visibili usando getent passwd userid). (grazie @steeldriver) Nel mio caso ho dovuto fare chsh su una macchina core.


11
puoi spiegare cos'è una "macchina centrale"?
Nerrve,

Nel mio caso mi riferisco a una serie di macchine dedicate fornite dall'università all'interno della loro rete che gli studenti possono accedere e utilizzare (condivisi). A differenza della mia macchina nel mio ufficio.
rmp251,

4
@ rmp251 Questo è esattamente il mio scenario. Non ho accesso alla macchina principale. Hai trovato un modo per cambiare la shell altrimenti?
Geek,

@Geek hai trovato il modo di risolverlo?
milushov,

13

Esiste una soluzione alternativa per gnome-terminal:

  1. Vai a Modifica -> Preferenze profilo -> Titolo e comando
  2. Seleziona Esegui un comando personalizzato anziché la mia shell
  3. Fornisci bashcome comando personalizzato (o fish, o altro)

Grazie! Fornire un comando da eseguire immediatamente quando apro il mio terminale (o nuova scheda terminale) tramite le impostazioni ha funzionato per me.
cacoder

Questo funziona anche per Konsole e yakuake in KDE.
xgdgsc

6

Se si utilizza l'autenticazione LDAP da PAM o qualcosa del genere, è necessario trovare la risposta nel server LDAP. Miriamo a Microsoft AD, nel qual caso il tuo account di dominio non è presente /etc/passwdquando accedi, ma puoi vedere la proprietà dell'utente in AD, per getent passwd | grep user.

Se alla fine mostra che è la tua shell /bin/csh, è perché nel tuo annuncio c'è un attributo per quello. Quindi, se hai un account amministratore su AD, puoi risolverlo da solo. In caso contrario, è sufficiente dire all'amministratore di Active Directory di abilitare le funzionalità avanzate nella scheda Visualizza di Utenti e computer di Active Directory> Proprietà utente> Attributi UNIX . Lì puoi cambiare la shell di login in /bin/bash.

Assicurati di non dimenticare di eseguire:

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

Origine: l' utente non esiste in / etc / passwd quando tenta di cambiare la shell predefinita .


1
La domanda era cambiare la shell per un utente, mentre pbis config cambia per tutti gli utenti.
Kubanczyk,

5

Se si desidera modificare la shell per l'utente, non è necessario diventare root. Basta digitare:

chsh

senza sudoe senza argomenti.


Vedi anche man chsh:

Il comando chsh modifica la shell di accesso dell'utente. Questo determina il nome
del comando di accesso iniziale dell'utente. Un utente normale può modificare solo il
shell di login per il proprio account ; il superutente può modificare il login
shell per qualsiasi account.

Il motivo per cui ho usato sudo è perché non ha fatto nulla senza di essa. > whoami userid > chsh You may not change the shell for 'userid'.
rmp251,

Il motivo per cui funziona è che chsh non funziona con Kerberos
Lennart Rolland,

2

Se hai dimenticato il tuo nome utente, puoi usare il whoamicomando per ricordarti.

Quindi, prova con:

sudo chsh $(whoami)

Se effettivamente, non esiste una riga che inizia con il tuo nome utente nel /etc/passwdfile (che sembra inspiegabile), puoi aggiungerne una nuova in questo modo:

nome utente : x: 1000: 1000: il tuo vero nome ,,,: / home / nome utente : / bin / bash

Vedi anche: Comprensione del formato file / etc / passwd .


1
Uno dei motivi per cui l'utente potrebbe non esistere in / etc / passwd è se l'autenticazione non viene gestita su quella macchina (ad es
Ldap

1

Se stai provando a inviare ssh a un host remoto con un utente di dominio, potresti non essere in grado di cambiare la shell usando chshcome menzionato @Masoud. Ma ecco una semplice soluzione per questo caso: ogni volta che entri nella macchina, fai questo:

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

o

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

Se vuoi anche accedere direttamente a un'altra directory di lavoro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.