người dùng không tồn tại trong / etc / passwd khi cố gắng thay đổi shell mặc định


22

Tôi muốn thay đổi shell mặc định của mình từ tcsh sang bash. Vì vậy, tôi đã cố gắng và đây là những gì đã xảy ra:

>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

Thật vậy, tôi không ở / etc / passwd. Tôi không biết tại sao.

Tôi có thể làm gì?


11
Hệ thống của bạn có sử dụng xác thực phân tán (ví dụ: kerberos / winbind) không? Trong trường hợp đó, chi tiết người dùng của bạn sẽ không xuất hiện trong tệp local / etc / passwd (nhưng sẽ hiển thị bằng cách sử dụng getent passwd <userid>). Tôi nghĩ rằng việc chạy chshcó được hỗ trợ trong trường hợp đó hay không có thể phụ thuộc vào cài đặt trong/etc/pam.d/
Steeldo

Câu trả lời:


15

Máy tính của tôi là một phần của mạng sử dụng xác thực phân tán để chi tiết người dùng của tôi sẽ không xuất hiện trong tệp cục bộ / etc / passwd (nhưng có thể nhìn thấy bằng cách sử dụng getw passwd userid). (cảm ơn @steel ấn) Trong trường hợp của tôi, tôi đã phải làm chsh trên một máy lõi.


11
bạn có thể giải thích "máy lõi" là gì không?
Giới thiệu

Trong trường hợp của tôi, tôi đang đề cập đến một bộ máy chuyên dụng được cung cấp bởi trường đại học trong mạng của họ mà sinh viên có thể đăng nhập và sử dụng (chia sẻ). Trái ngược với máy của riêng tôi trong văn phòng của tôi.
rmp251

4
@ rmp251 Đây chính xác là kịch bản của tôi. Tôi không có quyền truy cập vào máy lõi. Bạn đã tìm thấy một cách để thay đổi vỏ khác?
Geek

@Geek bạn đã tìm ra cách giải quyết chưa?
milushov

13

Có một cách giải quyết cho gnome-terminal:

  1. Chuyển đến Chỉnh sửa -> Tùy chọn hồ sơ -> Tiêu đề và Lệnh
  2. Kiểm tra Chạy một lệnh tùy chỉnh thay vì shell của tôi
  3. Cung cấp bashdưới dạng lệnh Tùy chỉnh (hoặc fish, hoặc bất cứ điều gì)

Cảm ơn! Cung cấp một lệnh để chạy ngay lập tức khi tôi mở thiết bị đầu cuối của mình (hoặc tab thiết bị đầu cuối mới) thông qua các cài đặt làm việc cho tôi.
cacoder

Điều này cũng hoạt động cho Konsole và yakuake trong KDE.
xgdgsc

6

Nếu bạn đang sử dụng xác thực LDAP bằng PAM hoặc một cái gì đó, bạn phải tìm câu trả lời của mình trong Máy chủ LDAP. Hãy nhắm đến Microsoft AD, trong trường hợp tài khoản miền của bạn không /etc/passwdđăng nhập khi bạn đăng nhập, nhưng bạn có thể thấy tài sản người dùng của mình trong AD, bởi getent passwd | grep user.

Nếu ở cuối, nó cho thấy vỏ của bạn là /bin/csh, bởi vì trong AD của bạn có một thuộc tính cho điều đó. Vì vậy, nếu bạn có tài khoản quản trị viên trên AD, bạn có thể tự sửa nó. Mặt khác, chỉ cần báo cho quản trị viên AD của bạn kích hoạt các tính năng nâng cao trong tab Xem của người dùng và máy tính thư mục hoạt động> Thuộc tính người dùng> Thuộc tính UNIX . Ở đó bạn có thể thay đổi vỏ đăng nhập thành /bin/bash.

Hãy chắc chắn rằng bạn không quên chạy:

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

Nguồn: Người dùng không tồn tại trong / etc / passwd khi cố gắng thay đổi shell mặc định .


1
Câu hỏi là thay đổi shell cho một người dùng, trong khi pbis config thay đổi cho tất cả người dùng.
kubanchot

5

Nếu bạn muốn thay đổi trình bao cho người dùng của mình, bạn không cần phải trở thành root. Chỉ loại:

chsh

không có sudovà không có tranh luận.


Xem thêm man chsh:

Lệnh chsh thay đổi vỏ đăng nhập người dùng. Điều này xác định tên
của lệnh đăng nhập ban đầu của người dùng. Một người dùng bình thường chỉ có thể thay đổi
đăng nhập shell cho tài khoản của mình ; superuser có thể thay đổi đăng nhập
shell cho bất kỳ tài khoản.

Lý do tôi sử dụng sudo là vì nó không làm gì nếu không có nó. > whoami userid > chsh You may not change the shell for 'userid'.
rmp251

Lý do nó hoạt động là chsh không hoạt động với kerberos
Lennart Rolland

2

Nếu bạn quên tên người dùng, bạn có thể sử dụng whoamilệnh để nhớ bạn.

Vì vậy, hãy thử với:

sudo chsh $(whoami)

Nếu thực sự, không tồn tại một dòng bắt đầu bằng tên người dùng của bạn trong /etc/passwdtệp (dường như không thể giải thích được), bạn có thể thêm một dòng mới như thế này:

tên người dùng : x: 1000: 1000: tên thật của bạn ,,,: / home / tên người dùng : / bin / bash

Xem thêm: Hiểu / etc / passwd Định dạng tệp .


1
Một lý do khiến người dùng của bạn có thể không tồn tại trong / etc / passwd là nếu xác thực không được xử lý trên máy đó (ví dụ: ldap)
MatrixManAtYrService

1

Nếu bạn đang cố gắng ssh vào một máy chủ từ xa với một người dùng tên miền, bạn có thể không thể thay đổi trình bao của mình bằng cách sử dụng chshnhư @Masoud đã đề cập. Nhưng đây là một cách giải quyết đơn giản cho trường hợp này - bất cứ khi nào bạn ssh vào máy, hãy làm điều này:

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

hoặc là

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

Nếu bạn cũng muốn đăng nhập trực tiếp vào một thư mục làm việc khác.

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.