Mật khẩu lỗi: chsh: PAM: Lỗi xác thực khi thử cài đặt Oh my zsh


11

Tôi cố gắng cài đặt Oh my zsh. Sau khi cài đặt zsh ( sudo apt-get update && sudo apt-get install -y zsh)

Sau đó tôi cài đặt

sudo apt-get install -y curl  

sau đó cài đặt git.

các vấn đề xảy ra khi tôi thử lệnh này.

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

đây là nhật ký

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

Có ý kiến ​​gì không?

Lưu ý, tôi đã thử

sudo vim /etc/pam.d/chsh  

sau đó bình luận auth yêu cầu pam_shells.so. Tuy nhiên, lỗi vẫn xảy ra.

Câu trả lời:


16

Tải xuống và chạy tập lệnh riêng biệt:

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

Và bạn có lẽ nên hoàn tác các thay đổi /etc/pam.d/chsh.

Giải trình:

Đường ống văn bản của một kịch bản để bash

cat script.sh | bash

không giống như đưa ra một kịch bản làm tham số cho bash

bash script.sh

Bằng cách đường ống install.shđến bash, bash lấy đầu vào tiêu chuẩn ( stdin ) từ đường ống chứ không phải người dùng. Trong trường hợp này chshdường như cũng nhận được đầu vào từ stdin , đây là dòng tiếp theo trong tập lệnh sau lệnh gọi đến chsh. (Hiện tại nó có vẻ là một dòng trống. Nếu đó là mật khẩu của bạn, bạn sẽ không gặp vấn đề gì ;-))

Bạn có thể kiểm tra điều này với tập lệnh ngắn này, trong đó readmong đợi một dòng đầu vào:

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

lưu dưới dạng script.sh:

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

2
Chẩn đoán tuyệt vời. Tôi đã gặp vấn đề tương tự trên Debian và bản sửa lỗi của bạn hoạt động với tôi. Có một vài vấn đề mở trong dự án oh-my-zsh cho việc này ( github.com/robbyrussell/oh-my-zsh/issues35316 ) vì vậy hy vọng điều này cũng sẽ được sửa chữa ngược dòng. BTW, nit nit nhỏ: curlin tệp ra thiết bị xuất chuẩn thay vì viết tệp như wget; bạn cần một curl -L ... > install.shchuyển hướng ở cuối lệnh.
Andrew Janke

@AndrewJanke Cảm ơn vì nitlog nhỏ (không phải vậy). Nó được sửa chữa ngay bây giờ.
Adaephon
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.