pengguna tidak ada di / etc / passwd ketika mencoba mengubah shell default

22

Saya ingin mengubah shell default saya dari tcsh ke bash. Jadi saya mencoba dan inilah yang terjadi:

>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

Memang, saya tidak di / etc / passwd. Saya tidak tahu kenapa.

Apa yang dapat saya?

rmp251
sumber
11
Apakah sistem Anda menggunakan otentikasi terdistribusi (mis. Kerberos / winbind)? Dalam hal itu detail pengguna Anda tidak akan muncul di file lokal / etc / passwd (tetapi harus terlihat menggunakan getent passwd <userid>). Saya pikir apakah menjalankan chshdidukung dalam kasus itu mungkin tergantung pada pengaturan di/etc/pam.d/
steeldriver

Jawaban:

15

Komputer saya adalah bagian dari jaringan yang menggunakan otentikasi terdistribusi sehingga rincian pengguna saya tidak akan muncul di file lokal / etc / passwd (tetapi terlihat menggunakan getent passwd userid). (terima kasih @steeldriver) Dalam kasus saya, saya harus melakukan chsh pada mesin inti.

rmp251
sumber
11
dapatkah Anda menjelaskan apa itu "mesin inti"?
Nerrve
Dalam kasus saya, saya merujuk pada satu set mesin khusus yang disediakan oleh universitas di dalam jaringan mereka yang dapat diakses dan digunakan siswa (dibagikan). Berbeda dengan mesin saya sendiri di kantor saya.
rmp251
4
@ rmp251 Ini persis skenario saya. Saya tidak memiliki akses ke mesin inti. Apakah Anda menemukan cara untuk mengganti shell sebaliknya?
Geek
@ Geek apakah Anda menemukan cara bagaimana menyelesaikannya?
milushov
13

Ada solusi untuk gnome-terminal:

  1. Pergi ke Edit -> Preferensi profil -> Judul dan Perintah
  2. Centang Jalankan perintah khusus alih-alih shell saya
  3. Berikan bashsebagai perintah Kustom (atau fish, atau apa pun)
MrMeszaros
sumber
Terima kasih! Memberi perintah untuk segera dijalankan ketika saya membuka terminal saya (atau tab terminal baru) melalui pengaturan bekerja untuk saya.
cacoder
Ini juga berfungsi untuk Konsole dan yakuake di KDE.
xgdgsc
6

Jika Anda menggunakan otentikasi LDAP oleh PAM atau sesuatu, Anda harus menemukan jawaban Anda di Server LDAP Anda. Mari kita arahkan untuk Microsoft AD, dalam hal ini akun domain Anda tidak dalam /etc/passwdketika Anda masuk, tetapi Anda dapat melihat properti pengguna Anda dalam AD, dengan getent passwd | grep user.

Jika pada akhirnya ia menunjukkan shell Anda /bin/csh, itu karena di AD Anda ada atribut untuk itu. Jadi, jika Anda memiliki akun administrator pada AD, Anda dapat memperbaikinya sendiri. Jika tidak, beri tahu admin AD Anda untuk mengaktifkan fitur-fitur canggih di tab Lihat pengguna direktori aktif dan komputer> Properti pengguna> atribut UNIX . Di sana Anda dapat mengubah shell login /bin/bash.

Pastikan Anda tidak lupa menjalankan:

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

Sumber: Pengguna tidak ada di / etc / passwd ketika mencoba mengubah shell default .

Masoud
sumber
1
Pertanyaannya adalah untuk mengganti shell untuk satu pengguna, sedangkan pbis mengkonfigurasi perubahan untuk semua pengguna.
kubanczyk
5

Jika Anda ingin mengganti shell untuk pengguna Anda, Anda tidak perlu menjadi root. Ketik saja:

chsh

tanpa sudodan tanpa argumen.


Lihat juga man chsh:

Perintah chsh mengubah shell login pengguna. Ini menentukan nama
dari perintah login awal pengguna. Pengguna normal hanya dapat mengubah
shell login untuk akunnya sendiri ; superuser dapat mengubah login
shell untuk akun apa pun.
Andrea Corbellini
sumber
Alasan saya menggunakan sudo adalah karena tidak melakukan apa-apa tanpanya. > whoami userid > chsh You may not change the shell for 'userid'.
rmp251
Alasan kerjanya adalah chsh tidak bekerja dengan kerberos
Lennart Rolland
2

Jika Anda lupa nama pengguna Anda, Anda dapat menggunakan whoamiperintah untuk mengingat Anda.

Jadi, coba dengan:

sudo chsh $(whoami)

Jika memang, tidak ada garis yang dimulai dengan nama pengguna Anda di /etc/passwdfile (yang tampaknya tidak bisa dijelaskan), Anda dapat menambahkan yang baru seperti ini:

nama pengguna : x: 1000: 1000: nama asli Anda ,,,: / home / nama pengguna : / bin / bash

Lihat juga: Memahami / etc / passwd Format File .

Radu Rădeanu
sumber
1
Salah satu alasan pengguna Anda mungkin tidak ada di / etc / passwd adalah jika otentikasi tidak ditangani pada mesin itu (misalnya ldap)
MatrixManAtYrService
1

Jika Anda mencoba ssh menjadi host jarak jauh dengan pengguna domain, Anda mungkin tidak dapat mengubah shell menggunakan chshseperti yang disebutkan @Masoud. Tapi di sini ada solusi sederhana untuk kasus ini - setiap kali Anda masuk ke mesin, lakukan ini:

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

atau

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

Jika Anda juga ingin masuk langsung ke direktori kerja yang berbeda.

dux2
sumber