รหัสผ่านข้อผิดพลาด: chsh: PAM: การตรวจสอบล้มเหลวเมื่อพยายามติดตั้ง Oh my zsh


11

ฉันพยายามติดตั้ง Oh my zsh หลังจากติดตั้ง zsh ( sudo apt-get update && sudo apt-get install -y zsh)

จากนั้นฉันติดตั้ง

sudo apt-get install -y curl  

จากนั้นติดตั้งคอมไพล์

ปัญหาเกิดขึ้นเมื่อฉันลองคำสั่งนี้

curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | bash

นี่คือบันทึก

sudo curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   146  100   146    0     0     91      0  0:00:01  0:00:01 --:--:--    91
100  1779  100  1779    0     0    525      0  0:00:03  0:00:03 --:--:--  1416
\033[0;34mCloning Oh My Zsh...\033[0m
Cloning into '/home/icom3/.oh-my-zsh'...
remote: Reusing existing pack: 10101, done.
remote: Total 10101 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (10101/10101), 1.92 MiB | 172.00 KiB/s, done.
Resolving deltas: 100% (5337/5337), done.
Checking connectivity... done.
\033[0;34mLooking for an existing zsh config...\033[0m
\033[0;33mFound ~/.zshrc.\033[0m \033[0;32mBacking up to ~/.zshrc.pre-oh-my-zsh\033[0m
\033[0;34mUsing the Oh My Zsh template file and adding it to ~/.zshrc\033[0m
\033[0;34mCopying your current PATH and adding it to the end of ~/.zshrc for you.\033[0m
\033[0;34mTime to change your default shell to zsh!\033[0m
Password: chsh: PAM: Authentication failure

มีความคิดอะไรบ้าง?

โปรดทราบว่าฉันได้ลอง

sudo vim /etc/pam.d/chsh  

จากนั้นคอมเม้นท์ต้องใช้ pam_shells.so อย่างไรก็ตามข้อผิดพลาดยังคงเกิดขึ้น

คำตอบ:


16

ดาวน์โหลดและเรียกใช้สคริปต์แยกจากกัน:

curl -OL https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh
bash install.sh

/etc/pam.d/chshและคุณอาจจะยกเลิกการเปลี่ยนแปลงไป

คำอธิบาย:

ไปป์ข้อความของสคริปต์ไปที่ bash

cat script.sh | bash

ไม่เหมือนกับการให้สคริปต์เป็นพารามิเตอร์ bash

bash script.sh

โดยการไพพ์install.shถึงbash, bash นำอินพุตมาตรฐาน ( stdin ) จากไพพ์มากกว่าผู้ใช้ ในกรณีนี้chshยังดูเหมือนว่าจะได้รับการป้อนข้อมูลจากstdinchshซึ่งเป็นบรรทัดถัดไปในสคริปต์หลังจากการเรียกร้องให้ (ในขณะนี้ดูเหมือนว่าจะเป็นบรรทัดว่างหากเป็นรหัสผ่านของคุณคุณจะไม่มีปัญหาใด ๆ ;-))

คุณสามารถทดสอบสิ่งนี้ด้วยสคริปต์สั้น ๆ นี้ซึ่งต้องการreadอินพุตหนึ่งบรรทัด:

read -p 'input: ' INPUT
echo -n 'You wrote this: '
echo "> $INPUT <"

บันทึกเป็นscript.sh:

$ bash script.sh
input: foobar
You wrote this: > foobar <
$ cat script.sh | bash
> echo -n 'You wrote this: ' <

2
การวินิจฉัยที่ดี ฉันกำลังทำงานในปัญหาเดียวกันบน Debian และการแก้ไขของคุณใช้งานได้สำหรับฉัน มีปัญหาเปิดสองสามในโครงการ oh-my-zsh สำหรับเรื่องนี้ ( github.com/robbyrussell/oh-my-zsh/issues/3516 ) ดังนั้นหวังว่าสิ่งนี้จะได้รับการแก้ไขต้นน้ำด้วย BTW, nitpick เล็กน้อย: curlพิมพ์ไฟล์ไปยัง stdout แทนการเขียนไฟล์เช่นwget; คุณต้องcurl -L ... > install.shเปลี่ยนเส้นทางในตอนท้ายของคำสั่ง
Andrew Janke

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