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?


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.


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)

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 .


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.

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 .


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.

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.