ผู้ใช้ไม่มีอยู่ใน / etc / passwd เมื่อพยายามเปลี่ยนเชลล์เริ่มต้น


22

ฉันต้องการเปลี่ยนเชลล์เริ่มต้นจาก tcsh เป็น bash ดังนั้นฉันจึงลองและนี่คือสิ่งที่เกิดขึ้น:

>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

แน่นอนฉันไม่ได้อยู่ใน / etc / passwd ฉันไม่รู้ว่าทำไม

ฉันจะทำอย่างไร


11
ระบบของคุณใช้การพิสูจน์ตัวตนแบบกระจาย (เช่น kerberos / winbind) หรือไม่ ในกรณีดังกล่าวรายละเอียดผู้ใช้ของคุณจะไม่ปรากฏในไฟล์ / etc / passwd ในเครื่อง (แต่ควรมองเห็นได้โดยใช้getent passwd <userid>) ฉันคิดว่าchshการรองรับการทำงานในกรณีนั้นอาจขึ้นอยู่กับการตั้งค่าใน/etc/pam.d/
steeldriver

คำตอบ:


15

คอมพิวเตอร์ของฉันเป็นส่วนหนึ่งของเครือข่ายที่ใช้การรับรองความถูกต้องแบบกระจายดังนั้นรายละเอียดผู้ใช้ของฉันจะไม่ปรากฏในไฟล์ / etc / passwd ในเครื่อง (แต่สามารถมองเห็นได้โดยใช้ getent passwd userid) (ขอบคุณ @steeldriver) ในกรณีของฉันฉันต้องทำ chsh บนเครื่องหลัก


11
คุณอธิบายได้ไหมว่า "เครื่องแกน" คืออะไร?
Nerrve

ในกรณีของฉันฉันหมายถึงชุดอุปกรณ์เฉพาะที่มหาวิทยาลัยจัดไว้ให้ภายในเครือข่ายของพวกเขาที่นักเรียนสามารถเข้าสู่ระบบและใช้งาน (แชร์) ตรงข้ามกับเครื่องของฉันในออฟฟิศ
rmp251

4
@ rmp251 นี่คือสถานการณ์จริงของฉัน ฉันไม่สามารถเข้าถึงเครื่องแกนได้ คุณหาวิธีเปลี่ยนเปลือกเป็นอย่างอื่นหรือไม่?
Geek

@Geek คุณหาวิธีการแก้ปัญหาหรือไม่
milushov

13

มีวิธีแก้ปัญหาสำหรับgnome-terminal:

  1. ไปที่แก้ไข -> การตั้งค่าโปรไฟล์ -> ชื่อและคำสั่ง
  2. ทำเครื่องหมายเรียกใช้คำสั่งที่กำหนดเองแทนเชลล์ของฉัน
  3. ให้bashเป็นคำสั่งที่กำหนดเอง ( fishหรืออะไรก็ได้)

ขอบคุณ! จัดหาคำสั่งให้ทำงานทันทีเมื่อฉันเปิดเครื่อง (หรือแท็บเครื่องใหม่) ผ่านการตั้งค่าที่ใช้งานได้สำหรับฉัน
cacoder

สิ่งนี้ใช้ได้กับ Konsole และ yakuake ใน KDE ด้วย
xgdgsc

6

หากคุณใช้การรับรองความถูกต้องของ LDAP โดย PAM หรือบางอย่างคุณจะต้องค้นหาคำตอบในเซิร์ฟเวอร์ LDAP ของคุณ ขอมุ่งมันสำหรับ Microsoft AD ซึ่งในกรณีบัญชีโดเมนของคุณไม่ได้อยู่ใน/etc/passwdเมื่อคุณเข้าสู่ระบบ getent passwd | grep userแต่คุณสามารถดูสถานที่ให้บริการผู้ใช้ของคุณในการโฆษณาโดย

หากในตอนท้ายมันแสดงให้เห็นว่าเปลือกของคุณอยู่/bin/cshนั่นเป็นเพราะในโฆษณาของคุณมีคุณสมบัติสำหรับสิ่งนั้น ดังนั้นหากคุณมีบัญชีผู้ดูแลระบบใน AD คุณสามารถแก้ไขได้ด้วยตนเอง มิฉะนั้นเพียงแค่บอกผู้ดูแลระบบโฆษณาของคุณจะเปิดใช้งานคุณสมบัติล่วงหน้าในดูแท็บของผู้ใช้และคอมพิวเตอร์ Active Directory> คุณสมบัติผู้ใช้> แอตทริบิวต์ยูนิกซ์ /bin/bashมีคุณสามารถเปลี่ยนเปลือกเข้าสู่ระบบเพื่อ

ต้องแน่ใจว่าคุณอย่าลืมเรียกใช้:

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

แหล่งที่มา: ผู้ใช้ไม่ได้อยู่ใน / etc / passwd เมื่อพยายามที่จะเปลี่ยนเปลือกเริ่มต้น


1
คำถามคือการเปลี่ยนเชลล์สำหรับผู้ใช้หนึ่งคนในขณะที่ pbis config เปลี่ยนแปลงสำหรับผู้ใช้ทั้งหมด
kubanczyk

5

หากคุณต้องการเปลี่ยนเชลล์สำหรับผู้ใช้ของคุณคุณไม่จำเป็นต้องกลายเป็นรูท เพียงพิมพ์:

chsh

ไม่มีsudoและไม่มีข้อโต้แย้ง


ดูเพิ่มเติมที่man chsh:

คำสั่ง chsh เปลี่ยนเชลล์ล็อกอินของผู้ใช้ สิ่งนี้กำหนดชื่อ
ของคำสั่งเริ่มต้นเข้าสู่ระบบของผู้ใช้ ผู้ใช้ปกติสามารถเปลี่ยนแปลง
เปลือกเข้าสู่ระบบสำหรับบัญชีของเธอเอง ; superuser อาจเปลี่ยนการเข้าสู่ระบบ
เชลล์สำหรับบัญชีใด ๆ

เหตุผลที่ฉันใช้ sudo ก็เพราะมันไม่ได้ทำอะไรเลยถ้าไม่มีมัน > whoami userid > chsh You may not change the shell for 'userid'.
rmp251

เหตุผลที่ใช้งานได้คือ chsh ไม่ทำงานกับ kerberos
Lennart Rolland

2

หากคุณลืมชื่อผู้ใช้คุณสามารถใช้whoamiคำสั่งเพื่อจดจำคุณ

ลองด้วย:

sudo chsh $(whoami)

หากไม่มีเส้นที่เริ่มต้นด้วยชื่อผู้ใช้ของคุณใน/etc/passwdไฟล์ (ซึ่งดูเหมือนจะอธิบายไม่ได้) คุณสามารถเพิ่มใหม่เช่นนี้:

ชื่อผู้ใช้ : x: 1,000: 1000: ชื่อจริงของคุณ ,,,: / home / ชื่อผู้ใช้ : / bin / bash

ดูเพิ่มเติม: ความเข้าใจ / etc / passwd รูปแบบไฟล์


1
เหตุผลหนึ่งที่ผู้ใช้ของคุณอาจไม่มีอยู่ใน / etc / passwd คือหากการตรวจสอบไม่ได้รับการจัดการบนเครื่องนั้น (เช่น ldap)
MatrixManAtYrService

1

หากคุณพยายามที่จะ ssh เป็นโฮสต์ระยะไกลกับผู้ใช้โดเมนคุณอาจไม่สามารถเปลี่ยนเชลล์ของคุณโดยใช้chsh@Masoud ที่กล่าวถึง แต่นี่เป็นวิธีแก้ปัญหาง่ายๆสำหรับกรณีนี้ - เมื่อใดก็ตามที่คุณเข้าสู่เครื่องให้ทำดังนี้

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

หรือ

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

หากคุณต้องการที่จะเข้าสู่ระบบโดยตรงในการทำงานที่แตกต่างกัน

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