Bagaimana cara mengubah shell default saya di akun domain

13

Saya menggunakan akun domain samba4 untuk masuk di laptop saya. Saya ingin mencoba zsh, tetapi karena pengguna saya tidak berada di /etc/passwdsaya menemukan bahwa chshtidak dapat menemukan pengguna saya. Adakah yang bisa menyarankan bagaimana saya bisa mengubah saya login_shell?

Saya tidak bisa melihat apa pun di saya ldap.conf, nssswitch.confatau apa pun di /etc/pam.ddalamnya yang membantu ...

Melihat pada pengontrol domain saya pikir mungkin saya bisa menggunakan alat-samba, tapi saya tidak melihat bantuan yang mengarahkan saya ke arah yang benar ...

Gemuruh
sumber

Jawaban:

24

Saya bertanya tentang hal ini di saluran #suse di Freenode, dan Miuku menyarankan hal yang sama dengan Arul, namun, dia menyebutkan dua hal, jika saya menggunakan domain Windows saya bisa mengatur atribut loginShell.

Sayangnya, saya menggunakan domain samba, jadi itu tidak membantu. Tapi saran terakhirnya sempurna, dapatkan hasil:

getent passwd USERNAME

Ini akan memiliki entri yang setara untuk pengguna Anda di / etc / passwd, ambil ini, tempel ke / etc / passwd dan perbarui shell di akhir untuk jalur valid dari shell yang ingin Anda gunakan. Dengan cara ini tidak mengubahnya untuk semua pengguna, dan Anda dapat memastikan bahwa shell ada di mesin Anda mengkonfigurasi ini sebelum membuat perubahan.

Gemuruh
sumber
Jika Anda tidak ingin copy dan paste, Anda dapat menggunakan: getent passwd `id -un` | sudo tee -a /etc/passwd. Tidak yakin apakah itu berfungsi di semua shell tetapi setidaknya bash dan tcsh ok.
Tom Saleeba
Melakukan hal ini pada kotak RHEL 7 yang terhubung ke domain Windows AD menyebabkan saya dikunci dari server sampai garis dihapus dari file / etc / passwd ...
Taegost
Terima kasih atas info @Taegost, saya belum mencoba di RHEL
Rumbles
5

Saya memiliki masalah yang persis sama. Karena tidak semua mesin di domain saya memiliki zsh yang diinstal, dan karena saya tidak ingin mempengaruhi semua pengguna, saya akhirnya memasukkan .bashrc saya:

if [ -x /usr/bin/zsh ]; then
  echo 'starting zsh'
  # export SHELL=/bin/zsh #edit: this is probably not what you want, see the comment.
  exec /usr/bin/zsh
fi

Ini mungkin tidak tepat, tapi setidaknya itu menyelesaikan pekerjaan.

Matteo Giani
sumber
Seseorang di tempat kerja saya melakukan sesuatu yang serupa baru-baru ini, ia memiliki masalah dengan metodenya yang tidak memuat file .zshrc. Saya tidak tahu apakah metode Anda akan berhasil dalam hal itu, sudahkah Anda mencobanya? Juga, variabel SHELL Anda tidak sama dengan path ke zsh bin Anda, apakah itu benar? Saya mengubah konfigurasi mereka ke metode pengaturannya di file passwd
Rumbles
Menarik - .zshrc saya dibaca dengan benar. tentang poin kedua Anda, terima kasih sudah menyiapkannya, itu adalah kesalahan dari pihak saya. Lihat di sini untuk jawabannya: unix.stackexchange.com/questions/330233/...
Matteo Giani
Yah itu pasti salah satu cara untuk melakukannya, saya masih lebih suka untuk mengaturnya di file / etc / passwd seperti dengan jawaban saya yang diterima karena Anda tidak memanggil bash kemudian memuat zsh dengan bash (ditambah saya kira jika Anda menekan ctrl-D di setup Anda, Anda dijatuhkan ke bash shell?) - Itu memang mengharuskan pengguna untuk memastikan Anda telah menginstal zsh dan bagi admin untuk melakukan perubahan
Rumbles
Bukankah lebih baik, daripada menggunakan /usr/bin/zsh, daripada menggunakan exec /usr/bin/zshuntuk mengganti bashproses shell dengan zshproses shell?
Tripp Kinetics
Saya pikir Anda mungkin benar @ TrippKinetics.
Matteo Giani
2

Jika Anda memiliki akses untuk mengedit konfigurasi pengontrol domain samba, Anda dapat mengatur properti berikut yang memungkinkan Anda untuk mengatur shell di smb.conf

template shell    = /bin/zsh

Tidak yakin apa yang terjadi jika Anda masuk ke mesin yang tidak menginstal zsh (tidak semua distro memiliki zsh terinstal secara default), tetapi tebakan saya adalah ia akan menjalankan shell default distro.

Jika Anda hanya ingin mencobanya, cukup ketik zsh untuk mendapatkan subshell yang saya yakin Anda sudah tahu itu.

Arul Selvan
sumber
Terima kasih, tetapi bukankah itu memengaruhi semua pengguna, bukan hanya milikku?
Rumbles
Ya, ini adalah parameter global yang memengaruhi semua pengguna. Dalam hal ini, semua pengguna yang telah zshmenginstal. Saya tidak yakin Anda dapat membatasi ini untuk pengguna tertentu tetapi saya akan memeriksa idmap uidparameter yang memungkinkan Anda untuk melakukan itu.
Arul Selvan
Terima kasih, tapi bukan itu yang saya kejar. Saya tidak ingin mengganti shell semua orang, saya hanya ingin mengganti shell saya. Saya mencoba mengubah pengaturan ini di smb.conf lokal saya dan setelah
mem