Cambia shell predefinita quando l'utente non è in / etc / passwd


8

Qualche idea su come posso cambiare il guscio in pesce?

$ sudo usermod -s /usr/bin/fish jaan
usermod: user 'jaan' does not exist in /etc/passwd
$ getent passwd $USER
jaan:x:15466:94:Jaan Altosaar:/home/jaan:/bin/zsh

Domande correlate: l' utente non esiste in / etc / passwd quando tenta di cambiare la shell predefinita Sembra che usi ldap.

$ cat /etc/nsswitch.conf
passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

# Having the NOTFOUND=return bit was breaking dns resolution on web1 and web2. But we probably
# don't want any of the mdns stuff so let's get rid of it all.
#hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
hosts:          files dns

networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       ldap
automount:      ldap

Quindi ho installato il pacchetto pertinente ldap.

$ chsh.ldap
LDAP password for jaan:
Enter the new value, or press ENTER for the default
  Login Shell [/bin/zsh]: /usr/bin/fish
Traceback (most recent call last):
  File "/usr/bin/chsh.ldap", line 69, in <module>
    constants.NSLCD_USERMOD_SHELL: shell,
  File "/usr/share/nslcd-utils/nslcd.py", line 128, in usermod
    assert con.get_response() == constants.NSLCD_RESULT_BEGIN
  File "/usr/share/nslcd-utils/nslcd.py", line 103, in get_response
    return self.read_int32()
  File "/usr/share/nslcd-utils/nslcd.py", line 71, in read_int32
    return _int32.unpack(self.read(_int32.size))[0]
struct.error: unpack requires a string argument of length 4
$ which fish
/usr/bin/fish
$ chsh.ldap
LDAP password for jaan:
Enter the new value, or press ENTER for the default
  Login Shell [/bin/zsh]: "/usr/bin/fish"
/usr/bin/chsh.ldap: "/usr/bin/fish" is an invalid shell
$ /usr/bin/fish
(standard_in) 1: syntax error
Welcome to fish, the friendly interactive shell

È anche possibile?
George Udosen,

@George, controlla modifica.
Abhishek Bhatia,


@George questo non funziona.
Abhishek Bhatia,

Il percorso guscio deve essere in /etc/shellsper chsh-come strumenti ad accettarlo.
Muru,

Risposte:



1

Aspetta, è un utente LDAP, c'è un'impostazione in LDAP che ti consente di cambiare la shell predefinita per l'utente in essa.

Puoi installare ldap-account-manager che ti dà un webfrontent per la configurazione di ldap.

apt install ldap-account-manager

inserisci qui la descrizione dell'immagine

Questo può essere fatto su qualsiasi server su cui si desidera gestire la configurazione. Dal momento che sarà comunque necessario configurare il server nei file di configurazione. Ma ti consiglio di installarlo sul server che ha effettivamente ldap in esecuzione, solo per ricordartelo più facilmente.


-1

Per citare ajmitch qui ,

È possibile impostare fish come shell predefinita eseguendo chsh -s which fish Quindi disconnettersi e riconnettersi. (Per ripristinarlo su bash, è necessario utilizzare la sintassi Fish, ovviamente come questo chsh -s (che bash))

Basta usare chsh -s which fishe assicurarsi di disconnettersi e riconnettersi o riavviare il computer.

A proposito, questo potrebbe essere un possibile duplicato qui: come posso impostare il pesce come shell predefinita?


Hmm..chsh funziona solo se l'utente in / etc / passwd. $ chsh -s `which fish` Password: chsh: user 'jaan' does not exist in /etc/passwd
Abhishek Bhatia,

Ah ... sì ... non ho visto quella parte ...
Max

1
Ciò non funziona quando gli account sono gestiti da LDAP. -1
David Foerster,
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.