Linux: baik chsh maupun ypchsh tidak berfungsi, bisakah saya mengganti shell saya?

8

Saya seorang pria Unix jadul, jadi kemampuan Linux saya mungkin sedikit ketinggalan zaman. Tapi ini sepertinya cukup sederhana.

Pada sistem Red Hat Linux di mana saya tidak memiliki root (dikelola oleh departemen IT perusahaan), saya ingin dapat mengubah shell login saya. Menjalankan chsh memberi saya:

$ chsh -s /bin/bash
chsh: can only change local entries; use ypchsh instead.

Jadi, saya malah menjalankan ypchsh:

$ ypchsh userid
ypchsh: can't find the master ypserver: Internal NIS error

Apa yang menyebabkannya? Adakah yang punya ide lain?

Ogre Psalm33
sumber
3
Apakah Anda benar - benar menggunakan NIS? Atau apakah ini seperti LDAP?
Ignacio Vazquez-Abrams
Saya cukup yakin jaringan kami menggunakan LDAP, karena NIS sudah cukup kuno pada saat ini.
Ogre Psalm33

Jawaban:

8
  • NIS: ypchsh

  • LDAP:

    $ ldapmodify <<EOF
    dn: YOUR_DN
    changetype: modify
    replace: loginShell
    loginShell: /bin/bash
    -
    EOF
    

    ( YOUR_DN mungkin ada dalam formulir uid=$USER,ou=people,dc=example,dc=org; coba ldapwhoamilihat)

  • Hesiod: Tanyakan administrator sistem.

  • Direktori Aktif : Tanyakan administrator sistem.

pengguna1686
sumber
Seorang rekan kerja mengatakan kepada saya bahwa mereka mengira itu LDAP, tetapi ldapwhoami memberikan "ldap_sasl_interactive_bind_s: Metode otentikasi tidak diketahui (-6) info tambahan: SASL (-4): tidak ada mekanisme yang tersedia:", jadi saya menduga Active Directory pada saat ini. Saya harus bertanya pada IT.
Ogre Psalm33
@ Ogre: Centang /etc/nsswitch.conf (baris 'passwd') untuk memastikan.
user1686
5

Saya telah menggunakan satu solusi untuk mengubah shell saya saat login. Saya baru saja meletakkan bashyang digunakan untuk mengubah shell di .profilefile saya .

Anda dapat menemukannya .profiledi direktori home pengguna - gunakan ls -launtuk melihatnya.

.profileFile Anda mungkin memiliki sesuatu seperti ini:

PATH=/usr/bin
export PATH
#Add this to go bash at login
bash
#end
Kishor Raskar
sumber
7
Ini adalah solusi yang adil. Meskipun, akan lebih mudah untuk hanya memiliki / usr / bin / bash pada satu baris. Mungkin juga lebih baik untuk 'mengeksekusi' shell baru sehingga menggantikan proses saat ini.
Peter Jenkins
Saya melakukan hal yang sama dengan .shellrc(diubah ke nama file yang benar), tetapi saya juga mendeklarasikan variabel lingkungan sebelumnya, dan exec bashhanya jika tidak disetel, untuk memungkinkan secara manual mengeksekusi shell, dan untuk mencegah loop malang. Perhatikan bahwa Anda tidak harus menggunakan dialek shell tertentu, karena Anda bisa menggunakan skrip dengan shebang kanan untuk melakukan operasi ini.
MayeulC
4

Jadi jawaban sebenarnya dalam kasus saya adalah bahwa admin sistem (TI) ingin mengunci konfigurasi standar, jadi Anda harus bertanya kepada mereka. Tetapi dalam proses saya menemukan beberapa perintah yang lebih membantu untuk mencari tahu konfigurasi LDAP Anda (jika itu adalah bagaimana Anda dikonfigurasi), kalau-kalau sistem Anda melaporkan kesalahan SASL yang sama "ldap_sasl_interactive_bind_s: Metode otentikasi tidak dikenal (-6) info tambahan : SASL (-4): tidak ada mekanisme yang tersedia: "

Daftar metode otentikasi SASL yang didukung sistem Anda:

 ldapsearch -x -LLL -s "base" -b "" supportedSASLMechanisms

Hasilnya mungkin seperti:

dn:
supportedSASLMechanisms: EXTERNAL
supportedSASLMechanisms: DIGEST-MD5

Anda kemudian dapat meneruskan metode otentikasi ke perintah LDAP menggunakan opsi -Y seperti:

ldappasswd -Y DIGEST-MD5
ldapmodify -Y DIGEST-MD5
Ogre Psalm33
sumber
4

Solusi lain adalah dengan cukup menimpa shell YP Anda:

Tambahkan baris ini ke /etc/passwd:

+<USERNAME>::::::/bin/bash

Contoh:

+psalm33::::::/bin/bash

Dan tambahkan yang berikut ke Anda /etc/nsswitch.conf:

passwd: compat

passwd_compat: nis
Hooman
sumber
Seperti yang saya nyatakan, saya tidak memiliki root pada sistem saya (jadi file di / etc terlarang untuk diedit). Tapi, jawaban ini mungkin bisa membantu orang lain dengan masalah serupa.
Ogre Psalm33
0

Cara lain untuk melihat kredensial untuk jawaban teratas adalah ldapsearch -x

ldapsearch -x uid=$(whoami)
serv-inc
sumber