Ganti shell default saat pengguna tidak di / etc / passwd


8

Ada ide tentang bagaimana saya bisa mengganti shell menjadi ikan?

$ 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

Pertanyaan terkait: pengguna tidak ada di / etc / passwd ketika mencoba mengubah shell default. Sepertinya ia menggunakan 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

Jadi saya menginstal paket yang relevan 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

Apakah itu mungkin?
George Udosen

@ George silakan periksa edit.
Abhishek Bhatia


@ George ini tidak berhasil.
Abhishek Bhatia

Shell jalan harus dalam /etc/shellsuntuk chsh-seperti alat untuk menerimanya.
muru

Jawaban:



1

Tunggu, ini adalah pengguna LDAP, ada pengaturan di LDAP yang memungkinkan Anda untuk mengubah shell default untuk pengguna di dalamnya.

Anda dapat menginstal ldap-akun-manajer yang memberi Anda webfrontent untuk konfigurasi ldap.

apt install ldap-account-manager

masukkan deskripsi gambar di sini

Ini dapat dilakukan pada server mana pun yang Anda inginkan untuk menangani konfigurasi. Karena Anda perlu mengkonfigurasi server dalam file konfigurasi. Tetapi saya akan merekomendasikan Anda menginstalnya di server yang memiliki ldap benar-benar berjalan, supaya Anda dapat mengingatnya lebih mudah.


-1

Mengutip ajmitch di sini ,

Anda dapat mengatur ikan sebagai shell default Anda dengan menjalankan chsh -s which fish Kemudian logout dan kembali. (Untuk mengaturnya kembali ke bash, Anda perlu menggunakan sintaksis Ikan tentu saja, seperti ini chsh -s (yang bash))

Cukup gunakan chsh -s which fishDan pastikan untuk keluar dan masuk kembali atau nyalakan kembali komputer Anda.

Ngomong-ngomong, ini bisa menjadi duplikat yang mungkin di sini: Bagaimana cara menetapkan ikan sebagai shell default?


Hmm..chsh hanya berfungsi jika pengguna di / etc / passwd. $ chsh -s `which fish` Password: chsh: user 'jaan' does not exist in /etc/passwd
Abhishek Bhatia

Ah ... ya ... Saya tidak melihat bagian itu ...
Maks

1
Itu tidak berfungsi ketika akun dikelola oleh LDAP. -1
David Foerster
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.