Linux: ทั้ง chsh และ ypchsh ไม่ทำงานฉันสามารถเปลี่ยนเชลล์ได้ไหม?


8

ฉันเป็นยูนิกซ์โรงเรียนเก่าดังนั้นทักษะลินุกซ์ของฉันอาจจะล้าสมัยเล็กน้อย แต่ดูเหมือนว่ามันควรจะง่ายพอ

บนระบบ Red Hat Linux ที่ฉันไม่ได้รูท (เป็นผู้ดูแลโดยแผนก IT ของ บริษัท ) ฉันต้องการเปลี่ยนเชลล์ล็อกอินของฉัน วิ่ง chsh ให้ฉัน:

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

ดังนั้นฉันวิ่ง ypchsh แทน:

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

สิ่งที่ช่วยให้? ใครมีแนวคิดอื่นบ้าง


3
คุณใช้ NIS จริงๆหรือ หรือมันเป็นสิ่งที่ต้องการ LDAP?
Ignacio Vazquez-Abrams

ฉันค่อนข้างแน่ใจว่าเครือข่ายของเราใช้ LDAP เนื่องจาก NIS ค่อนข้างเก่าในตอนนี้
Ogre Psalm33

คำตอบ:


8
  • NIS: ypchsh

  • LDAP:

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

    ( YOUR_DNอาจอยู่ในรูปแบบuid=$USER,ou=people,dc=example,dc=orgลองldapwhoamiดู)

  • เฮเซียด:ถามผู้ดูแลระบบ

  • Active Directory : ถามผู้ดูแลระบบ


เพื่อนร่วมงานบอกฉันว่าพวกเขาคิดว่ามันเป็น LDAP แต่ ldapwhoami ให้ "ldap_sasl_interactive_bind_s: วิธีการรับรองความถูกต้องที่ไม่รู้จัก (-6) ข้อมูลเพิ่มเติม: SASL (-4): ไม่มีกลไก:" ดังนั้นฉันจึงคาดเดา Active Directory ได้ในตอนนี้ ฉันจะต้องถามมัน
Ogre Psalm33

@Ogre: ตรวจสอบ /etc/nsswitch.conf (บรรทัด 'passwd') เพื่อให้แน่ใจ
user1686

5

ฉันใช้วิธีแก้ปัญหาเดียวเพื่อเปลี่ยนเชลล์เมื่อเข้าสู่ระบบ ฉันเพิ่งใส่bashซึ่งใช้ในการเปลี่ยนเปลือกใน.profileไฟล์ของฉัน

คุณสามารถค้นหาได้.profileในไดเรกทอรีบ้านของผู้ใช้ - ใช้ls -laเพื่อดู

.profileไฟล์ของคุณอาจมีลักษณะดังนี้:

PATH=/usr/bin
export PATH
#Add this to go bash at login
bash
#end

7
นี่เป็นวิธีแก้ปัญหาที่เป็นธรรม แม้ว่าจะง่ายกว่าที่จะมีเพียง / usr / bin / bash ในบรรทัดเดียว มันอาจจะดีกว่าที่จะ 'exec' เชลล์ใหม่ซึ่งจะเป็นการแทนที่กระบวนการปัจจุบัน
Peter Jenkins

ฉันทำเช่นเดียวกันกับ.shellrc(เปลี่ยนเป็นชื่อไฟล์ที่ถูกต้อง) แต่ฉันยังประกาศตัวแปรสภาพแวดล้อมมาก่อนและexec bashหากไม่ได้ตั้งค่าไว้เพื่ออนุญาตให้ดำเนินการเชลล์ด้วยตนเองและเพื่อป้องกันลูปที่โชคร้าย โปรดทราบว่าคุณไม่จำเป็นต้องใช้เชลล์ภาษาเฉพาะเนื่องจากคุณสามารถเรียกใช้สคริปต์ด้วย shebang ที่ถูกต้องเพื่อดำเนินการเหล่านี้
MayeulC

4

ดังนั้นคำตอบที่แท้จริงในกรณีของฉันคือผู้ดูแลระบบ (IT) ต้องการล็อคการกำหนดค่ามาตรฐานดังนั้นคุณต้องถามพวกเขา แต่ในกระบวนการฉันค้นพบคำสั่งที่เป็นประโยชน์เพิ่มเติมสำหรับการหาการกำหนดค่า LDAP ของคุณ (ถ้านั่นเป็นวิธีที่คุณกำหนดค่า) ในกรณีที่ระบบของคุณรายงานข้อผิดพลาด SASL เดียวกัน "ldap_sasl_interactive_bind_s: ข้อมูลเพิ่มเติมที่ไม่รู้จัก (-6) : SASL (-4): ไม่มีกลไก: "

แสดงรายการวิธีการพิสูจน์ตัวตนแบบ SASL ที่ระบบของคุณรองรับ:

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

ผลลัพธ์อาจเป็นดังนี้:

dn:
supportedSASLMechanisms: EXTERNAL
supportedSASLMechanisms: DIGEST-MD5

จากนั้นคุณสามารถส่งวิธีการตรวจสอบสิทธิ์ไปยังคำสั่ง LDAP โดยใช้ตัวเลือก -Y ดังนี้:

ldappasswd -Y DIGEST-MD5
ldapmodify -Y DIGEST-MD5

4

อีกวิธีหนึ่งคือการแทนที่ YP เชลล์ของคุณ:

เพิ่มบรรทัดนี้ใน/etc/passwd:

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

ตัวอย่าง:

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

และเพิ่มสิ่งต่อไปนี้ในของคุณ/etc/nsswitch.conf:

passwd: compat

passwd_compat: nis

ตามที่ระบุไว้ฉันไม่มีรูทในระบบของฉัน (ดังนั้นไฟล์ใน / etc จะไม่ถูก จำกัด สำหรับการแก้ไข) แต่คำตอบนี้อาจช่วยคนอื่นในเรื่องที่คล้ายกัน
Ogre Psalm33

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.